C++ C++;Tic Tac Toe项目
我现在正在做一个井字游戏项目。我遇到的问题是,每当我在控制台中输入一个坐标,例如[6][0](程序会将标记“X”或“O”放在该位置)用于一个大小为[15][15]的数组时,它会自动将标记“X”或“O”保存到不在数组范围内的另一个位置(在我的例子中是[5][15])。这是我的程序(P/S:我是越南人,所以忽略越南语中的部分):C++ C++;Tic Tac Toe项目,c++,C++,我现在正在做一个井字游戏项目。我遇到的问题是,每当我在控制台中输入一个坐标,例如[6][0](程序会将标记“X”或“O”放在该位置)用于一个大小为[15][15]的数组时,它会自动将标记“X”或“O”保存到不在数组范围内的另一个位置(在我的例子中是[5][15])。这是我的程序(P/S:我是越南人,所以忽略越南语中的部分): int size=15; 输入量; int inputX=0; int输入=0; 炭板[15][15]; bool-checkWin=false; 字符标记='X'; //
int size=15;
输入量;
int inputX=0;
int输入=0;
炭板[15][15];
bool-checkWin=false;
字符标记='X';
//尺度损失的跨学科研究
bool checkWinLose(){
int max;
int x,y;
x=输入x;
y=输入;
//在调查中横向观察
对于(;max<3;max++)
{
如果((板[x][y]='x'| |板[x][y]='O')&(板[x][y]==板[x-1][y]&&板[x-1][y]==板[x-2][y]))
{
cout我将在粘贴的代码的第123行将x,y=0
更改为x=y=0
。并且还将返回0
添加到函数checkWinLose()
中,您没有初始化中x
和y
的值
尝试使用:
void prepareGameboard () {
int x,y;
for (y = 0; y < size ; y++)
{
for (x = 0; x < size ; x++)
{
board[x][y] = '.' ;
}
}
}
我用Google Translate将评论翻译成英语。如果不知道程序的功能,很难理解它。你可以自己将其翻译成英语,但这使程序更容易阅读。这是巨大的努力@johnTks man,但这并不是我问题的真正解决方案。你能解决问题吗???进行更改我说并添加了“return 0;”使您的程序在我的计算机中工作实际上我认为您误解了我的程序的问题。问题是当我输入像board[7][1]这样的坐标时(减号后是board[6][0]),它会将标记的值保护到board[5][15](减号后)(不在数组范围内),当我输入另外两个坐标时,程序结束:board[6][14]和board[7][13](减号后).你能帮我解决吗???这个错误在我身上没有发生。更改后,它在boardYeah中也标记了正确的位置。我的意思是它会自动将值保存到另一个位置,现在显示,因为它不在定义范围内
void prepareGameboard () {
int x,y;
for (y = 0; y < size ; y++)
{
for (x = 0; x < size ; x++)
{
board[x][y] = '.' ;
}
}
}
void loadGameboard () {
int x,y;
////TODO: check win or lose
while (!checkWin) {
for (y = 0; y < size ; y++)
{
for (x = 0; x < size ; x++)
{
cout << board[x][y] << " ";
}
cout << endl;
}
checkWin = checkWinLose();
if (checkWin == true)
return;
takeInput();
inputAmount++;
}
}
// Interdisciplinary examination of scale loss
bool checkWinLose() {
int max;
int x,y;
x = inputX;
y = inputY;
// Looking horizontally under investigation
for (; max < 3; max++)
{
if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x - 1][y] && board[x - 1][y] == board[x - 2][y]))
{
cout << "Game over ngang!" << endl;
return 1;
}
x++;
}
x = inputX;
y = inputY;
max = 0;
// Interdisciplinary examination of vertical
for (; max < 3; max++)
{
if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x][y - 1] && board[x][y - 1] == board[x][y - 2]))
{
cout << "Game over doc!" << endl;
return 1;
}
y++;
}
x = inputX;
y = inputY;
max = 0;
// Interdisciplinary examination of under the cliff cave from left to right
for (; max < 3; max++)
{
if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x - 1][y - 1] && board[x - 1][y - 1] == board[x - 2][y - 2]))
{
cout << "Game over trai sang phai!" << endl;
return 1;
}
x++;
y++;
}
x = inputX;
y = inputY;
max = 0;
// Interdisciplinary examination of under the cliff cave from right to left
for (; max < 3; max++)
{
if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x + 1][y - 1] && board[x + 1][y - 1] == board[x + 2][y - 2]))
{
cout << "Game over phai sang trai!" << endl;
return 1;
}
x--;
y++;
}
// Flower test case
if (inputAmount == 225)
{
cout << "Game over hoa!" << endl;
return 1;
}
return 0; //<- Returning false if the all other tests failed
}