运行以下代码时,我正在尝试更新Tic Tac Toe游戏板。 当您键入3作为列时,它会在游戏板中设置2个X或O.
以下是输出
的示例* * *
* * *
* * *
X: Select a Row: 1
X: Select a Col: 3
* * X
X * *
* * *
以下是所需的输出
* * *
* * *
* * *
X: Select a Row: 1
X: Select a Col: 3
* * X
* * *
* * *
以下是代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int rowSelect = 0;
int colSelect = 0;
char turn = 'X';
char rowcol[2][2];
for(int i=0; i < 3; i++)
{
for(int j=0; j < 3; j++)
{
rowcol[i][j] = '*';
}
}
for(int i=0; i < 3; i++)
{
for(int j=0; j < 3; j++)
{
cout << rowcol[i][j] << " ";
}
cout << endl;
}
cout << endl;
while (true)
{
cout << turn << ": Select a Row: ";
cin >> rowSelect;
while (rowSelect < 1 || rowSelect > 3)
{
cout << "I cannot accept that value, try again!" << endl;
cout << endl;
cout << turn << ": Select a Row: ";
cin >> rowSelect;
}
cout << turn << ": Select a Col: ";
cin >> colSelect;
while (colSelect < 1 || colSelect > 3)
{
cout << "I cannot accept that value, try again!" << endl;
cout << endl;
cout << turn << ": Select a Col: " << endl;
cin >> colSelect;
}
rowcol[rowSelect-1][colSelect-1] = turn;
if (turn == 'X')
{
turn = 'O';
}
else
{
turn = 'X';
}
for(int i=0; i < 3; i++)
{
for(int j=0; j < 3; j++)
{
cout << rowcol[i][j] << " ";
}
cout << endl;
}
}
system("PAUSE");
return 0;
}
谢谢!
-Mike
答案 0 :(得分:4)
问题是数组。尽管使用基于零的索引访问数组,但该定义需要为其保留空间的实际元素数。
您将rowcol定义为:
char rowcol[2][2]; // This defines a 2 x 2 array
您应该将rowcol定义为:
char rowcol[3][3]; // This defines a 3 x 3 array
希望这有帮助!
基思
答案 1 :(得分:3)
你的rowcol数组必须是3x3:
char rowcol[3][3];
答案 2 :(得分:0)
char rowcol[2][2];
在所有情况下,i, j
必须只迭代< 2
,因为它是2x2数组。
答案 3 :(得分:0)
FIX:更改为char Array[3][3];