rust(二)-实现一个demo-猜谜游戏

354 阅读1分钟

猜数游戏-目标

  • 生成一个1到100的随机数
  • 提示玩家输入一个猜测
  • 猜完之后,程序会提示猜测是太小了还是太大了
  • 如果猜测正确,那么打印出一个庆祝信息,程序退出 做个项目练练手
$ cargo new guessing_game
$ cd guessing_game

生成文件目录

image.png

cargo.toml

image.png

执行 cargo run

image.png

简单的demo运行没有问题,开始写这个项目

use std::io; // prelue
use rand::Rng; //trait
use std::cmp::Ordering;
fn main() {
    // 生成一个1到100的随机数
    let secret_number = rand::thread_rng().gen_range(1, 101); // i32 u32 i64
    println!("Hello, world!");
    let mut guess = String::new();
    // 提示玩家输入一个猜测
    io::stdin().read_line(&mut guess).expect("read error");
    // io::Result Ok,Err
    let guess: u32 = match guess.trim().parse() {
        Ok(num) => num,
        Err(_) => continue,
    };
    println!("你猜测的数是:{}", guess);
    // 猜完之后,程序会提示猜测是太小了还是太大了
    match guess.cmp(&secret_number){
        Ordering::Less => println!("Too small"),
        Ordering::Greater => println!("Too big"),
        Ordering::Equal => {println!("You win"); break;},
    }
}
// 这里需要注意的点
// 1、在声名可变变量时要加关键字 mut,否则按常量处理,会报错
// 2、io::stdin 可以替换为 std:io::stdin
// 3、&mut & 引用关键字
// 4、expect 相当于 js 中的 try catch, 如果不加程序会报warning
// 5、  println!("你铺测的数是:{}", guess); 中的 {}是占位符
// 6、match 从上到下进行条件匹配
// 7、shadow特性:主要用于类型转换