c++ - Tic Tac Toe游戏,用C++发行,具有再次播放功能

标签 c++

我是一个非常入门的人,这个问号是针对井字游戏的一个问题。当我完成第一个游戏时,该功能起作用。它问我是否要再玩一次。但是在第二局结束后,程序结束,告诉我“玩家x赢了”,而没有问是或否的问题。您能帮我解决这个问题吗?
我将只插入该项目的特定部分,因为该站点不允许我全部插入。如有必要,我将插入项目的其他部分。

void askPlayAgain(string firstPlayer, string secondPlayer)
{

    char option;
    do {
        cout << "Play again? Y for yes, N for no" << endl;
        cin >> option;
        break;
    } while (option != 'Y' || option != 'y' || option != 'N' || option != 'n');

    if (option == 'Y' || option == 'y') {
        initializeTable();
        startGame(firstPlayer, secondPlayer);
    }
    else {
        exit(0);
    }
}

最佳答案

让我们考虑一下您的while条件-甚至只是那些是:

while (option != 'Y' || option != 'y')
在什么情况下这可能是错误的?使用或,只有在两个条件都为假的情况下才会发生。但是,一个字符不可能既是“Y”又是“y”。
相反,您想要AND在这里:
while (option != 'Y' && option != 'y' && option != 'N' && option != 'n');
甚至更清洁的可能是:
std::string good_inputs = "YyNn";
do {
    // ...
} while (good_inputs.find(option) == std::string::npos);
但是,都不会运行!您的while循环中有一个break,因此永远不会检查该条件。我不确定您的想法在那里,但是应该删除该想法。

关于c++ - Tic Tac Toe游戏,用C++发行,具有再次播放功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63490145/

相关文章:

c++ - 如何将向后打印数组的程序转换为打印第 N 个字符的递归程序?

c++ - 从 C++ 中的集合中删除最后一个元素

c++ - 以下方法获取绝对值的速度是多少?

具有智能指针的 C++11 复合模式

c++ - Gtk::Main 和 Gtk::Application::create 之间有什么区别?

c++ - Qt 中是否有与 MFC VERIFY() 等效的函数?

c++ - 接收到输入时 OpenGL 重绘场景

c++ - 实现类似值的复制赋值运算符

c++ - 如何在 C++ 中混合原子和非原子操作?

c++ - MinGW 无法编译,错误 1