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::cout
checkCollision
检查是否有任何元素不是
而不是特定元素是否不是
请为ChangeArray编写函数。我们至少可以在您添加必要信息以启用该操作时为您提供帮助。在当前状态下无法进行调试。