2014-05-11 59 views
0

我有工作代碼,可以檢查玩家是否贏了(當對角線是從右上角到左下角時)。但是,我似乎無法弄清楚如何使它左上角到右下角對角線。如何查看其他遊戲板對角線

此代碼的工作:(到左下右上斜線)

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

此代碼將第二對角線工作:

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

由於它的實際工作爲第二對角線! – fadim

0

您的代碼過於複雜。要測試從(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; 
    } 
} 

注意,你不需要嵌套(2維)循環掃描角,這實質上是一維的東西。