Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查其他游戏板对角线_C++ - Fatal编程技术网

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

C++ 如何检查其他游戏板对角线,c++,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] == '_')

我有工作代码,可以检查当对角线从右上角到左下角时,玩家是否赢了。然而,我似乎不知道如何使它适用于左上角到右下角的对角线

此代码起作用:右上角到左下角对角线

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;
    }
}

我需要如何更改代码以使其适用于左上角到右下角的另一条对角线。提前感谢

您的代码太复杂了。要测试从0,0到尺寸-1(包括尺寸-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;
  }
}

请注意,扫描对角线不需要嵌套的二维循环,因为对角线本质上是一维的。

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

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;
        }
}

谢谢,它对第二条对角线有效!