如果你正在学习Rust,并且想通过一个有趣的小项目来巩固所学知识,那么“猜数字游戏”是一个绝佳的选择!这个游戏的逻辑非常简单:程序会随机生成一个数字,玩家需要猜测这个数字是多少,程序会告诉玩家猜大了还是猜小了,直到猜中为止。
通过这个项目,你将学习到Rust的以下核心概念:
- Cargo:Rust的构建工具和包管理器。
- let:用于声明变量。
- match:用于模式匹配。
- method:方法,与特定类型关联的函数。
- fn:函数,可重用的代码块。
- crate:如何引入第三方库。
让我们一步步来实现这个游戏吧!
1. 游戏逻辑
猜数字游戏的逻辑非常简单:
- 程序随机生成一个1到100之间的数字。
- 玩家输入一个数字作为猜测。
- 程序比较玩家的猜测和生成的数字:
- 如果猜对了,游戏结束,程序恭喜玩家。
- 如果猜错了,程序会告诉玩家猜大了还是猜小了,然后让玩家继续猜。
- 重复步骤2和3,直到玩家猜中为止。
2. 创建项目
首先,使用Cargo创建一个新项目:
cargo new guessing_game
cd guessing_game
这会生成一个名为guessing_game
的项目,并自动创建Cargo.toml
和src/main.rs
文件。
3. 编写代码
打开src/main.rs
文件,开始编写代码。
(1)引入外部crate
我们需要使用rand
库来生成随机数。在Cargo.toml
文件中添加以下内容:
[dependencies]
rand = "0.8"
然后运行cargo build
,Cargo会自动下载并编译rand
库。
也可以直接在命令行中使用命令cargo add rand
来添加最新版本的rand
包。
使用最新版本的包时可能会遇见提示某些函数已过期的提示,可自行修改或者参考本专栏源码仓库Waitfish/rust_example。
thread_rng
和gen_range
在新版本的rand
包中已经改名,根据提示改成新的包名即可。
(2)编写主程序
在src/main.rs
中编写以下代码:
use rand::Rng;
use std::cmp::Ordering;
use std::io;
fn main() {
println!("猜数字游戏!"