Olá Novamente pessoal, depois de algum tempo, finalmente estou chegando ao final de meu jogo da velha, porem ainda tem um pqueno problema, gostaria de saber se algum pode me ajudar:
Meu código preenche tudo certo o do jogador e do omputador,porém o do computador ele verifica se a posição ja foi preenchida e preenche outra, ja o jogador não consegue selecionar outra opção se acaso ele digitar a msm duas vzs, ele trava e fica assim o jogo, tentei mas naum consegui, sera q vcs poderiam me ajudar:???
package JogoDaVelhaConsole;
import java.util.Random;
import java.util.Scanner;
/**
* @author Ronald
*/
public class Jogo
{
String armazenagemJog[][] = new String[3][3];//matriz que armazena os valores randomicos do Jogador
public static void main(String argumentos[])
{
Jogo jo = new Jogo();//Novo Objeto dessa mesma classe
jo.Inicializar();//Inicializa a matrriz
jo.ProximaJogada();//Chama o método Proxima jogada, que faz as verificações
}
public void Inicializar()//Inicializa a matriz
{
for(int j = 0; j < 3; j ++)
{
for (int k = 0; k < 3; k ++)
{
armazenagemJog[j][k] = "" + j + k;//Concatenação da primeira com a segunda posição
}
}
}
public void ImprimirPreenchido()//Imprime os valores da matriz
{
for(int j = 0; j < 3; j ++)
{
System.out.print("\t\t\t\t\t");
for (int k = 0; k < 3; k ++)
{
System.out.print("|" + armazenagemJog[j][k]);//Imprime todas as posições
}
System.out.println();
}
System.out.print("\n");
}
public String geraNumero()//Gera um numero randomico para o computador
{
Random aleatorio = new Random();
switch(aleatorio.nextInt(8))
{
case 0: return "00";
case 1: return "01";
case 2: return "02";
case 3: return "10";
case 4: return "11";
case 5: return "12";
case 6: return "20";
case 7: return "21";
case 8: return "22";
default: return geraNumero();
}
}
public void PreencheJogComputador()//Jogada do computador
{
boolean ver = false;
while(!ver)//Evita que o computador fique sem jogar
{
String escolhaJogada = geraNumero();
for(int j= 0; j < 3; j++)
{
for(int k = 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 O
ver = true;
}
}
}
}
}
public void selecionaJogadaJogador()//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\n");
System.out.print("O valor inserido foi :");
Scanner s = new Scanner(System.in);//Recebe um valor do teclado
String valorDaVez = s.next();
boolean ver = false;
while(!ver)
{
for(int j = 0; j < 3; j++)
{
for(int k = 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ção que estiver recebe X
ver = true;
}
}
}
}
}
public void ProximaJogada()//É chamado no main
{
for(int i = 0; i < 10; i ++)
{
ImprimirPreenchido();//Imprime as posições
VerificaG();//Verifica ganhador
selecionaJogadaJogador();//Preenche com o jogador que seleciona a posição que quer preencher
VerificaG();
PreencheJogComputador();//Recebe algum valor randomico
}
}
public void VerificaG()//Verifica se jogo acabou
{
if( armazenagemJog[0][0].equals( armazenagemJog[0][1]) && armazenagemJog[0][1].equals( armazenagemJog[0][2]) && ! armazenagemJog[0][0].equals(""))
{
System.out.println("\nO jogo acabou!\n");
ImprimirPreenchido();
System.exit(0);
}
else if( armazenagemJog[1][0].equals( armazenagemJog[1][1]) && armazenagemJog[1][1].equals( armazenagemJog[1][2]) && ! armazenagemJog[1][0].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
else if( armazenagemJog[2][0].equals( armazenagemJog[2][1]) && armazenagemJog[2][1].equals( armazenagemJog[2][2]) && ! armazenagemJog[2][0].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
/*Verifica colunas*/
else if( armazenagemJog[0][0].equals( armazenagemJog[1][0]) && armazenagemJog[1][0].equals( armazenagemJog[2][0]) && ! armazenagemJog[0][0].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
else if( armazenagemJog[0][1].equals( armazenagemJog[1][1]) && armazenagemJog[1][1].equals( armazenagemJog[2][1]) && ! armazenagemJog[0][1].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
else if( armazenagemJog[0][2].equals( armazenagemJog[1][2]) && armazenagemJog[1][2].equals( armazenagemJog[2][2]) && ! armazenagemJog[0][2].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
/*Verifica diagonais*/
else if( armazenagemJog[0][0].equals( armazenagemJog[1][1]) && armazenagemJog[1][1].equals( armazenagemJog[2][2]) && ! armazenagemJog[0][0].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
else if( armazenagemJog[2][0].equals( armazenagemJog[0][2]) && armazenagemJog[0][2].equals( armazenagemJog[1][1]) && ! armazenagemJog[2][0].equals(""))
{
System.out.println("O jogo acabou!");
ImprimirPreenchido();
System.exit(0);
}
}
}