猜数字游戏(Rust实现)

本文详细解释了如何使用Rust语言编写一个猜数字游戏,涉及随机数生成、用户输入处理、比较和错误处理,以及Cargo包管理和Rust的特性如trait和match表达式。

游戏说明

游戏说明

游戏运行逻辑如下:

  1. 随机生成一个1-100的数字作为神秘数字,并提示玩家进行猜测。
  2. 如果玩家猜测的数字小于神秘数字,则提示用户“猜测的数字太小了”。
  3. 如果玩家猜测的数字大于神秘数字,则提示用户“猜测的数字太大了”。
  4. 让玩家不断进行猜测,直到最终猜出神秘数字,游戏结束。

游戏效果展示

游戏效果展示

在这里插入图片描述

游戏代码

游戏代码

游戏完整代码如下:

use rand::Rng;
use std::io;
use std::cmp::Ordering;

fn main() {
   
   
    println!("欢迎来到猜数游戏!");
    //1、生成神秘数字
    let secret_number = rand::thread_rng().gen_range(1, 101);
    println!("神秘数字已经生成!");

    loop {
   
   
        //2、让用户进行猜测
        println!("请猜测:>");
        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("无法读取行");

        //3、将用户输入的数字字符串转化为整型
        let guess: u32 = match guess.trim().parse() {
   
   
            Ok(num) => num,
            Err(_) => {
   
   
                println!("请您输入一个合法的整数!");
                continue;
            }
        };

        //4、将用户猜测的数与神秘数字进行比较
        match guess.cmp(&secret_number) {
   
   
            Ordering::Less => println!("您猜测的数字太小了"),
            Ordering::Greater => println!("您猜测的数字太大了"),
            Ordering::Equal => {
   
   
                println!("恭喜您猜对了, 神秘数字就是{}!", secret_number);
                break;
            }
        }
    }
}

游戏代码详解

下面对猜数字游戏中所用到的Rust语法和包(crate)进行讲解。

生成神秘数字

rand包

  • Rust团队没有把随机数字生成功能内置到标准库中,而是选择将它作为rand包(rand crate)提供给用户。
  • Rust中的包(crate)代表了一系列源代码文件的集合,我们当前正在构建的项目是一个用于生成可执行程序的二进制包(binary crate),而我们引用的rand包则是一个用于复用功能的库包(library crate)。
  • rand包中有一个名为Rng的trait,它定义了随机数生成器需要实现的方法集合,比如Rng中的gen_range方法可以根据指定的范围来生成随机数。

在rand包中有一个名为thread_rng的方法,该方法会返回一个特定的随机数生成器,通过调用该随机数生成器的gen_range方法即可在指定范围内生成随机数。如下:

use rand::Rng;

fn main() {
   
   
    let secret_number = rand::thread_rng().gen_range(
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021dragon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值