C++井字游戏不显示X字符

C++ Tic Tac toe game not showing X character

本文关键字:显示 字符 游戏 C++      更新时间:2023-10-16

新手程序员在这里。试图制作一个井字游戏。到目前为止一切正常,除了字符 X 没有出现。在 for 循环中,我相信我有问题,但我似乎找不到任何问题。请帮忙,任何批评都非常感谢。好坏。谢谢。

void playgame() {
    std::string input;
    while (true) {
        std::cout << "Go player one" << std::endl;
        getline (std::cin, input);
        if (input != " ") {
            char entered = input.c_str ()[0];
            if (entered >= '1' && entered <= '9') {
                int entered_num = entered - 0;
                int index = entered_num - 1;
                int row = index / 3;
                int col = index % 3;
                char grid_position = map[row][col];
                if (grid_position == 'X' || grid_position == 'O') {
                    std::cout << "Space taken. Try again" << std::endl;
                } else {
                    map[row][col] = (char) 'X';
                    break;
                }
            } else {
                std::cout << "Only numbers 1 - 9" << std::endl;
            }
        } else {
            std::cout << "Have to enter something, try again" << std::endl;
        }

    }
}
void generateGrid() {
    int number = 1;
    for (int x = 0; x < GRID_SIZE; x++) {
        for (int y = 0; y < GRID_SIZE; y++) {
            map[x][y] = std::to_string (number).c_str ()[0];
            number += 1;
        }
    }
}
void tictacToeMap() {

    std::cout << std::endl;
    for (int x = 0; x < GRID_SIZE; x++) {
        for (int y = 0; y < GRID_SIZE; y++) {
            std::printf (" %c ", map[x][y]);
        }
        std::cout << std::endl;
    }
}

TicTacToe() {
    generateGrid ();
    while (true) {
        tictacToeMap ();
        playgame ();
    }
}
};

int main() {
    TicTacToe tic;
    return 0;

}
            int entered_num = entered - 0;

应该是:

            int entered_num = entered - '0';

要将'1'转换为 1,您需要减去"0"(我们用来表示数字零的字符),而不是 0(数字零)。减去零不做任何事情。