Tener problemas para obtener una detección vertical de connect 4 win

En este momento tengo una tarea escolar donde tengo que crear un juego de conectar 4 en Java sin una interfaz gráfica de usuario utilizando matrices. Hasta ahora he podido hacer que el juego detecte un cuatro horizontal en una fila, pero parece que no puedo obtener un cuatro vertical en una fila. Originalmente, mi matriz era de 6x7, pero la cambié a 5x5 solo para probar el concepto de intercambiar las demencias de la matriz. Solo para hacer menos desorden, solo incluí la parte del código con la detección vertical.

for (column = 0; column < board.length; column++) {

            count_piece = 0;
            max = 0;
            for (row = 0; row < board.length; row++) {
                if (max < count_piece) {
                    max = count_piece;
                }
                if (board[column][row] == 'X') {
                    count_piece++;
                } else {
                    count_piece = 0;
                }

            }

        }
        System.out.println(max);
        if (max == 4) {
            System.out.println("\nYou Win!");
            break;
        }

Si necesita más información o si algo no está claro, hágamelo saber y estaré encantado de proporcionarle más información.

EDITAR: Aquí está el que tiene el bucle invertido.

for (row = 0; row < board.length; row++) {
        count_piece = 0;
        max = 0;
        for (column = 0; column < board.length; column++) {

            if (max < count_piece) {
                max = count_piece;
            }
            if (board[column][row] == 'X') {
                count_piece++;
            } else {
                count_piece = 0;
            }

        }

    }
Respuesta 1

¿Qué tal si inviertes tu ciclo de esa manera, el cambio de tu ciclo interno será la columna en lugar de la fila?

También haga que su bucle interno tome la longitud de la matriz individual en la que se encuentra.

Entonces, en lugar de usar, board.lengthuse algo como board[i].length

Editar

Creo que tu lógica dentro de tu bucle interno está mal ...

Prueba esto:

if (board[row][column] == 'X') {
    count_piece++;
    if(count_piece == 4) {
        System.out.println("you win");
        return;
    }
} else {
    count_piece = 0;
}

Aquí hay dos controles horizontales y verticales con cualquier tamaño de matriz

int count_piece = 0;

        //Checking Vertical Win
        for (int row = 0; row < board.length; row++) {
            count_piece = 0;
            for (int column = 0; column < board[row].length; column++) {

                if (board[row][column] == 'X') {
                    count_piece++;
                    if (count_piece == 4) {
                        System.out.println("you win");
                        return;
                    }

                } else {
                    count_piece = 0;
                }


            }
        }

        //Checking Horizontal Win
        for (int column = 0; column < board.length; column++) {
            count_piece = 0;
            for (int row = 0; row < board[column].length; row++) {

                if (board[row][column] == 'X') {
                    count_piece++;
                    if (count_piece == 4) {
                        System.out.println("you win");
                        return;
                    }

                } else {
                    count_piece = 0;
                }


            }
        }
Respuesta: 2

Creé una lista de cadenas en Java y quiero iterar a través de los elementos (nombres de animales) que agregué usando la clase de iterador. Me preguntaba por qué escribirlo manualmente.next () en el siguiente código ...

Estoy haciendo un programa que toma datos de un archivo y crea un juego de laberinto. Un ejemplo de archivo maze.txt se vería así: 5 5 P.XX. ...X. .XT .. ..X .. X .... Donde los dos números en la parte superior definen ...

Actualmente creando un código que usa 2 tipos de colas de prioridad como métodos separados, el código es similar entre los métodos, tratando de modularlos para que se conviertan en un solo método, pero el parámetro es ...

Tengo una JTable con tres columnas, cada una de las cuales está llena de una matriz hecha de una ArrayList. Estoy tratando de hacer un sistema de búsqueda, donde el usuario buscará un valor en la primera columna, y ...