我正在从事基于文本的冒险。我要创建的第一部分涉及六个房间(为了节省时间,我没有所有房间)。游戏开始时,您将被放置在一个随机的房间中,然后,您选择要进入下一个房间。
我遇到的问题是检查输入是否不是整数,然后使用循环请求另一个输入。现在,我读过的类似问题都说要使用cin.fail()
或isdigit(variable)
。我已经尝试了两者,但代码仍然无法正常工作。当我运行程序并使用任一字母输入字母时,不允许我提供其他输入。
到目前为止,我的代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
// Variables
bool game_play = true;
bool game_start = true;
int room_start;
// Loops after game start and allows user to choose room
while (game_play == true) {
if (game_start == true) {
srand((unsigned int)time(NULL));
room_start = rand() % 3 + 1;
game_start = false;
}
// This code doesn't accept another input after running
else {
cin >> room_start;
while (cin.fail()) {
cin.clear();
cin >> room_start;
}
}
switch (room_start) {
case 1 :
cout << "You are in room 1";
break;
case 2 :
cout << "You are in room 2";
break;
case 3 :
cout << "You are in room 3";
break;
case 4 :
game_play = false;
break;
default :
cout << "The room doesn't exist.";
break;
}
}
return 0;
}