Boa tarde. Estou desenvolvendo um Jogo da Velha, e está quase pronto. Quero agradecer aos que me orientaram, obrigado! Preciso de mais uma ajuda, quem puder me orientar. Então, testando o Jogo da velha, percebi que mesmo o Jogador Humano vencendo a partida, o Computador ainda efetua mais uma jogada. Por exemplo.:
X|O|O
X|O|_
X| |
Jogador Humano VENCEU
É tipo isso, o Jogador Humano venceu e o Computador imprimiu mais um O ainda. Acredito que segue algum detalhe nesses if/else, em alguma parte desses blocos de códigos que se encontra no Main. Segue o código abaixo:
public class Jogo {
//Instâncias de Tabuleiro, Jogador, ComputadorA, ComputadorB e ComputadorC
static Tabuleiro jogoTabuleiro = new Tabuleiro();
static Jogador jogador = new Jogador();
static ComputadorA compA = new ComputadorA();
static ComputadorB compB = new ComputadorB();
public static void main(String[] args) {
System.out.println("***** Jogo da Velha *****");
System.out.println("Jogador Humano: X");
System.out.println("Computador: O\n");
System.out.println("Escolha o nível de dificuldade 1, 2 ou 3:");
//Ler o que foi digitado pelo usuário
Scanner nDificuldade = new Scanner(System.in);
//Armazena o que foi digitado
int nivel = nDificuldade.nextInt();
//Entra nesse laço se o que foi digitado for menor que 1 ou menor que 3
while(nivel < 1 || nivel > 3){
System.out.println("Opção inválida, escolha a dificuldade 1, 2 ou 3:");
nivel = nDificuldade.nextInt();
}
int jogoNaoAcabou = 1;
//Enquanto a variável jogonaoAcabou for <= 5 chama o método JogadorHumano
while (jogoNaoAcabou <= 5) {
jogador.JogadorHumano(Tabuleiro.tab);
//Se o nível for igual a 1, cai nesse if e chama o método JogadorComputadorA
if (nivel == 1) {
compA.JogadorComputadorA(Tabuleiro.tab);
}
//Nível igual a 2, cai nesse else if e chama o método JogadorComputadorB
else if (nivel == 2){
compB.JogadorComputadorB(Tabuleiro.tab);
}
//Chama o método caso Jogador Humano ou Computador tenha vencido
if(jogoTabuleiro.VerificaVencedor(Tabuleiro.tab)){
break; //Para encerrar o jogo caso um dos dois tenha vencido
}
//jogoNaoAcabou for igual a 5, significa que todas os espaços foram preenchidos e não teve vencedor
else if(jogoNaoAcabou == 5){
System.out.println("EMPATE");
}
//Incrementa jogoNaoAcabou + 1
jogoNaoAcabou++;
}
}
}