**Galera, o jogo não fica alternando entre jogador um e jogador dois,testem ai por favor,se alguém puder me ajudar a consertar isso eu ficarei muito grato…são 2 classes, a principal e a dos métodos **
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
JogoVelha jogoVelha = new JogoVelha();
String simbolo = "";
String posicao;
int valida = 0;
int jogadas = 0;
boolean alternarJogador = false; // flag para controlar a vez de jogar
boolean terminarJogo = false;
do { // loop principal para rodar o game
if (alternarJogador == false) {
do {// loop para alternar entre o jogador um e dois
System.out.println("Vez do jogador 1! ");
System.out.println("Escolha uma posição: ");
jogoVelha.mostrarTabuleiro();
posicao = s.next();
if (posicao != null) {
jogoVelha.validarJogada(posicao);
if (jogoVelha.validarJogada(posicao)) {
jogadas++;
simbolo = "X";
jogoVelha.substituirJogada(posicao, simbolo);
jogoVelha.mostrarTabuleiro();
alternarJogador = true;
// valor da flag muda para encerrar a jogada do player1 e iniciar a vez do
// player2
}
}
} while (alternarJogador == false);
}
if (alternarJogador == true) {
do {
if (alternarJogador == true) {
System.out.println("Vez do jogador 2! ");
System.out.println("Escolha uma posição: ");
jogoVelha.mostrarTabuleiro();
posicao = s.next();
if (posicao != null) {
jogoVelha.validarJogada(posicao);
if (jogoVelha.validarJogada(posicao)) {
jogadas++;
simbolo = "O";
jogoVelha.substituirJogada(posicao, simbolo);
jogoVelha.mostrarTabuleiro();
alternarJogador = false;
}
}
}
} while (alternarJogador == true); // termina a vez do jogador 2 e passa a flag pro jogador 1
}
jogoVelha.testarVencendor(jogadas);
if (jogoVelha.testarVencendor(jogadas) == null) {
terminarJogo = true;
}
} while (terminarJogo == true); // termina o loop principal do game
}
}
public class JogoVelha {
private String[][] m = { { “1”, “2”, “3” }, { “4”, “5”, “6” }, { “7”, “8”, “9” } };
public void menu() {
}
public String mostrarTabuleiro() {
for (int li = 0; li < 3; li++) {
for (int col = 0; col < 3; col++) {
System.out.printf(" " + m[li][col]);
}
System.out.println();
}
return null;
}
public boolean validarJogada(String p) { /*
* Se a posição informada pelo usuário for equivalente a posição do
* tabuleiro, será retornado um true
*/
for (int li = 0; li < 3; li++) {
for (int col = 0; col < 3; col++) {
if (m[li][col].equals(p)) {
return true;
}
}
}
return false;
}
public void substituirJogada(String p, String s) {
/*
* A função recebe a posição(p) da jogada e o símbolo do jogador(s) "O" ou "X".
* A matriz recebe o símbolo do jogador, e caso a posição p escolhida seja
* equivalente a uma posição do tabuleiro,irá ocorrer a substituição do número
* pelo símbolo do jogador.
*/
if (p.equals("1")) {
m[0][0] = s;
} else if (p.equals("2")) {
m[0][1] = s;
} else if (p.equals("3")) {
m[0][2] = s;
} else if (p.equals("4")) {
m[1][0] = s;
} else if (p.equals("5")) {
m[1][1] = s;
} else if (p.equals("6")) {
m[1][2] = s;
} else if (p.equals("7")) {
m[2][0] = s;
} else if (p.equals("8")) {
m[2][1] = s;
} else if (p.equals("9")) {
m[2][2] = s;
}
}
public String testarVencendor(int jogadas) {
String[] V = new String[8];
String vencedor = "null";
if (jogadas == 9) { // 9 esgota as possibilidades de vitória, significando que ninguém ganhou
vencedor = "EMPATE";
}
// Cada posição do vetor V recebe uma possibilidade de vitória
V[0] = m[0][0] + m[0][1] + m[0][2]; // linhas
V[1] = m[1][0] + m[1][1] + m[1][2];
V[2] = m[2][0] + m[2][1] + m[2][2];
V[3] = m[0][0] + m[1][0] + m[2][0]; // colunas
V[4] = m[0][1] + m[1][1] + m[2][2];
V[5] = m[0][2] + m[1][2] + m[2][2];
V[6] = m[0][0] + m[1][1] + m[2][2]; // diagonais
V[7] = m[0][2] + m[1][1] + m[2][0];
for (int i = 0; i < V.length; i++) {
if (V[i].equals("XXX")) {
vencedor = "Jogador 1";
} else if (V[i].equals("OOO")) {
vencedor = "Jogador 2";
}
}
return vencedor;
}
}
