rust语言写一个猜字游戏

这次代码编写设计到了很多内容,主要的内容已经在代码中写了注释,多多练习就能掌握这门编程语言

use std::io;//使用标准库
use rand::Rng;
use std::cmp::Ordering;//枚举类型,里面有三种结果
fn main(){//函数入口
    println!("*****猜数字*****");//宏
    let secret_number = rand::thread_rng().gen_range(1, 10);//thread_rng()是随机数生成器
   // println!("随机数的值为:{}",secret_number);
    loop {   
    //声明一个变量使用关键字let,mut表示变量可以被修改,guess表示变量名,后面的String::new()表示新字符串,new()可以理解为关联函数
        let mut guess= String::new();
    //调用标准库中的stdin()函数中的用法read_line(),对存储在guess中值进行读取,该函数会有两个返回值,{ok,err},如果读取出错,就会使用expect停止运行。
        io::stdin().read_line(&mut guess).expect("读取出错啦");
    //“{}”中括号是占位符,和c语言中的%d相似
    //这是对于guess复用的一个变量转换,将i32的数字转化为u32,后面涉及到了match函数的用法
    //将解析的数据的结果进行返回,如果是ok就将值返回给result这个枚举类型,如果是错误的数据类型,就继续后续代码
        let guess:u32 = match guess.trim().parse(){
            Ok(num)=>num,
            Err(_)=>continue,
        };
        println!("我猜的数是{}",guess);
//对guess和secret_number进行比较,然后执行相应的结果
        match guess.cmp(&secret_number) {
            Ordering::Less =>println!("太小了"),
            Ordering::Greater =>println!("太大了"),
            Ordering::Equal => {println!("恭喜你猜对了");
            break;
        },
        }
    }    
    
}

接下来说一些和逻辑有关的tip:

1.被猜的随机数不可以随这每一次循环而改变,应该数一轮循环结束(也就是当你结束游戏取得胜利后才可以发生改变),应该定义在循环外。

2.在调试过程中随机数可以输出到控制台,但是在设计及游戏中不需要打印。

3.在循环过程中的结束条件是猜对数字,需要使用match函数进行实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值