如何检查四个变量之间的相等性?这是一个3D井字游戏。
if (b[0][0] == b[1][0] == b[2][0] == p) { line += 1; }
这不等同于从左到右。我不想做以下任何一种情况:
if (b[0][0] == p && b[1][0] == p && b[2][0] == p) { line += 1; }
if ((b[0][0] == b[1][0]) && (b[1][0] == b[2][0]) && (b[2][0] == p)) { line += 1; }
所有变量都是整数,正如我所知道的bools我可以使用&&amp ;.有没有更好的办法?我考虑过:
if ((b[0][0] + b[1][0] + b[2][0]) == (3 * p)) { line += 1; }
由于p
将是三个值之一(对于X或O都不为0,对于X为1,对于O为2),因此只需要将O的值更改为4或三个值无法实现的值1s,0s或其组合。但它缺乏技巧。
答案 0 :(得分:3)
由于问题中4个变量中的3个属于一个对象,因此您可以创建一个方法来包装它。像bool isValid(int *A, int val) {...}
之类的东西,然后在你的语句if (isValid(b, p)) {...}
中使用它。这个名字是任意的,因为没有给出更广泛的背景。
答案 1 :(得分:2)
既然你已经提到过tic-tac-toe,事情会有所改变。最终,您将检查每列的相同值,每行检查相同的值。这不需要很长的if ... else if...
阶梯。而是编写一个函数来检查行:
bool row_matches(board b, int row, int value) {
for (int col = 0; col < 3; ++col)
if (b[row][col] != value)
return false;
return true;
}
并为列编写类似的函数。对角线甚至更简单。