C++新手求助:如何在cin语句执行后回到指定代码行?
C++文本冒险:让操作菜单重复显示的解决方法
核心思路是用循环结构包裹菜单显示和输入逻辑,不用重复写代码,就能让玩家选完Inspect后自动回到菜单。这里用do-while循环最适合,它会先执行一次菜单,再判断是否重复执行。
修改后的完整代码示例:
#include <iostream> using namespace std; int main() { // 定义状态变量,这里假设初始值 int health = 100; int defence = 20; int action; // do-while循环:至少执行一次,之后重复直到主动退出 do { // 显示状态和操作菜单 cout << "Health:" << health << " Defence:" << defence << "\n"; cout << "Actions: 1. Inspect. 2. Attack. 3. Defend\n"; cin >> action; // 用switch处理不同选择 switch(action) { case 1: cout << " In front of you are 2 drunkards with knives. Not particularly wise, but fairly deadly.\n"; // 无需额外操作,循环会自动回到开头 break; case 2: cout << "You lunge at the drunkards, landing a solid hit!\n"; // 在这里添加攻击逻辑(比如减少敌人血量、玩家受伤等) // 如果战斗结束,可加return 0;或break退出循环 break; case 3: cout << "You hunker down, raising your guard - your defence spikes!\n"; // 添加防御逻辑(比如临时提升defence值) break; default: cout << "Invalid choice! Please enter 1, 2 or 3.\n"; } } while(true); // 无限循环,直到添加战斗结束的判断条件(比如敌人死亡) return 0; }
关键说明:
do-while循环会自动重复执行大括号内的代码,包括显示状态、菜单和处理输入。选Inspect(1)后,代码执行完输出描述就会回到循环开头,重新显示菜单。- 你之前想的用变量配合循环的思路没问题,但不需要额外的Inspect变量——直接把需要重复的逻辑包进循环就行。如果要让战斗在某个条件结束(比如敌人血量归0),把
while(true)改成while(enemy_health > 0)这类条件即可。 - 新增的
default分支是处理玩家输入无效数字的情况,避免程序逻辑混乱。
内容的提问来源于stack exchange,提问作者calligreat
相关产品推荐
相关产品推荐

