C#数字猜谜游戏如何实现猜测值与目标值远近提示及重新输入功能
C#猜数字程序功能修改方案
实现思路
- 新增
lastDiff变量存储上一次有效猜测与目标值的绝对差值,用于对比两次猜测的距离变化 - 替换
int.Parse为int.TryParse校验输入合法性,避免用户输入非数字时程序崩溃 - 有效猜测未命中时,先提示猜测值偏大还是偏小;从第二次有效猜测开始,额外对比两次差值,提示距离目标偏近还是偏远
- 增加清屏前的停顿操作,保证用户能完整看到提示信息
- 原有while循环天然支持重复输入,仅在猜对时才退出循环
修改后完整代码
using System; namespace higherlower_guesser { class Program { static void Main(string[] args) { Random rnd = new Random(); int randomNumber = rnd.Next(0, 100); bool answerCheck = false; int guessAttempts = 0; // 记录上一次猜测的差值,初始设为-1标识还没有历史猜测 int lastDiff = -1; while (!answerCheck) { Console.Clear(); Console.WriteLine("请输入0-99之间的整数进行猜测"); string input = Console.ReadLine(); // 校验输入合法性 if (!int.TryParse(input, out int enteredValue) || enteredValue < 0 || enteredValue >= 100) { Console.WriteLine("输入无效,请输入0到99之间的整数"); Console.ReadKey(); continue; } // 有效猜测才累计次数 guessAttempts++; // 计算当前猜测的绝对差值 int currentDiff = Math.Abs(enteredValue - randomNumber); if (enteredValue == randomNumber) { Console.WriteLine("恭喜你猜对了!目标数字是{0},你总共猜了{1}次", randomNumber, guessAttempts); answerCheck = true; } else { // 先提示偏大还是偏小 if (enteredValue > randomNumber) { Console.Write("你猜的数偏大"); } else { Console.Write("你猜的数偏小"); } // 不是第一次猜测的话提示距离变化 if (lastDiff != -1) { if (currentDiff < lastDiff) { Console.WriteLine(",相比上一次更接近目标了"); } else if (currentDiff > lastDiff) { Console.WriteLine(",相比上一次离目标更远了"); } else { Console.WriteLine(",和上一次距离目标的距离一样"); } } else { Console.WriteLine(); } // 更新上一次差值 lastDiff = currentDiff; Console.WriteLine("按任意键继续重试"); Console.ReadKey(); } } } } }
内容的提问来源于stack exchange,提问作者Mindo
相关产品推荐
相关产品推荐

