Olá Pessoal, sei q voces ja devem ter recebido centenas de pedidos sobre isso, mas sou mais um que naum estou conseguindo:
Estou realizando um projeto de jogo da velha, meu codigo esta me tirando do serio, gostaria de saber se voces poderiam me dizer o q devo fzr para melhorar e conseguir terminar esse meu codigo, ele não esta dando erro, mas tabm naum me da o resultado que quero!!!:
packageJogoDaVelhaConsole;importjava.util.Scanner;/** * * @author Ronald */publicclassJogo{intarmazenagemJog[][]=newint[3][3];//matriz que armazena os valores randomicos do Jogadorpublicstaticvoidmain(Stringargumentos[]){newJogo().Imprimir();//Imprime as posições//new Jogo().PreencheJog();//Preenche com o computador AleatoriamentenewJogo().selecionaJogada();//Preenche com o jogador que seleciona a posição que quer preenchernewJogo().ImprimirPreenchido();//Imprime as posições Corretas e preenchidas}publicvoidImprimir()//Imprime Toda{for(intj=0;j<3;j++){for(intk=0;k<3;k++){System.out.print("|"+j+k);}System.out.println();}System.out.println();}publicvoidImprimirPreenchido()//Imprime os valores da matriz{for(intj=0;j<3;j++){for(intk=0;k<3;k++){System.out.print("|"+armazenagemJog[j][k]);}System.out.println();}}publicvoidPreencheJog(){intescolhaJogada=0+(int)(Math.random()*8);//Recebe um valor aleatoriofor(intk=0;k<3;k++){for(intj=0;j<3;j++){if(armazenagemJog[k][j]==escolhaJogada/*&& armazenagemComp[k][j] != Integer.parseInt(null) && armazenagemComp[k][j] != Integer.parseInt("X")*/){armazenagemJog[k][j]=2;//A posiçaõ que estiver recebe 0}}}}publicvoidselecionaJogada()//Jogador Seleciona Posicao que quer Jogar{System.out.println("Escolha uma das posições da matriz: 00, 01, 02, 10, 11, 12, 20, 21, 22");Scanners=newScanner(System.in);intvalorDaVez=s.nextInt();for(intk=0;k<3;k++){for(intj=0;j<3;j++){if(armazenagemJog[k][j]==valorDaVez/*&& armazenagemComp[k][j] != Integer.parseInt(null) && armazenagemComp[k][j] != Integer.parseInt("X")*/){armazenagemJog[k][j]=Integer.parseInt("X");//A posiçaõ que estiver recebe 0}}}}}
vc está tentando converter “X” para um tipo int ???
Ronald_lima
Pois eh, acho q devo ter feito caca no codigo todo!!rsrsr
eu queeria na realidade inserir o valor x na posição que o jogador tiver selecionado, e o mesmo com o computador, a posiçaõ que foi gerada randomicamente, eu queria inserir 0…
por favor me ajude!!!
robsonsm
este codigo tem varios problemas… outra coisa é q vc nao pode chamar os metodos criando sempre uma nova instancia dessa forma:
new Jogo().Imprimir();
new Jogo().selecionaJogada();
new Jogo().ImprimirPreenchido();
o correto seria assim:
Jogo jogo = new Jogo();
jogo.Imprimir();
jogo.selecionaJogada();
jogo.ImprimirPreenchido();
robsonsm
se vai misturar “X” e “O” na matriz, é melhor que ela seja uma matriz de String
StringarmazenagemJog[][]=newString[3][3];
Ronald_lima
Entendi, mas eu posso correr as posições com um int no for do msm jeito???
robsonsm
sim
robsonsm
no metodo imprimir é melhor inicializar os valores da matriz tbm ao inves de so exibir:
public void Imprimir()// Imprime Toda
{
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
armazenagemJog[k][j] = ""+k + j;
System.out.print("|" + j + k);
}
System.out.println();
}
System.out.println();
}
no metodo selecionaJogada vc pode receber uma string tbm
public void selecionaJogada() {
System.out
.println("Escolha uma das posições da matriz: 00, 01, 02, 10, 11, 12, 20, 21, 22");
Scanner s = new Scanner(System.in);
String valorDaVez = s.next();
for (int k = 0; k < 3; k++) {
for (int j = 0; j < 3; j++) {
if (armazenagemJog[k][j].equals(valorDaVez)
&& !"X".equals(armazenagemJog[k][j])
&& !"O".equals(armazenagemJog[k][j]))
armazenagemJog[k][j] = "X";
}
}
}
Ronald_lima
o q significa !“0” ???
Diferente de zero???
obrigado novamente
andredemelo
Sim Ronald_lima,
o !“0” quer dizer diferente de 0.
robsonsm
Ronald_lima:
o q significa !“0” ???
Diferente de zero???
obrigado novamente
na verdade é um “O” (vogal)
achei que o computador iria jogar um “O” (vogal) em contra partida ao “X”
robsonsm
Vc teria que fazer com q o jogodor fique jogando ate acabar as posicoes da matriz.
O método PreencheJog() vc esta gerando um numero aleatorio de 0 a 8, acho q deveria ser um numero correspondente aos numeros da matriz, ou seja: 00,01,02,10,11,12,20,21,22
Teria q ter tbm um método para saber se alguem ganhou.
Ronald_lima
Ok obrigado, estouseguindo suas dicas, foram de muita valia…vlw msm
Ronald_lima
Olá Pessoal, consegui fazer algumas mudanças em meu codigo, porem ainda estou com erro na hora que o computador seleciona um valor random, pq ele nunca entra no if(acho que é porque ele verifica o numero random, ex: 0, com a posição que é 00, entao ele nunca entra, sera que voces poderiam me ajudar nesse ponto do numero randim? seegue codigo
packageJogoDaVelha;importjava.util.Scanner;/** * @author Ronald */publicclassJogo{StringarmazenagemJog[][]=newString[3][3];//matriz que armazena os valores randomicos do Jogadorpublicstaticvoidmain(Stringargumentos[]){Jogojo=newJogo();jo.Inicializar();jo.ProximaJogada();}publicvoidInicializar()//Inicializa a matriz{for(intj=0;j<3;j++){for(intk=0;k<3;k++){armazenagemJog[j][k]=""+j+k;}}}publicvoidImprimirPreenchido()//Imprime os valores da matriz{for(intj=0;j<3;j++){for(intk=0;k<3;k++){System.out.print("|"+armazenagemJog[j][k]);}System.out.println();}System.out.print("\n");}publicvoidPreencheJogComputador()//Jogada do computador{StringescolhaJogada=String.valueOf(0+(int)(Math.random()*8));//Recebe um valor aleatoriofor(intj=0;j<3;j++){for(intk=0;k<3;k++){if(armazenagemJog[j][k].equals(escolhaJogada)&&!"O".equals(armazenagemJog[j][k])&&!"X".equals(armazenagemJog[j][k])){armazenagemJog[j][k]="O";//A posiçaõ que estiver recebe 2//ImprimirPreenchido();//ProximaJogada();}}}}publicvoidselecionaJogadaJogador()//Jogador Seleciona Posicao que quer Jogar{System.out.println("Escolha uma das posições da matriz: 00, 01, 02, 10, 11, 12, 20, 21, 22");System.out.println("Com Exceção das posições já marcadas");Scanners=newScanner(System.in);StringvalorDaVez=s.next();for(intj=0;j<3;j++){for(intk=0;k<3;k++){if(armazenagemJog[j][k].equals(valorDaVez)&&!"X".equals(armazenagemJog[j][k])&&!"O".equals(armazenagemJog[j][k])){armazenagemJog[j][k]="X";//A posiçaõ que estiver recebe X}}}}publicvoidProximaJogada(){for(inti=0;i<9;i++){ImprimirPreenchido();selecionaJogadaJogador();//Preenche com o jogador que seleciona a posição que quer preencherPreencheJogComputador();}}}
robsonsm
me parece q os numeros aleatorios q vc precisa gerar na verdade são as strings da matiz, ou seja 00,01,02,10,11,12,20,21,22
vou sugerir q coloque um metodo para gerar estes valores