综合练习:文字小游戏
这是什么:一个完整可玩的猜数字小游戏——电脑悄悄想一个 1~100 的数,你来猜,它只告诉你"大了"还是"小了"。
为什么用:零件都齐了:变量、循环、方法、Random、用户输入,可它们还各干各的。这一章把它们拼成一个完整程序,让你第一次看到"学过的知识能变成能玩的东西"。
如何用:先把游戏拆成五步流程,再用循环、条件和方法把每一步写成代码。
破题:把游戏拆成步骤
别急着看代码,先想想自己玩这个游戏的流程:
- 电脑想一个数 →
random.Next(1, 101) - 玩家输入一个数 →
Console.ReadLine() - 输入的不是数字?提示重来 →
int.TryParse+continue - 比大小给提示 →
GetHint方法 - 猜中就结束 →
if+break
把人话翻译成代码,就是编程的全部秘密——下面的代码不过是把这五步排好队。
完整代码
新建项目 dotnet new console -o GuessNumber,把 Program.cs 整个替换成:
var random = new Random();
int answer = random.Next(1, 101); // 想一个 1~100 的数
int count = 0; // 记录猜了几次
Console.WriteLine("我想好了一个 1~100 的数,猜猜看!");
while (true)
{
Console.Write("你猜:");
string? input = Console.ReadLine();
if (!int.TryParse(input, out int guess))
{
Console.WriteLine("请输入一个整数哦~");
continue; // 这轮不算,回到"你猜:"
}
count++;
Console.WriteLine(GetHint(guess, answer));
if (guess == answer)
{
Console.WriteLine($"答对了!你一共猜了 {count} 次。");
break; // 猜中,跳出循环
}
}
string GetHint(int guess, int answer)
{
if (guess < answer) return "小了,往大猜!";
if (guess > answer) return "大了,往小猜!";
return "猜对了!🎉";
}
运行效果
我想好了一个 1~100 的数,猜猜看!
你猜:abc
请输入一个整数哦~
你猜:50
小了,往大猜!
你猜:75
大了,往小猜!
你猜:62
猜对了!🎉
答对了!你一共猜了 3 次。
(随机数每次不同,你的过程和次数会和上面不一样。)
代码里都是老朋友
| 代码 | 哪章学的 | 干什么 |
|---|---|---|
random.Next(1, 101) |
常用类库 | 随机想一个 1~100 的数 |
while (true) + break |
流程控制 | 一直猜,直到猜中才停 |
int.TryParse(input, out int guess) |
数组与方法 | 转换失败不报错,用 out 带出结果 |
GetHint(...) |
数组与方法 | 把"给提示"装进方法,主流程更清爽 |
continue |
流程控制 | 跳过本轮,直接回到"你猜:" |
string? 里的 ? 表示"用户可能什么都没输",配合 TryParse 正好稳稳接住,不会崩。看不懂哪一行,就回对应章节再看一眼——代码不是背出来的,是查出来的。
记忆口诀
Random 想数,while 死循环;TryParse 挡乱输,GetHint 管提示,break 定输赢。
动手改
- 把范围改成 1~1000,试试你的"对半猜"要几轮
- 加机会限制:最多猜 7 次,超了就公布答案并结束
- 猜中后问"再来一局吗?(y/n)",输入 y 就重开一局
C# 基础毕业 🎉 下一站 面向对象,让代码学会"造东西"——类与对象是 C# 的灵魂 🐸