Проверьте, содержит ли матрица 4 одинаковых значения рядом - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно написать небольшую игру, в которой играют 2 игрока, и если кто-то имеет 4 одинаковых значения рядом (по горизонтали, вертикали, диагонали), он выигрывает. В этом случае у меня есть NxM матрица значений перечисления (noPlayer, PlayerX, PlayerO). Пользователь может выбрать размер матрицы (10х5,15х8,8х7 и т. Д.). Я могу проверить значения по горизонтали и вертикали, но я не могу понять, как проверить значения по диагонали (потому что размер всегда отличается). Я был бы очень благодарен, если бы кто-нибудь мог помочь мне с этим.

Player won = NoPlayer;
//Rows
for(int i = 0; i < _row; i++){
    for(int j = 0; j < _column-3; ++j){
        if(_gameTable[i][j] != 0 && (_gameTable[i][j] == _gameTable[i][j+1]) && (_gameTable[i][j+1] == _gameTable[i][j+2]) && (_gameTable[i][j+2] == _gameTable[i][j+3])){
            won = _gameTable[i][j]; //gameTable[j][i] == PlayerX or PlayerO
            break;
        }
    }
}

//Columns
for(int i = 0; i < _column; i++){
    for(int j = 0; j < _row-3; ++j){
        if((_gameTable[j][i] != 0) && (_gameTable[j][i] == _gameTable[j+1][i]) && (_gameTable[j+1][i] == _gameTable[j+2][i]) && (_gameTable[j+2][i] == _gameTable[j+3][i])){
            won = _gameTable[j][i]; //gameTable[j][i] == PlayerX or PlayerO
            break;
        }
    }
 }
 //Diagonally
 ???
...