Bom dia a todos, estou tentando fazer um jogo da velha por conta própria, sem interface gráfica, ele rodará via prompt mesmo, ele ainda está incompleto porém fazendo alguns testes esbarrei em um problema, antes de informar o problema vou resumir o programa:
É um jogo da velha que utiliza como tabuleiro uma matriz 3x3, onde as linhas e colunas são compostas por chars:
A B C
D E F
G H I
Que é onde os jogadores devem escolher a letra para marca o X ou O. O problema está em um método que criei chamado EMPATE que caso o jogo se encaixe em uma das condições dentro do método Empate ele deverá mudar a variável s de true para false e consequentemente encerrar o loop, veja bem:
Classe Principal:
package jogo;
import java.util.Scanner;
public class Principal {
public static void jogoCompleto(char jogoAtual[][])
{
for(int i=0;i<jogoAtual.length;i++)
{
System.out.print(" ");
System.out.println();
for(int j=0;j<jogoAtual.length;j++)
{
System.out.print(" "+jogoAtual[i][j]);
}
}
}
public static void main(String[] args) {
String jX="X";
String jO="O";
Marcar m = new Marcar();
Checagem c = new Checagem();
Modelo mod = new Modelo();
Scanner scan = new Scanner(System.in);
char jogo[][]= new char[3][3];
jogo[0][0]='A';
jogo[0][1]='B';
jogo[0][2]='C';
jogo[1][0]='D';
jogo[1][1]='E';
jogo[1][2]='F';
jogo[2][0]='G';
jogo[2][1]='H';
jogo[2][2]='I';
mod.Modelo();
while(c.s==true)
{
System.out.println();
System.out.println("PLAYER 1 - "+jX+":");
m.DecisaoMarcarX(jogo);
jogoCompleto(jogo);
c.EMPATE(c.s, jogo);
System.out.println();
System.out.println("VARIAVEL S= "+ c.s);
if(c.s==false)
{
System.out.println("DEU VELHA");
break;
}
System.out.println();
System.out.println("PLAYER 2 - "+jO+":");
m.DecisaoMarcarO(jogo);
jogoCompleto(jogo);
c.EMPATE(c.s, jogo);
System.out.println();
System.out.println("VARIAVEL S= "+ c.s);
if(c.s==false)
{
System.out.println("DEU VELHA");
break;
}
}
}
}
Classe do método empate:
package jogo;
public class Checagem {
boolean s=true;
/* A CHECAGEM CONSISTE EM VERIFICAR SE HOUVE EMPATE OU GANHADORES */
protected void EMPATE(boolean situacao, char jogo[][])
{
this.s=situacao;
if(jogo[0][0]=='X' && jogo[0][1]=='X' && jogo[0][2]=='O' && jogo[1][0]=='O' && jogo[1][1]=='O' && jogo[1][2]=='X'
&& jogo[2][0]=='X' && jogo[2][1]=='X' && jogo[2][2]=='O')
{
this.s=situacao;
situacao=false;
}
else if(jogo[0][0]=='O' && jogo[0][1]=='O' && jogo[0][2]=='X' && jogo[1][0]=='X' && jogo[1][1]=='X' && jogo[1][2]=='O'
&& jogo[2][0]=='O' && jogo[2][1]=='O' && jogo[2][2]=='X')
{
this.s=situacao;
situacao=false;
}
else if(jogo[0][0]=='O' && jogo[0][1]=='X' && jogo[0][2]=='X' && jogo[1][0]=='X' && jogo[1][1]=='O' && jogo[1][2]=='O'
&& jogo[2][0]=='O' && jogo[2][1]=='X' && jogo[2][2]=='X')
{
this.s=situacao;
}
else if(jogo[0][0]=='X' && jogo[0][1]=='O' && jogo[0][2]=='O' && jogo[1][0]=='O' && jogo[1][1]=='X' && jogo[1][2]=='X'
&& jogo[2][0]=='X' && jogo[2][1]=='O' && jogo[2][2]=='O')
{
this.s=situacao;
situacao=false;
}
}
}
Eu coloquei até na classe principal um println para ver o que acontece com a variável s ao longo do jogo, forçei um empate e mesmo empatando, ela continua como retorno true e o loop não encerra, alguém poderia me dar uma luz? Sou iniciante em Java, desde já obrigado!
