rust_learning/
guess.rs

1/*
2    猜数游戏
3*/
4use std::cmp::Ordering;
5use std::io;
6use rand::Rng;
7
8/// 猜数游戏主函数
9pub fn guess_number() {
10    // 游戏开始提示信息
11    println!("猜数游戏");
12    // 生成1到100之间的随机数作为秘密数字
13    let secret_number = rand::thread_rng().gen_range(1..=101);
14
15    // 主循环,处理用户的猜测
16    loop {
17        // 提示用户输入猜测
18        println!("请输入你的猜测:");
19        // 创建一个可变的字符串来存储用户的输入
20        let mut guess = String::new();
21        // 读取用户的输入,处理读取失败的情况
22        io::stdin().read_line(&mut guess).expect("读取失败");
23        // 将用户的输入转换为无符号整数,如果转换失败则继续下一次循环
24        let guess: u32 = match guess.trim().parse() {
25            Ok(num) => num,
26            Err(_) => continue,
27        };
28        // 比较用户的猜测和秘密数字,给出相应的提示
29        match guess.cmp(&secret_number) {
30            Ordering::Less => println!("猜小了"),
31            Ordering::Greater => println!("猜大了"),
32            Ordering::Equal => {
33                // 如果猜对了,结束循环
34                println!("猜对了");
35                break;
36            }
37        }
38    }
39}