【发布时间】:2015-04-04 17:16:02
【问题描述】:
public boolean isWin()
{
boolean winner= false;
//checks rows first
if(gameBoard[currentRow][0]==playerOne&&gameBoard[currentRow][1]==playerOne&&gameBoard[currentRow][2]==playerOne)
{
winner= true;
}
else if(gameBoard[currentRow][0]==playerTwo&&gameBoard[currentRow][1]==playerTwo&&gameBoard[currentRow][2]==playerTwo)
{
winner= true;
}
//checks columns next
if(gameBoard[0][currentCol]==playerOne&&gameBoard[1][currentCol]==playerOne&&gameBoard[2][currentCol]==playerOne)
{
winner=true;
}
else if(gameBoard[0][currentCol]==playerTwo&&gameBoard[1][currentCol]==playerTwo&&gameBoard[2][currentCol]==playerTwo)
{
winner=true;
}
//checks one diagonal
if(gameBoard[0][0]==playerOne&&gameBoard[1][1]==playerOne&&gameBoard[2][2]==playerOne)
{
winner=true;
}
else if(gameBoard[0][0]==playerTwo&&gameBoard[1][1]==playerTwo&&gameBoard[2][2]==playerTwo)
{
winner=true;
}
//checks other diagonal
if(gameBoard[2][0]==playerOne&&gameBoard[1][1]==playerOne&&gameBoard[0][2]==playerOne)
{
winner=true;
}
else if(gameBoard[2][0]==playerTwo&&gameBoard[1][1]==playerTwo&&gameBoard[0][2]==playerTwo)
{
winner=true;
}
return winner;
}
此代码测试在标准 3 x 3 井字游戏中的胜利。我的问题是,我将如何更改里面的数字以匹配任何大小的棋盘游戏,例如 n x n?
目前,它会检查第一行、第二行和第三行,以检查是否有玩家在任何一行中获胜,然后是列和对角线。但是,当电路板大小更改为其他任何值时,这不再适用,因为它不会检查每个可能的行/列/对角线。那么我将如何让它为大小为 n x n 的板做到这一点。请不要代码,因为我不想抄袭,但如果有人能提供意见,将不胜感激?
【问题讨论】: