Ola a todos
Estou fazendo um programa do jogo da velha em java, utilizando uma interface para verificar o vencedor, mas esta apresentando erro e nao estou conseguindo detectar o problema, alguem poderia me ajudar nessa ? Segue o codigo feito.
public interface IJogoVelha {
char verificaGanhador(char[][] tabuleiro) throws Exception;
}
public class JogoDaVelha implements IJogoVelha {
String[]][] m= {{"1","2","3",},{"4","5","6"},{"7","8","9"}}; // matriz
public String Mostrar() {
for(int li=0;li<3;li++) {
for(int co=0; co<3; co++) {
System.out.printf(" " + m[li] [co]);
}
System.out.println("\n");
}
return null;
}
public boolean Valido(String p) {
for (int li=0; li<3; li++) {
for (int co=0; co<3; co++) {
if (m[li] [co].equals (p))
return true;
}
}
return false;
}
public void Jogada(String p, String j) {
if(p.equals("1"))
m[0][0] = j;
else if(p.equals("2"))
m[0] [1] = j;
else if(p.equals("3"))
m[0] [2] = j;
else if(p.equals("4"))
m[1] [0] = j;
else if(p.equals("5"))
m[1] [1] = j;
else if(p.equals("6"))
m[1] [2] = j;
else if(p.equals("7"))
m[2] [0] = j;
else if(p.equals("8"))
m[2] [1] = j;
else if(p.equals("9"))
m[2] [2] = j;
}
@Override
public char verificaGanhador(char[][] tabuleiro) throws Exception {
String[] t = new String[8]; // vetor
String vencedor = "null";
if (jogadas == 9) {
vencedor ="EMPATE";
}
// linhas verticais
T[0] = m[0] [0] + m[0] [1] + m[0] [2];
T[1] = m[1] [0] + m[1] [1] + m[1] [2];
T[2] = m[2] [0] + m[2] [1] + m[2] [2];
// linhas horizontais
T[3] = m[0] [0] + m[1] [0] + m[2] [0];
T[4] = m[0] [1] + m[1] [1] + m[2] [1];
T[5] = m[0] [2] + m[1] [2] + m[2] [2];
// linhas diagonais
T[6] = m[0] [0] + m[1] [1] + m[2] [1];
T[7] = m[0] [2] + m[1] [1] + m[2] [0];
for (int i = 0; i < T.length; i++) {
if(T[1].equals("XXX")) {
vencedor = "JOGADOR 1";
} else if (T[1].equals("OOO")) {
vencedor = "JOGADOR 2";
}
}
return vencedor;
}
}
import java.util.Scanner;
public class JogoVelha {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
JogoDaVelha jogo = new JogoDaVelha();
String posicao;
int valida = 0, Jogadas = 0;
while (true) {
System.out.println(":::::::: jogo da velha::::::::::");
jogo.Mostrar();
do { // inicia Jogador 1
System.out.print("Jogador 1, informe uma posicao: ");
posicao = ler.next();
while (!jogo.Valido(posicao)) {
System.out.println("Jogada invalida, tente novamente!");
System.out.print("Jogador 1, informe uma posicao: ");
posicao = ler.next();
valida = 0;
}
jogo.Jogada(posicao,"X");
valida = 1;
} while (valida == 0); //fim Jogador 1
Jogadas++;
valida = 0;
jogo.Mostrar();
if (!jogo.Ganhou(Jogadas).equals("null")) {
break; // para encerrar o primeiro while
}
do { // inicia Jogador 2
System.out.print("Jogador 2, informe uma posicao: ");
posicao = ler.next();
while (!jogo.Valido(posicao)) {
System.out.println("Jogada invalida, tente novamente!");
System.out.print("Jogador 2, informe uma posicao: ");
posicao = ler.next();
valida = 0;
}
jogo.Jogada(posicao,"O");
valida = 1;
jogo.Mostrar();
} while (valida == 0); //fim Jogador 2
Jogadas++;
valida = 0;
if (!jogo.Ganhou(Jogadas).equals("null")) {
break; // para encerrar o primeiro while
}
}
System.out.println("O" + jogo.Ganhou(Jogadas) + "venceu!");
}
}