I'm doing a tic-tac-toe in java, but when in a line there are 3 equal figures, it does not tell you that you won, as if it did not fit the condition, for now just check in horizontal line to try, but do not why not check the winner
public TresEnRaya() {
this.tablero = new String[3][3];
//Y rellenamos el array con corchetes
for (int i = 0; i < tablero.length; i++) {
for (int j = 0; j < tablero[i].length; j++) {
tablero[i][j] = "[]";
}
}
}
//Metodo que muestra el tablero
public void muestraTablero(TresEnRaya juego) {
for (int i = 0; i < juego.tablero.length; i++) {
for (int j = 0; j < juego.tablero[i].length; j++) {
System.out.print(juego.tablero[i][j]);
System.out.print("\t");
}
System.out.println("");
}
}
//Metodo que realiza un movimiento del jugador 1
public void realizaMovimiento1() {
Scanner teclado = new Scanner(System.in);
int x;
int y;
//Automatizamos el nombre del jugador que le toca
System.out.println("Turno de " + Jugador.lista_jugadores.get(0).getNombre_jugador().toString());
//Pedimos los dastos de la coordenada que va a tachar
System.out.println("Indique la posicion X: ");
x = teclado.nextInt();
System.out.println("Indique la posicion Y: ");
y = teclado.nextInt();
//comprobamos si esa casilla ya esta ocupada
compruebaCasillaTachada(x, y, 0);
}
//metodo que realiza un movimiento del jugador 2
public void realizaMovimiento2() {
Scanner teclado = new Scanner(System.in);
int x;
int y;
//Repetimos el proceso del primer metodo, pero en este caso comprobaremos si es la maquina
System.out.println("Turno de " + Jugador.lista_jugadores.get(1).getNombre_jugador().toString());
//Si el jugador 2 es la maquina, automatizará sus movimientos, si no le pedira por teclado los dastos al segundo jugador
if (Jugador.lista_jugadores.get(1).getNombre_jugador().equals("Maquina")) {
//booleano que controlara cuando sale del bucle la jugada de la maquina
boolean jugada_maquina = false;
Random r = new Random();
//nos devolvera un numero aleatorio entre 0 y 2
x = r.nextInt(3);
y = r.nextInt(3);
do {
if (tablero[x][y].equals(Jugador.lista_jugadores.get(0).getSimbolo_jugador().toString())
|| tablero[x][y].equals(Jugador.lista_jugadores.get(1).getSimbolo_jugador().toString())) {
x = r.nextInt(3);
y = r.nextInt(3);
} else {
jugada_maquina = true;
}
} while (jugada_maquina = false);
} else {
System.out.println("Indique la posicion X: ");
x = teclado.nextInt();
System.out.println("Indique la posicion Y: ");
y = teclado.nextInt();
}
compruebaCasillaTachada(x, y, 1);
}
//Metodo que muestra el menu de juego
public int muestraMenu() {
int opcion;
do {
System.out.println("------- Menu -------");
System.out.println("1 - Contra otro Jugador");
System.out.println("2 - Contra la maquina");
opcion = teclado.nextInt();
if (opcion < 1 || opcion > 2) {
System.out.println("Error: la opcion debe ser 1 o 2.");
}
} while (opcion < 1 || opcion > 2);
return opcion;
}
//Metodo que comprueba si hay o no hay un ganador
public void compruebaGanador() {
/*El for controla la primera posicion de la matriz[esta][]
y va cambiando de linea hacia abajo, primero la linea 0, luego la linea 1 y para acabar la linea 2*/
/*El segundo for, controla la segunda posicion de la matriz[][esta], iterando sobre la posicion de la linea
empezará en la posicion[0][0], luego [0][1] y para acabar [0][2]*/
/*Y comenzara el primer for, para pasar de la linea 0 a la linea 1, y pasará al segundo for, y mirara las posiciones de esa linea(0,1 y 2)
y repetira el proceso hasta a acabar con la tercera linea*/
/*Y repetiremos el mismo bucle 2 veces para que compruebe ambos jugadores*/
int jugador = 0;
do {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (tablero[i][j].toString().equals(Jugador.lista_jugadores.get(jugador).getSimbolo_jugador().toString())
&& tablero[i][j].toString().equals(Jugador.lista_jugadores.get(jugador).getSimbolo_jugador().toString())
&& tablero[i][j].toString().equals(Jugador.lista_jugadores.get(jugador).getSimbolo_jugador().toString())) {
System.out.println("Fin del Juego. El ganador es " + Jugador.lista_jugadores.get(jugador).getNombre_jugador().toString());
}
}
}
jugador++;
} while (jugador < 2);
}
public void compruebaCasillaTachada(int x, int y, int jugador) {
//comprobamos si esa casilla ya esta ocupada
if (tablero[x][y].toString().equals(Jugador.lista_jugadores.get(0).getSimbolo_jugador().toString())
|| tablero[x][y].toString().equals(Jugador.lista_jugadores.get(1).getSimbolo_jugador().toString())) {
System.out.println("ya esta tachada");
} else {
//Y la tachamos con el simbolo del jugador
tablero[x][y] = "[" + Jugador.lista_jugadores.get(jugador).getSimbolo_jugador() + "]";
}
}