Desenvolver Jogo da Velha em Java contra Computador com três níveis de dificuldades
17/07/2020
0
Bom dia. Alguém poderia me ajudar em relação ao código? Preciso implementar as jogadas do computador, no momento, só consigo efetuar a jogadas do usuário (marcação X), minha ideia era que a cada jogada do usuário, a próxima seria do Computador, por exemplo: preencher espaços que não foram preenchidos, etc.(precisa ter 3 níveis de dificuldade, de jogadas), e assim, sucessivamente. Segue o código abaixo:
import java.util.Scanner; public class Jogo { //Vai desenhar o tabuleiro static char [][] tab = {{'_', '|','_','|','_'} , {'_', '|','_','|','_'} , {' ', '|',' ','|',' '}}; public static void main(String[] args) { //Chama método JogadorHumano e passa parâmetro tab Jogo para iniciar jogo JogadorHumano(tab); JogadorHumano(tab); } //Método para verificar marcação da jogada, posição, int posicaoMarcada para verificar se já foi marcada //char [][] tabuleirojogo vai verificar tabuleiro //Método boolean para retornar true ou false public static boolean VerificaEspacoPreenchido(int posicaoMarcada, char [][] tabuleiroJogo) { //Estrututa Switch para verificar posição, qual posição foi maracada, posso mudar essa estrutura para if/else switch(posicaoMarcada){ case 1: //Verifica se a posição 1 está preenchida if(tabuleiroJogo[0][0] == '_') { //Bolean será true, retonando que não está preenchido return true; } //Se tiver preenchida retorna false else { return false; } case 2: if(tabuleiroJogo[0][2] == '_') { return true; } else { return false; } case 3: if(tabuleiroJogo[0][4] == '_') { return true; } else { return false; } case 4: if(tabuleiroJogo[1][0] == '_') { return true; } else { return false; } case 5: if(tabuleiroJogo[1][2] == '_') { return true; } else { return false; } case 6: if(tabuleiroJogo[1][4] == '_') { return true; } else { return false; } case 7: if(tabuleiroJogo[2][0] == ' ') {//''Espaço vazio return true; } else { return false; } case 8: if(tabuleiroJogo[2][2] == ' ') { return true; } else { return false; } case 9: if(tabuleiroJogo[2][4] == ' ') { return true; } else { return false; } default: return false; } } //Essa pode ser a classe que vai imprimi o tabuleiro //Deifine método array passando com parâmetro nome do mesmo public static void ImprimiTabuleiro(char[][] tabuleiroJogo) { //Vai exibir tabuleiro for (char[] linha : tabuleiroJogo) { for(char c : linha) { System.out.print(c); } System.out.println(); } }//Separar essa parte do código em outra classe //Método para fazer as jogadas do computador após cada jogada do Jogador Humano, deve inserir em uma posição que não está preenchida public static void JogadorComputador(char [][] tabuleiroJogo) { } //Métod para as jogadas do jogador humano, pega o que foi digitado no teclado e substitui no tabuleiro public static void JogadorHumano(char [][] tabuleiroJogo) { //System.out.print("*** Jogo da Velha ***"); System.out.println(); ImprimiTabuleiro(tab); System.out.println("Jogador Humano, digite um opção de 1 a 9 para inserir no tabuleiro:"); //Pega o que foi digitado no teclado Scanner teclado = new Scanner(System.in); //Variável para ler posição int posicao = teclado.nextInt(); JogadorComputador(tab); //Guarda resultado do retorno do método na variável verif do tipo booleana boolean verif = VerificaEspacoPreenchido(posicao, tabuleiroJogo); //Enquanto for diferente de true fica nesse loop dizendo que é jogado que está sendo efetuada é inválida //Só sai desse loop até efetuar uma jogada valida while(verif != true) { System.out.println("A jogado efetuada é inválida!"); System.out.println("Digite uma nova opção:"); //Lê nova jogada efetuada posicao = teclado.nextInt(); //Verifica a jogada verif = VerificaEspacoPreenchido(posicao, tabuleiroJogo); } //Chama método e passa os parâmetros posicao, que é digitado pelo usuário, Jogador Humano, e o tabuleiroJogo //Atualiza posição tabuleiro de acordo com que o usuário escolhe AtualizaTabuleiro(posicao, "Jogador Humano", tabuleiroJogo); } //pos: posição, jogador: representa jogador, tabuleiroJogo é o tabuleiro, pois precisamos alterar elementos public static void AtualizaTabuleiro(int pos, String jogador, char[][] tabuleiroJogo) { //Método para mudar as posições vazias do tabuleiro(com underline) pelas marcações, jogador humano X //jogador computador O char marcacao = ' ';//Vazia, preenchida de acordo com marcação: X ou O //Verifica jogador é Humano e efetua a marcação X if( jogador == "Jogador Humano") { marcacao = 'X';//Marca X Jogador Humano } // Verificar jogador é o Computador e efetua a marcação O else if(jogador == "Jogador Computador") { marcacao = 'O';//Marca O Jogador Computador } //Posso fazer está estrutura que verifica posições indices utilizando if/else switch (pos) { //Se a posição for igual a 1 case 1: tabuleiroJogo[0][0] = marcacao; break; case 2: tabuleiroJogo[0][2] = marcacao; break; case 3: tabuleiroJogo[0][4] = marcacao; break; case 4: tabuleiroJogo[1][0] = marcacao; break; case 5: tabuleiroJogo[1][2] = marcacao; break; case 6: tabuleiroJogo[1][4] = marcacao; break; case 7: tabuleiroJogo[2][0] = marcacao; break; case 8: tabuleiroJogo[2][2] = marcacao; break; case 9: tabuleiroJogo[2][4] = marcacao; break; default: break; } ImprimiTabuleiro(tab); } }
Paulo André
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)