【发布时间】:2017-10-04 23:06:00
【问题描述】:
我正在使用数组制作井字游戏。要查看是否有人获胜,我必须检查是否有获胜组合。 这是我的板子阵列
string[] board = new string[9] { " ", " ", " ", " ", " ", " " , " ", " ", " " };
起初,董事会是空的。然后两个玩家开始放置'X'和'O'。 但我无法比较,例如,如果第一行全是“X”。 下面的代码由于某种原因不起作用。我不知道为什么?
board[0].Equals(board[1]).Equals(board[2]).Equals("X")
我也试过board[0]==board[1]==board[2]=="X"
这是完整的 if 语句(这些是获胜组合):
if (table[0].Equals(table[1]).Equals(table[2]).Equals("X") || table[3].Equals(table[4]).Equals(table[5]).Equals("X") || table[6].Equals(table[7]).Equals(table[8]).Equals("X") ||
table[0].Equals(table[3]).Equals(table[6]).Equals("X") || table[1].Equals(table[4]).Equals(table[7]).Equals("X") || table[2].Equals(table[5]).Equals(table[8]).Equals("X") ||
table[0].Equals(table[4]).Equals(table[8]).Equals("X") || table[7].Equals(table[4]).Equals(table[3]).Equals("X"))
{
return true;
}
【问题讨论】:
-
你不能这样堆叠语句。
board[0].Equals(board[1])返回一个布尔值,所以可以说它返回 true。那么你在做true.Equals(board[2])这没有意义 -
完全有道理:/有什么建议吗?因为在 python 中使用
==可以正常工作,但在 C# 中不行。 -
board[0].Equals(board[1])返回布尔值,然后您尝试使用board[1]执行 Equals,哪个字符串和该比较将始终返回 false。关于使用==进行比较,您是否调试过代码并检查板在 0,1 和 2 位置是否有正确的值? -
尝试将条件更改为
if(board[0] == "X" && board[1] == "X" && board[2] == "X")