C++ C++;二维阵列中的故障检测碰撞
我正在做一个简单的井字游戏。我的C++ C++;二维阵列中的故障检测碰撞,c++,debugging,C++,Debugging,我正在做一个简单的井字游戏。我的checkCollision函数有一些错误。以下是函数: void checkCollision(const int rows, const int cols, char ticTacToe [][3]) { //code to check for collision between x and o for (int row = 0; row < rows; row++) { for (int col = 0; col
checkCollision
函数有一些错误。以下是函数:
void checkCollision(const int rows, const int cols, char ticTacToe [][3])
{
//code to check for collision between x and o
for (int row = 0; row < rows; row++)
{
for (int col = 0; col < cols; col++)
{
if (ticTacToe[row][col] != '.')
{
std::cout << "Collision detected. Please try again.\n";
}
}
}
}
每次我在第一个循环后输入行和列坐标时,它都会告诉我发生了碰撞。这感觉就像是C++中数组如何工作的怪癖,但我不确定。有人能帮忙吗?看起来您可能需要特别检查
rowCordinate
,colCordinate
处的空间是否被占用(并且可能不允许用户选择该点)。如果您尝试以下方法会怎么样:
bool checkCollision(const size_t row, const size_t col, char ticTacToe [][3])
{
return ticTacToe[row][col] != '.';
}
//game loop
do {
// player 1 input
while (true) {
// get user input
std::cout << "\nPlayer one, please put in a row co-ordinate:\t";
std::cin >> rowCordinate;
std::cout << "\nPut in a column co-ordinate:\t";
std::cin >> colCordinate;
// if the user selected a valid spot, change the array and move on
if (!checkCollision(rowCordinate, colCordinate, ticTacToe)) {
changeArray(numRows, numCols, rowCordinate, colCordinate, ticTacToe, playerTwo);
break;
}
// otherwise print a message and keep looping
std::cout << "Collision detected. Please try again.\n";
}
// player 2 input
...
然后在主循环中,您需要将用户输入部分更改为以下内容:
bool checkCollision(const size_t row, const size_t col, char ticTacToe [][3])
{
return ticTacToe[row][col] != '.';
}
//game loop
do {
// player 1 input
while (true) {
// get user input
std::cout << "\nPlayer one, please put in a row co-ordinate:\t";
std::cin >> rowCordinate;
std::cout << "\nPut in a column co-ordinate:\t";
std::cin >> colCordinate;
// if the user selected a valid spot, change the array and move on
if (!checkCollision(rowCordinate, colCordinate, ticTacToe)) {
changeArray(numRows, numCols, rowCordinate, colCordinate, ticTacToe, playerTwo);
break;
}
// otherwise print a message and keep looping
std::cout << "Collision detected. Please try again.\n";
}
// player 2 input
...
//游戏循环
做{
//播放器1输入
while(true){
//获取用户输入
标准:cout>rowCordinate;
标准:cout>colCordinate;
//如果用户选择了有效的点,请更改阵列并继续
如果(!检查碰撞(rowCordinate、colCordinate、ticTacToe)){
更改数组(numRows、numCols、rowCordinate、colCordinate、ticTacToe、playerTwo);
打破
}
//否则,打印消息并保持循环
std::coutcheckCollision
检查是否有任何元素不是。
而不是特定元素是否不是。
请为ChangeArray编写函数。我们至少可以在您添加必要信息以启用该操作时为您提供帮助。在当前状态下无法进行调试。