在编程的世界里,小游戏不仅仅是娱乐的源泉,更是学习新技能、巩固旧知识的绝佳方式。今天,我们将一起动手实现一个简单而富有乐趣的数字猜谜游戏,使用C#语言编写。这个游戏将锻炼我们的逻辑思维、循环控制以及字符串处理能力。
一、游戏概述
游戏的目标很简单:计算机随机生成一个1到100之间的整数,玩家需要尽可能少地猜测这个数字,直到猜中为止。每次猜测后,游戏会给出提示,告诉玩家是猜大了、猜小了还是猜对了。如果玩家在三次机会内未能猜中,则游戏结束,并提示玩家重新开始或退出游戏。
二、核心代码解析
为了实现这个游戏,我们需要编写两个主要的部分:
-
IsNumeric函数:这个函数负责检查用户输入是否为纯数字。它通过遍历输入字符串的每个字符,并检查它们是否都在'0'到'9'的范围内来实现。
-
Main函数:这是游戏的主体部分,包含了游戏的主要逻辑。首先,它使用
Random类生成一个随机数作为答案。然后,它进入一个无限循环,等待用户输入猜测的数字。根据用户的输入,游戏会给出相应的提示,并动态调整猜测的范围。如果用户在三次机会内猜中数字,则提示成功并继续等待用户是否想继续游戏(虽然在这个示例中,我们保持了一个无限循环)。
三、代码亮点
- 字符串到数字的转换:使用
Convert.ToInt32(str)将用户输入的字符串转换为整型,以便进行数值比较。 - 范围动态调整:根据用户的猜测,游戏动态地调整猜测范围,以减少猜测次数。
- 异常处理:虽然不是直接体现在代码中,但考虑到用户体验,可以在实际项目中加入对非数字输入的异常处理。
四、代码示例
using System;
class Program
{
// 判断字符串是否为纯数字
static bool IsNumeric(string str)
{
for (int i = 0; i < str.Length; i++)
{
if (str[i] < '0' || str[i] > '9')
{
return false;
}
}
return true;
}
static void Main(string[] args)
{
// 进入无限循环,直到用户通过某种方式(如外部中断)退出
while (true)
{
// 系统随机生成一个数字
Random rnd = new Random(); // 注意:这里每次循环都创建了一个新的Random实例,对于快速连续调用可能不是最佳选择
int answer = rnd.Next(1, 101);
// 定义猜测的范围
int i = 1;
int j = 100;
// count变量为所玩局数
int count = 0;
while (true)
{
// 给定范围,利用i和j可以动态修改范围
Console.WriteLine($"请输入猜测的{i}-{j}的值(或输入非数字字符退出当前循环):");
string str = Console.ReadLine();
// 判断是否为纯数字字符串
if (!IsNumeric(str))
{
Console.WriteLine("请输入有效的数字!");
continue; // 如果输入不是数字,则继续下一次循环
}
// 若为纯数字字符串则将字符串转换为整型
int num = Convert.ToInt32(str);
// 判断输入数字是否超出给定范围
if (num > j || num < i)
{
Console.WriteLine("请输入正确范围的数字!");
}
else
{
// 输入符合范围则比较大小,并将范围动态更改
if (num > answer)
{
Console.WriteLine("你猜大了!");
j = num - 1; // 更新上界以排除已猜测的数字
count++;
}
else if (num < answer)
{
Console.WriteLine("你猜小了!");
i = num + 1; // 更新下界以排除已猜测的数字
count++;
}
else if (num == answer)
{
Console.WriteLine("你猜对了!请进入下一关或按Ctrl+C退出游戏。");
break; // 退出内层循环
}
// 局数到达三局时提示机会用完了,结束当前猜测循环
if (count >= 3)
{
Console.WriteLine("你机会用完啦!请下次再试或重新开始游戏。");
break; // 退出内层循环
}
}
}
// 这里可以添加一些代码来询问用户是否想继续游戏,但根据要求,我们保持无限循环
// 例如:Console.WriteLine("是否想继续游戏?(y/n):");
// 然后根据用户输入决定是否退出外层循环
}
}
}
五、结语
通过这个小项目,我们不仅学习了C#语言的一些基础知识,如循环控制、条件判断、字符串处理等,还体会到了编程带来的乐趣。希望这个简单的数字猜谜游戏能够激发你对编程的更多兴趣,并鼓励你继续探索编程的无限可能。

被折叠的 条评论
为什么被折叠?



