GGB13T 2026-01-24 19:18 采纳率: 0%
浏览 10

蛋仔派对揪出捣蛋鬼C++程序


#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int main() {
    // 开局
    cout << "【盲盒工厂大厅】\n"
         << "18颗蛋刚落地就炸开了锅,8号年糕蛋揣着两坨年糕追着人跑,12号功夫蛋扎着马步在角落摆pose,3号冰雕蛋缩在货架后暗中观察。\n\n"
         << "8号(年糕蛋,好蛋):哥!吃口年糕呗!吃了我能知道你是不是好人,比真心蛋验人还靠谱!\n\n"
         << "5号(胆小蛋,好蛋):别过来!我胆小!你一贴我我就应激,万一你是坏蛋刀我,全局都得响警报!\n\n"
         << "12号(功夫蛋,中立):呔!孽障!想欺负弱小?看我化劲反击!\n\n";
    system("clear");

    // 第一轮互动
    cout << "【盲盒工厂大厅】\n"
         << "8号(年糕蛋):不是...我是好蛋啊!你这姿势比显眼蛋还显眼,坏蛋一眼就盯上你了!\n\n"
         << "3号(冰雕蛋,坏蛋):等会儿关灯我冻住5号,你们趁机刀8号,完美!\n\n"
         << "15号(潜行蛋):收到!17号你去关灯,制造混乱。\n\n"
         << "17号(炸蛋):没问题!顺便给9号贴个烟花!\n\n";
    system("clear");

    // 关灯混乱
    cout << "【盲盒工厂大厅】\n"
         << "(突然关灯,全场漆黑)\n\n"
         << "5号(胆小蛋):尖叫!关灯了!救命啊!\n\n"
         << "3号(冰雕蛋):咔嚓!5号冻住!都给我减速!\n\n"
         << "15号(潜行蛋):再见了,年糕贩子!\n\n"
         << "12号(功夫蛋):来得好!(一拳击倒15号)哎哟!我的蛋头!\n\n";
    system("clear");

    // 指认坏蛋+投票
    cout << "【盲盒工厂大厅】\n"
         << "(灯光亮起)\n\n"
         << "9号(孤勇蛋):谁给我贴的烟花?5号咋成冰雕了!\n\n"
         << "8号:是3号!15号隐身刀我被12号反杀了,17号肯定是同伙!\n\n"
         << "7号(检修蛋):我看到17号从电力室出来,是他关的灯!\n\n"
         << "(投票环节,17号以12票出局)\n\n"
         << "17号(炸蛋):3号你坑队友!我诅咒你们被年糕糊一脸!\n\n";
    system("clear");

    // 结局
    cout << "【盲盒工厂大厅】\n"
         << "8号(年糕蛋):(把年糕贴在3号身上)别装了!你身上冒黑气了!\n\n"
         << "3号(冰雕蛋):慌了!这年糕咋扯不掉!\n\n"
         << "6号(伪装蛋):完了!露馅了!\n\n"
         << "系统提示:本局对局结束,好蛋阵营获胜!功夫蛋达成「守护成就」!\n\n"
         << "🎉 蛋仔派对18人局揪出捣蛋鬼 完整对局结束!🎉" << endl;

    return 0;
}

