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

如何在C#的Switch-Case语句中添加Y/N确认功能?

C# 控制台文本冒险Y/N确认功能实现方案

实现思路

  • 新增通用的Y/N确认方法,兼容大小写输入,同时校验非法输入,避免用户输入其他字符时逻辑异常
  • 每个路径选择分支输出剧情描述和确认提示后,调用确认方法判断用户选择
  • 用户输入N/n时,重置控制台显示样式后重新调用路径选择方法,即可回到上一级选项列表
  • 用户输入Y/y时直接进入对应剧情逻辑即可

完整修改代码

Menu mainMenu = new Menu(prompt, options);
int selectedIndex = mainMenu.Run();

switch (selectedIndex)
{
    case 0:
        EnterTheWorld();
        break;
    case 1:
        VisitTheMemorial();
        break;
    case 2:
        TakeYourLeave();
        break;
    default:
        break;
}

// 新增通用Y/N确认方法,返回true代表用户确认,false代表取消
private bool ConfirmChoice()
{
    while (true)
    {
        char input = char.ToUpper(Console.ReadKey(true).KeyChar);
        if (input == 'Y')
        {
            return true;
        }
        if (input == 'N')
        {
            return false;
        }
        WriteLine("\n输入无效,请输入Y或N:");
    }
}

private void TakeYourLeave()
{
    WriteLine("\n你确定要退出游戏吗?(Y/N)");
    if (ConfirmChoice())
    {
        Environment.Exit(0);
    }
    else
    {
        RunMainMenu();
    }
}

private void VisitTheMemorial()
{
    Clear();
    //FILLER//
    WriteLine("按下任意键继续");
    ReadKey(true);
    RunMainMenu();
}

private void EnterTheWorld()
{
    string prompt = "你想要从哪里开启你的旅程?";
    string[] options = { "贫民窟", "荒野", "城市", "农场" };
    Menu startMenu = new Menu(prompt, options);
    int selectedIndex = startMenu.Run();
       
    BackgroundColor = ConsoleColor.White;
    switch (selectedIndex)
    {
        case 0:
            ForegroundColor = ConsoleColor.Black;
            WriteLine("\n ||贫民窟剧情简介||你确定要选择这条路径吗?(Y/N)");
            if (ConfirmChoice())
            {
                // 此处填写选择贫民窟后的剧情逻辑
                WriteLine("你踏入了鱼龙混杂的贫民窟,新的故事就此展开...");
                ReadKey();
                // 后续剧情方法调用写在此处
            }
            else
            {
                // 重置控制台颜色避免影响后续显示
                ResetColor();
                // 返回路径选择菜单
                EnterTheWorld();
            }
            break;
        case 1:
            ForegroundColor = ConsoleColor.Green;
            WriteLine("\n ||荒野剧情简介||你确定要选择这条路径吗?(Y/N)");
            if (ConfirmChoice())
            {
                WriteLine("你走进了危机四伏的荒野,新的故事就此展开...");
                ReadKey();
                // 后续剧情方法调用写在此处
            }
            else
            {
                ResetColor();
                EnterTheWorld();
            }
            break;
        case 2:
            ForegroundColor = ConsoleColor.Red;
            WriteLine("\n ||城市剧情简介||你确定要选择这条路径吗?(Y/N)");
            if (ConfirmChoice())
            {
                WriteLine("你进入了霓虹闪烁的城市,新的故事就此展开...");
                ReadKey();
                // 后续剧情方法调用写在此处
            }
            else
            {
                ResetColor();
                EnterTheWorld();
            }
            break;
        case 3:
            ForegroundColor = ConsoleColor.Yellow;
            WriteLine("\n ||农场剧情简介||你确定要选择这条路径吗?(Y/N)");
            if (ConfirmChoice())
            {
                WriteLine("你来到了宁静安逸的农场,新的故事就此展开...");
                ReadKey();
                // 后续剧情方法调用写在此处
            }
            else
            {
                ResetColor();
                EnterTheWorld();
            }
            break;
    }
}

内容的提问来源于stack exchange,提问作者Lee Shun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:27:04