所以我在做一个井字游戏,对于我的输入函数,我得到了玩家将移动存储为二维数组中的整数,输入是使用对指向位置的指针的一维数组的引用获得的在二维数组中。
但是我的问题是,当我似乎通过使用指针将多维数组的平方的值设置为某个值时,什么也没有发生。
这是输入函数:
void Game::input(Board b){
int *spots[9]; // Possible spots for the input
bool validInput = false;
spots[0] = &b.board[2][0];
spots[1] = &b.board[2][1];
spots[2] = &b.board[2][2];
spots[3] = &b.board[1][0];
spots[4] = &b.board[1][1];
spots[5] = &b.board[1][2];
spots[6] = &b.board[0][0];
spots[7] = &b.board[0][1];
spots[8] = &b.board[0][2];
redo:
cout << ">> " << endl;
int input; // Input
cin >> input; // Get the input
validInput = cin;
if(!validInput){
cout << "Numbers only please!" << endl;
cin.clear();
while(cin.get() != '\n');
goto redo;
}
if(input > 9 || input <= 0){
cout << "Invalid move!" << endl;
goto redo;
}
input--; // Subtract 1 for array location
if(*spots[input] != 0){
cout << "Square is already being used!" << endl;
goto redo;
}
*spots[input] = 1;
}
现在,假设我输入了数字 7。它应该将 b.board[0][0] 设置为 1。但是这似乎没有发生。当我之后运行一个单元案例时, board[0][0] 似乎没有设置为 1,并且它没有反映在我的数组中。我在这里搞砸了关于指针的事情吗?