C++ Academy · 课时

数字猜谜游戏

使用随机数实现一个小型交互式数字猜谜游戏

第 3 / 4 课14 个步骤

数字猜谜游戏 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。

游戏计划

程序会选择 1..100 范围内的一个秘密数字。用户进行猜测,程序会提示“太高”或“太低”。在限定的尝试次数内猜中,或猜对数字时即可获胜。

所需头文件

用于随机数和输入/输出。

#include <iostream>
#include <random>
#include <string>

生成秘密数字

使用现代的 <random> 工具。只进行一次播种。

std::random_device rd;
std::mt19937 engine(rd());
std::uniform_int_distribution<int> dist(1, 100);
int secret = dist(engine);

主循环

提示、读取、比较,直到猜对为止。

int guess;
int attempts = 0;
while (true) {
    ++attempts;
    std::cout << "Guess (1-100): ";
    if (!(std::cin >> guess)) break;
    if (guess == secret) {
        std::cout << "Got it in " << attempts << " tries\n";
        break;
    }
    std::cout << (guess < secret ? "too low" : "too high") << "\n";
}

限制尝试次数

添加最大尝试次数,让游戏更具挑战性。

const int MAX = 10;
if (attempts >= MAX) {
    std::cout << "Out of tries! It was " << secret << "\n";
    break;
}

验证输入

如果用户输入非数字内容,cin 就会进入失败状态。请妥善恢复。

if (!(std::cin >> guess)) {
    std::cin.clear();
    std::cin.ignore(10000, '\n');
    std::cout << "Please enter a number\n";
    continue;
}

超出范围的猜测

在计入尝试次数之前,拒绝 1..100 范围之外的数字。

if (guess < 1 || guess > 100) {
    std::cout << "Out of range\n";
    --attempts;     // not a real attempt
    continue;
}

重新游戏循环

游戏结束后,询问用户是否想再玩一次。

std::cout << "Play again? (y/n): ";
char reply;
std::cin >> reply;
if (reply != 'y') break;

跟踪统计信息

在多局游戏之间保留总计——最佳得分、平均尝试次数和总胜场数。

int wins = 0;
int bestAttempts = INT_MAX;
// update inside the win branch

自定义范围

让用户选择简单(1..10)、中等(1..100)或困难(1..1000)模式,并相应调整 dist。

提示系统

可选功能:在多次猜错后缩小范围。“它至少是 40。”

拆分为函数

重构为 generateSecret()、readGuess()、playRound() 和 main()。每个函数只负责一件事。

快速检查

现代 C++ 随机数需要哪些头文件包含序列?

回顾

猜数字游戏将随机数生成、输入验证、循环和游戏状态结合在一起。请将代码重构为小型函数,并添加重新游戏、统计信息和难度设置来完善体验。

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
51
课程
203

常见问题解答

「数字猜谜游戏」课时是免费的吗?

是的 — 「数字猜谜游戏」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。

「数字猜谜游戏」这节课中我会学到什么?

使用随机数实现一个小型交互式数字猜谜游戏 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C++ Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「数字猜谜游戏」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C++ Academy 课中编写并运行代码吗?

能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 构建一个简单的命令行计算器
  2. 读取和写入 CSV 文件
  3. 数字猜谜游戏
  4. 单词频率统计器
← 返回 C++ Academy