Bem gente, estou fazendo um jogo da velha que você joga contra o pc… o problema é que não sei como fazer para o código percorrer a matriz para saber os os espaços que ainda não foram preenchidos para preencher como se voce a jogada do pc
se quiserem eu envio o código que já foi feito até agora
O que pretende ter como retorno? Os índices que ainda não foram preenchidos? Para verificar é simples, porém é necessário saber como está sendo preenchido seu array. Nos envie o código.
R
Rafael_Arcanjo
System.out.println("Digite o seu Nome: “);String jogador = sc.next();System.out.println(“Vamos começar”);int matriz[][] = new int[3][3];for (int l = 0; l < matriz.length; l++) {for (int c = 0; c < matriz[0].length; c++) {System.out.print(matriz[l][c] + "“);}System.out.println(”“);}System.out.println(””);
System.out.println("Vez do Jogador ");System.out.println("");intjogada=sc.nextInt();switch(jogada){case1:matriz[0][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case2:matriz[0][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case3:matriz[0][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case4:matriz[1][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case5:matriz[1][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case6:matriz[1][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case7:matriz[2][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case8:matriz[2][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case9:matriz[2][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;default:System.out.println("Digitou Errado!");}System.out.println("Vez do Jogador ");System.out.println("");jogada=sc.nextInt();switch(jogada){case1:matriz[0][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case2:matriz[0][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case3:matriz[0][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case4:matriz[1][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[1][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case5:matriz[1][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case6:matriz[1][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case7:matriz[2][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[2][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case8:matriz[2][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case9:matriz[2][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}System.out.println("Vez do PC");matriz[0][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;default:System.out.println("Digitou Errado!");}System.out.println("Vez do Jogador ");System.out.println("");jogada=sc.nextInt();switch(jogada){case1:matriz[0][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case2:matriz[0][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case3:matriz[0][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case4:matriz[1][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case5:matriz[1][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case6:matriz[1][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case7:matriz[2][0]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case8:matriz[2][1]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case9:matriz[2][2]=1;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;default:System.out.println("Digitou Errado!");}for(intf=0;f<3;f++){if(matriz[f][0]==1&matriz[f][1]==1&matriz[f][2]==1){System.out.println("Ganhouu o Jogador 1");System.exit(0);}}for(inth=0;h<3;h++){if(matriz[0][h]==1&matriz[1][h]==1&matriz[2][h]==1){System.out.println("Ganhouu o Jogador ");System.exit(0);}}if(matriz[0][0]==1&matriz[1][1]==1&matriz[2][2]==1){System.out.println("Ganhoou o Jogador ");System.exit(0);}if(matriz[2][0]==1&matriz[1][1]==1&matriz[0][2]==1){System.out.println("Ganhoou o Jogador ");System.exit(0);}switch(jogada){case1:System.out.println("Vez do PC");matriz[0][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case2:System.out.println("Vez do PC");matriz[0][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case3:System.out.println("Vez do PC");matriz[1][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case4:System.out.println("Vez do PC");matriz[1][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case5:System.out.println("Vez do PC");matriz[1][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case6:System.out.println("Vez do PC");matriz[2][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case7:System.out.println("Vez do PC");matriz[2][1]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case8:System.out.println("Vez do PC");matriz[2][2]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;case9:System.out.println("Vez do PC");matriz[0][0]=2;for(intl=0;l<matriz.length;l++){for(intc=0;c<matriz[0].length;c++){System.out.print(matriz[l][c]+" ");}System.out.println(" ");}break;default:System.out.println("Digitou Errado!");}
você pode ver que está bem extenso, pois estava fazendo assim mesmo, manualmente, porém chega uma hora que não da mais certo e precisa mesmo verificar a matriz, em relação a esses for eles servem para checar a matriz e encerrar o jogo, nesse ultimo swtich case ele é a parte que o pc joga porém não tem como funcionar pois os numeros podem se coincidirem com uma posição da matriz que já foi preenchida, por isso precisa verificar
Pôxa, você implementou todo o programa dentro do método main, isso não se faz, quebra ele em métodos menores.
Um exemplo:
importjava.io.PrintStream;importjava.util.Scanner;publicclassJogoVelha{privateclassComputadorextendsJogador{Computador(intpeca,Stringnome){super(peca,nome);}@Overridevoidjogar(){// Aqui você implementa a jogada automática do computador}}privateclassHumanoextendsJogador{Humano(intpeca,Stringnome){super(peca,nome);}voidjogar(){LOOP:while(true){escrever("Digite uma opção de 1 a 9");intposicaoDigitada=lerInt();intposicao=1;for(intl=0;l<tabuleiro.length;l++){for(intc=0;c<tabuleiro[0].length;c++){if(posicao==posicaoDigitada){if(tabuleiro[l][c]!=0){escrever("Posição já está preenchida!");continueLOOP;}tabuleiro[l][c]=peca;return;}posicao++;}}escrever("Posição inválida: "+posicaoDigitada);}}}privateabstractclassJogador{finalintpeca;finalStringnome;Jogador(intpeca,Stringnome){this.peca=peca;this.nome=nome;}abstractvoidjogar();}privatestaticfinalintCONTRA_PC=1;privatestaticfinalintCONTRA_AMIGO=2;publicstaticvoidmain(String[]args){JogoVelhaprograma=newJogoVelha();programa.executar();}privatefinalScannerentrada=newScanner(System.in);privatefinalPrintStreamsaida=System.out;privateinttabuleiro[][];privateJogadorjogador1;privateJogadorjogador2;privateintmodoDeJogo;publicvoidexecutar(){selecionarModoDeJogo();selecionarJogadores();iniciarPartida();}privatevoidapresentarTabuleiro(){for(intl=0;l<tabuleiro.length;l++){for(intc=0;c<tabuleiro[0].length;c++){saida.print(tabuleiro[l][c]+" ");}escrever(" ");}}privatevoidescrever(Stringmensagem){saida.println(mensagem);}privatevoidinicializarTabuleiro(){tabuleiro=newint[3][3];}privatevoidiniciarPartida(){inicializarTabuleiro();escrever("Vamos Começar...");JogadorjogadorAtual=jogador1;while(!jogoAcabou()){apresentarTabuleiro();escrever("");escrever("Vez do "+jogadorAtual.nome);jogadorAtual.jogar();jogadorAtual=trocarJogador(jogadorAtual);}}privatebooleanjogoAcabou(){// aqui vai a lógica pra ver se o jogo acabou// se acabou ou empatou, tem que retornar truereturnfalse;}privateintlerInt(){returnInteger.parseInt(entrada.nextLine());}privateStringlerString(){returnentrada.nextLine();}privatevoidselecionarJogadores(){escrever("Quem vai ser o jogador 1: ");Stringnome=lerString();jogador1=newHumano(1,nome);escrever("Quem vai ser o jogador 2: ");if(modoDeJogo==CONTRA_PC){if(nome.equalsIgnoreCase("Computador")){nome="Computador Real";// o usuário engraçadinho pos o nome de "computador"}else{nome="Computador";}jogador2=newComputador(2,nome);}elseif(modoDeJogo==CONTRA_AMIGO){nome=lerString();jogador2=newHumano(2,nome);}}privatevoidselecionarModoDeJogo(){escrever("Bem Vindo ao Jogo da Velha!");while(true){escrever("Selecione o modo de Jogo");escrever(CONTRA_PC+" - Contra o PC");escrever(CONTRA_AMIGO+" - Com Amigo");modoDeJogo=lerInt();switch(modoDeJogo){caseCONTRA_AMIGO:caseCONTRA_PC:return;default:escrever("Modo inválido: "+modoDeJogo);continue;}}}privateJogadortrocarJogador(Jogadorjogador){returnjogador==jogador1?jogador2:jogador1;}}