Как проверить вертикальный и диагональный Win в массиве Java 2d Tic Tac Toe - PullRequest
0 голосов
/ 28 марта 2012

Я пишу игру в крестики-нолики на Java, используя двумерный массив JButton. Мне нужно иметь возможность проверить победителя в игре, используя циклы For. Я успешно проверил победителя, когда выигрышный набор X или O содержится в строке, но я не совсем уверен, как проверить по столбцу, диагонали и обратной диагонали. Я бы использовал другой метод, чтобы проверить победителя, но я должен написать это очень определенным образом.

        buttons = new JButton[3][3];

        public String checkWin() {
        String winString = null;

        for (int i = 0; i < buttons.length; i++){

            int xCount = 0;
            int oCount = 0;

            for(int j = 0; j < buttons[i].length; j++){
                if (buttons[i][j].getText().equals("X")){
                    xCount ++;
                }

                if (buttons[i][j].getText().equals("O")){
                    oCount ++;
                }

                if (xCount == buttons[i].length){
                    winString = "X wins!";
                }

                if (oCount == buttons[i].length){
                    winString = "O wins!";
                }
            }
        }

        return (winString);

    }

Ответы [ 2 ]

1 голос
/ 28 марта 2012

по вертикали: замените кнопки [i] [j] на кнопки [j] [i] в ​​вашем коде. диагональ: сделать один цикл, который проверяет кнопки [i] [i]. обратная диагональ: сделайте один цикл, где вы проверяете кнопки [buttons.size - i - 1] [i].

1 голос
/ 28 марта 2012

Начните с рисования доски на бумаге и отметьте координаты вертикальных выигрышных конфигураций.

Затем повторите для диагональных побед.

Это должно сказать вам, что вам нужно знать.

...