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);
}
}