Desenvolver Jogo da Velha em Java contra Computador com três níveis de dificuldades
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é
Curtidas 0