【发布时间】:2011-07-10 23:29:35
【问题描述】:
我正在编写井字游戏,我想知道如何创建一个有效的函数来检查谁赢了。由 X、O 或空格组成的二维数组代表棋盘。
char CheckWin(const char board[][NUM_COLS], int& sum) // tic tac toe board - IN
{
char tmp;
int lcv;
tmp = ' ';
if (sum == 9)
{
return 'T';
}
else if (sum != 9)
{
if (((tmp = board[1][1]) != ' ' && board[0][0] == tmp && board[2][2] == tmp) || (board[2][0] == tmp && board[0][2] == tmp))
{
return tmp;
}
for (lcv = 0; lcv < 3; lcv++)
{
if ((tmp = board[lcv][0]) != ' ' && board[lcv][1] == tmp && board[lcv][2] == tmp)
{
return tmp;
}
else if ((tmp = board[lcv][0]) != ' ' && board[lcv][1] == tmp && board[lcv][2] == tmp)
{
return tmp;
}
}
}
return 'N';
}
除了一遍又一遍地做类似的事情,我怎么能检查谁赢了,如果 X 赢了,返回 X,如果 O 有一个,返回 O,如果是平局,返回 T,如果没有人有一个,返回 N然而。提前致谢。我仍然在尝试熟悉 C++ 和一般的编程。
编辑:我只是采用了简单的方法,但不知怎么搞砸了,有人知道怎么做吗?看起来它没有返回任何东西,因为当我在玩家选择一行和一列之后在 main 中调用它时(这工作正常),它不输出任何东西
【问题讨论】:
-
仅供参考:
const char board[][3]不会像您认为的那样做。我想你的意思是const char (&board)[3][3]? -
只返回最先移动的人:P
-
还有平局时返回什么???
-
这只是我正在编写的函数的原型。不就是把二维数组作为常量送入函数,就没有副作用了吗?
-
@Michael
const用于防止被调用者覆盖数据,而不是传值。
标签: c++ if-statement