长沙网站优化掌营天下,竞价代运营公司哪家好,社交网站建设流程,设计相关的网站如果你正在学习Rust#xff0c;并且想通过一个有趣的小项目来巩固所学知识#xff0c;那么“猜数字游戏”是一个绝佳的选择#xff01;这个游戏的逻辑非常简单#xff1a;程序会随机生成一个数字#xff0c;玩家需要猜测这个数字是多少#xff0c;程序会告诉玩家猜大了还… 如果你正在学习Rust并且想通过一个有趣的小项目来巩固所学知识那么“猜数字游戏”是一个绝佳的选择这个游戏的逻辑非常简单程序会随机生成一个数字玩家需要猜测这个数字是多少程序会告诉玩家猜大了还是猜小了直到猜中为止。 通过这个项目你将学习到Rust的以下核心概念
CargoRust的构建工具和包管理器。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 buildCargo会自动下载并编译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!(猜数字游戏);// 生成一个1到100之间的随机数let secret_number rand::thread_rng().gen_range(1..100);loop {println!(请输入你的猜测);// 创建一个可变的字符串变量来存储用户的输入let mut guess String::new();// 读取用户输入io::stdin().read_line(mut guess).expect(读取输入失败);// 将输入的字符串转换为数字let guess: u32 match guess.trim().parse() {Ok(num) num,Err(_) {println!(请输入一个有效的数字);continue;}};println!(你猜的是{}, guess);// 比较猜测的数字和生成的数字match guess.cmp(secret_number) {Ordering::Less println!(太小了),Ordering::Greater println!(太大了),Ordering::Equal {println!(恭喜你猜对了);break;}}}
}4. 代码解析
1Cargo
我们使用Cargo创建项目并通过Cargo.toml管理依赖如rand库。
2let let用于声明变量。例如 let secret_number rand::thread_rng().gen_range(1..100);这里声明了一个不可变的变量secret_number存储生成的随机数。 如果要声明可变变量需要使用mut关键字 let mut guess String::new();3match
match用于模式匹配。例如match guess.cmp(secret_number) {Ordering::Less println!(太小了),Ordering::Greater println!(太大了),Ordering::Equal {println!(恭喜你猜对了);break;}
}这里根据guess和secret_number的比较结果执行不同的操作。
4method: 方法
方法是与特定类型关联的函数。例如guess.trim().parse()trim()是String类型的方法用于去除字符串两端的空白字符。
5fn: 函数
函数是可重用的代码块。例如fn main() {// 主函数
}main函数是程序的入口点。
6使用外部crate
我们通过rand库生成随机数let secret_number rand::thread_rng().gen_range(1..100);5. 运行游戏
在项目目录中运行以下命令
cargo run然后根据提示输入你的猜测看看能否猜中随机生成的数字 6. 总结
通过这个简单的猜数字游戏我们学习了Rust的以下核心概念
Cargo管理项目和依赖。let声明变量。match模式匹配。method 方法与类型关联的函数。fn 函数可重用的代码块。外部crate引入第三方库。
希望这个小项目能帮助你更好地理解Rust的基础知识。接下来你可以尝试扩展这个游戏比如增加难度、记录猜测次数等。Happy Coding 参考资源
Rust官方猜数字游戏教程Rust官方文档