Игра Java Connect Four не распознает диагональные победы

Я пытаюсь сделать игру Connect Four с 6 строками и 7 столбцами. Плата представляет собой двухмерный массив строк, где каждый пустой слот на плате представляет собой строку ".". Если я еще поправлю циклы, программа выдаст мне indexArrayOutOfBoundsException, поэтому я не могу понять, какие изменения нужно внести в алгоритм, чтобы проверить диагональный выигрыш.

//tests for an upper-left-to-lower-right diagonal line made by four of the same color checker
    for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++)
    {
        for(int col = 0; col <= RIGHTMOST_COLUMN_INDEX - 3; col++)
        {
            if((gb[row][col] != ". ")
            && (gb[row + 1][col + 1] != ". ")
            && (gb[row + 2][col + 2] != ". ")
            && (gb[row + 3][col + 3] != ". ")
            && (gb[row][col] == gb[row + 1][col + 1])
            && (gb[row + 1][col + 1] == gb[row + 2][col + 2])
            && (gb[row + 2][col + 2] == gb[row + 3][col + 3]))
            {
                return gb[row][col];
            }
        }
    }

    //tests for a lower-left-to-upper-right diagonal line made by four of the same color checker
    for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++)
    {
        for(int col = RIGHTMOST_COLUMN_INDEX - 3; col >= 0; col--)
        {
            if((gb[row][col] != ". ")
            && (gb[row + 1][col + 1] != ". ")
            && (gb[row + 2][col + 2] != ". ")
            && (gb[row + 3][col + 3] != ". ")
            && (gb[row][col] == gb[row + 1][col + 1])
            && (gb[row + 1][col + 1] == gb[row + 2][col + 2])
            && (gb[row + 2][col + 2] == gb[row + 3][col + 3]))
            {
                return gb[row][col];
            }
        }
    }

person user3552229    schedule 19.04.2014    source источник


Ответы (1)


Логика кажется мне разумной, но одна проблема заключается в том, что вы не можете сравнивать строки в Java с помощью ==; вам нужно использовать .equals(). == проверяет, хранятся ли две строки в одном и том же месте в памяти, а не содержат ли они одни и те же символы.

person Chris Bogart    schedule 19.04.2014