所以我正忙于编写一个 3x3 2D 井字游戏,我想尽快将其转换为 3D 版本——这是一位朋友向我展示的。
无论如何,我已经掌握了大部分基础知识(玩家 1、玩家 2、输入行和列的值等等。但是我在比较值的行或值的列是否彼此相等时遇到了困难。
constexpr size_t rows = 3;
constexpr size_t cols = 3;
char gameBoard[rows][cols] = {
{'-','-','-'},
{'-','-','-'},
{'-','-','-'}
};
如果通过输入过程将其更改为:
char gameBoard[rows][cols] = {
{'O','O','O'},
{'X','X','-'},
{'-','-','X'}
};
我希望它认识到第 1 行现在已满,我可以提供必要的输出。
我想使用for
循环并检查第一个字符与第二个&&
三分之一之间的相等性,但由于某种原因,当我这样做时,它似乎只是简单地给出了我给它的输出“win text”。
感谢您提供的任何输入:)
*所以这个问题得到了回答,但我只是想给出我为测试行和列所做的代码。因为我刚刚完成它,所以我没有包括我的对角线部分,但它应该非常简单(而不是[i][j]
你必须[j][j]
测试从左上角到右下角的对角线,例如)。
for (size_t i = 0; i != 1; i++)
{
int win_cnt = 0;
for (size_t j = 0; j != 3; j++)
{
if (gameBoard[i][j] == 'X')
{
win_cnt++;
if (win_cnt == 3)
{
system("cls"); //Please do not mind this, this is a placeholder
cout << "\n Player 1 has won the game!" << endl;
return 0;
}
}
}//Check for row win
win_cnt = 0;
for (size_t j = 0; j != 3; j++)
{
if (gameBoard[j][i] == 'X')
{
win_cnt++;
if (win_cnt == 3)
{
system("cls"); //Please do not mind this, this is a placeholder
cout << "\n Player 1 has won the game!" << endl;
return 0;
}
}
}//Check for column win
}//Check for win PRIMARY
不要介意系统的使用,我正在编写一个函数来清除使用过的“控制台”屏幕。system("cls") 现在只是一种更快的调试方法。