如何检查其他游戏板对角线

时间:2014-05-11 00:34:33

标签: c++

我有正常工作的代码,可以检查玩家是否赢了(当对角线从右上角到左下角时)。但是,我似乎无法弄清楚如何让它适用于左上角到右下角。

此代码有效:(右上角到左下角)

for(int x = boardSize, y = 0; x > 0; x--, y++){
    playerCount = 0;
    for(int row = y, col = 0; col < x; row++, col++){
        if(gameBoard[col][row] == '_')
            playerCount = 0;
        if(gameBoard[col][row] == playerSign) 
            playerCount++;
        if(playerCount == winningSize)
            return true;
    }
}

我如何更改代码以使其适用于其他对角线(左上角到右下角)。提前致谢

2 个答案:

答案 0 :(得分:0)

您的代码过于复杂。测试从(0,0)到(size-1,size-1)的对角线,包括:

for (int z = 0; z < size; ++z) {
  if (board[z][z] == ' ')
    count = 0;
  else if (board[z][z] == p) {
    ++count;
    if (count == s)
      return true;
  }
}

请注意,您不需要嵌套(2维)循环来扫描对角线,这基本上是一维的。

答案 1 :(得分:0)

此代码适用于第二个对角线:

for (int y = 0, x = size-1; y < size; y++, x--){
        if (board[y][x] == ' '){
            count = 0;
        }else if (board[y][x] == p){
            count++;
            if (count == s)
                return true;
        }
}