这段代码是怎么回事?
为什么一个剧情过后下一个剧情的时候,直接代码运行结束。

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-01-24 19:24
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提供的代码是一个模拟《蛋仔派对》游戏中“揪出捣蛋鬼”剧情的C++程序,用于展示一段故事情节。然而,这段代码在运行时并不会像预期那样逐段显示剧情,而是会在执行完 system("clear"); 后直接结束。这是由于以下原因:


    一、问题分析

    1. system("clear"); 的作用
      在 Unix/Linux 系统中,system("clear"); 会清屏(即清除终端中的所有输出),但在 Windows 中是 system("cls");。这会导致当前屏幕内容被清空。

    2. 为什么代码在清屏后直接结束?

      • 代码中每一段剧情结束后都调用 system("clear"); 来清屏。
      • 但清屏之后没有再输出任何内容,因此程序就结束了。
      • 所以你看到的是:第一段剧情输出后,屏幕清空,然后程序结束,没有任何后续剧情。
    3. 没有等待用户输入
      程序没有使用 cin 或其他方式让用户输入或确认,导致程序自动运行完毕。


    二、解决方案

    为了实现你期望的“剧情分段展示”,需要做以下修改:

    修改目标

    • 每段剧情结束后暂停,等待用户按回车键继续。
    • 不要清屏,或者清屏后继续输出下一段剧情。

    三、修改后的代码(详细说明)

    #include <iostream>
    #include <string>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
        // 开局
        cout << "【盲盒工厂大厅】\n"
             << "18颗蛋刚落地就炸开了锅,8号年糕蛋揣着两坨年糕追着人跑,12号功夫蛋扎着马步在角落摆pose,3号冰雕蛋缩在货架后暗中观察。\n\n"
             << "8号(年糕蛋,好蛋):哥!吃口年糕呗!吃了我能知道你是不是好人,比真心蛋验人还靠谱!\n\n"
             << "5号(胆小蛋,好蛋):别过来!我胆小!你一贴我我就应激,万一你是坏蛋刀我,全局都得响警报!\n\n"
             << "12号(功夫蛋,中立):呔!孽障!想欺负弱小?看我化劲反击!\n\n";
        cout << "\n按回车键继续..." << endl;
        cin.get(); // 等待用户输入
        system("clear");
    
        // 第一轮互动
        cout << "【盲盒工厂大厅】\n"
             << "8号(年糕蛋):不是...我是好蛋啊!你这姿势比显眼蛋还显眼,坏蛋一眼就盯上你了!\n\n"
             << "3号(冰雕蛋,坏蛋):等会儿关灯我冻住5号,你们趁机刀8号,完美!\n\n"
             << "15号(潜行蛋):收到!17号你去关灯,制造混乱。\n\n"
             << "17号(炸蛋):没问题!顺便给9号贴个烟花!\n\n";
        cout << "\n按回车键继续..." << endl;
        cin.get();
        system("clear");
    
        // 关灯混乱
        cout << "【盲盒工厂大厅】\n"
             << "(突然关灯,全场漆黑)\n\n"
             << "5号(胆小蛋):尖叫!关灯了!救命啊!\n\n"
             << "3号(冰雕蛋):咔嚓!5号冻住!都给我减速!\n\n"
             << "15号(潜行蛋):再见了,年糕贩子!\n\n"
             << "12号(功夫蛋):来得好!(一拳击倒15号)哎哟!我的蛋头!\n\n";
        cout << "\n按回车键继续..." << endl;
        cin.get();
        system("clear");
    
        // 指认坏蛋+投票
        cout << "【盲盒工厂大厅】\n"
             << "(灯光亮起)\n\n"
             << "9号(孤勇蛋):谁给我贴的烟花?5号咋成冰雕了!\n\n"
             << "8号:是3号!15号隐身刀我被12号反杀了,17号肯定是同伙!\n\n"
             << "7号(检修蛋):我看到17号从电力室出来,是他关的灯!\n\n"
             << "(投票环节,17号以12票出局)\n\n"
             << "17号(炸蛋):3号你坑队友!我诅咒你们被年糕糊一脸!\n\n";
        cout << "\n按回车键继续..." << endl;
        cin.get();
        system("clear");
    
        // 结局
        cout << "【盲盒工厂大厅】\n"
             << "8号(年糕蛋):(把年糕贴在3号身上)别装了!你身上冒黑气了!\n\n"
             << "3号(冰雕蛋):慌了!这年糕咋扯不掉!\n\n"
             << "6号(伪装蛋):完了!露馅了!\n\n"
             << "系统提示:本局对局结束,好蛋阵营获胜!功夫蛋达成「守护成就」!\n\n"
             << "🎉 蛋仔派对18人局揪出捣蛋鬼 完整对局结束!🎉" << endl;
    
        return 0;
    }
    

    四、关键修改点

    1. 添加 cin.get(); 等待用户输入

      • 每段剧情后加入 cin.get();,让用户按回车键继续。
      • 这样可以控制程序的流程,避免自动结束。
    2. 移除不必要的 system("clear");(可选)

      • 如果你希望保留清屏效果,可以保留它。
      • 但如果希望保持连续性,可以删除 system("clear");
    3. 优化用户体验

      • 每次清屏后添加提示信息,如 "按回车键继续...",提升交互感。

    五、总结

    原代码的问题在于:

    • 没有等待用户输入,导致程序自动运行结束。
    • 清屏后没有输出新内容,导致看起来像是程序结束了。

    解决方法是:

    • 在每段剧情后加入 cin.get();,等待用户按键。
    • 可选地添加提示语,提高用户体验。

    如果你想要更复杂的交互(比如选择、分支剧情),可以进一步扩展这个程序,例如使用 if-elseswitch-case 实现不同选择路径。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日