You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:10:13