如何在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
相关产品推荐
相关产品推荐

