Ir ao conteúdo

Posts recomendados

Postado

Boa noite. Estou desenvolvendo um Jogo da Velha, e está quase pronto. Testando o Jogo da velha, percebi que mesmo o Jogador Humano vencendo a partida, o Computador ainda efetua mais uma jogada. Alguém pode me orientar? 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++;
                    } 
                }   
}

 

Postado

uninter né meu filho 😅

 

Coloque para verificar quem ganhou ou empatou o jogo antes de executar das jogadas.

 

e coloque System.exit(0); no método de empate e nos métodos de condição de vitoria, isso vai fazer o programa encerrar assim que alguém ganhar e não vai executar a jogada do cpu.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!