首页 > 其他分享 >Rust入门, 猜字游戏!

Rust入门, 猜字游戏!

时间:2023-04-09 19:12:52浏览次数:38  
标签:count 猜字 入门 rand Ordering num println Rust cmp

use rand::Rng; // 随机数
use std::cmp::Ordering; // 枚举对比cmp
use std::io; // io 输入输出获取

fn main() {
    println!("这是一个猜字游戏!");

    // rand::thread_rng() 是获取一个本地线程作为随机数函数使用, gen_range() 是获取一个范围内的随机数生成
    let rand_num: u32 = rand::thread_rng().gen_range(1..100);

    // 次数限制
    let mut count_num: u8 = 5;

    println!("随机数字已经生成,请猜测具体数字是几?\n你有五次机会!");

    loop {
        // 限制次数
        if count_num <= 0 {
            println!("游戏结束!");
            break;
        }

        println!("请输入您认为的随机数:");

        // 使用 loop 循环获取到正确的 数字
        // 设置获取的数值为 u32 类型
        let input_num: u32 = loop {
            let mut input_num = String::new();

            match io::stdin().read_line(&mut input_num) {
                Ok(_) => (), // 成功不进行操作 返回原字符
                Err(_) => println!("读取失败!!"),
            };
            //num 是临时变量
            match input_num.trim().parse::<u32>() {
                Ok(num) => break num,
                Err(_) => println!("请输入正确的数字,,Ծ‸Ծ,,"),
            }
        };

        // 用 cmp 函数 和 input_num 户输入数字  对比  (&引用) &rand_num  生成的范围随机数
        match input_num.cmp(&rand_num) {
            Ordering::Less => println!("您猜的数字小了!"),
            Ordering::Greater => println!("您猜的数字大了!"),
            Ordering::Equal => {
                println!("恭喜您猜对了!");
                break; // 结束 loop 循环
            }
        };
        count_num -= 1;
        println!("你还有{}机会", count_num);
    }
}

标签:count,猜字,入门,rand,Ordering,num,println,Rust,cmp
From: https://www.cnblogs.com/xiamuguizhi/p/17292457.html

相关文章

  • Rust语言 , string(&str) 和 String 区别
    在Rust中,string表示字符串切片类型(&str),可以用于引用字符串数据。而String则是字符串类型,是一种可变的字符串,可以创建、修改和销毁。具体来说,string是Rust的核心语言类型之一,它是一个不可变的字符串切片类型,通常用于引用已有的字符串数据。由于字符串切片是不可变的,因此不......
  • Rust 关键词
    在Rust中,以下是所有的关键词列表,以及它们的作用和用途:as:类型转换关键字,用于将一个类型转换为另一个类型。async:异步函数关键字,用于定义异步函数。await:等待异步结果关键字,用于等待异步函数的执行结果。break:循环控制关键字,用于跳出当前的循环语句。const:常量声明关键字......
  • Rust语言 学习05 枚举与模式匹配
    一、定义枚举enumMessage{Quit,Move{x:i32,y:i32},Write(String),ChangeColor(i32,i32,i32),}fnmain(){letq=Message::Quit;letm=Message::Move{x:12,y:24};letw=Message::Write(String::from("Hello"));letc......
  • 【入门】Go语言面向对象
    目录一、面向对象简介1.1什么是面向对象?1.2类和对象1.3面向对象编程的好处二、匿名字段实现继承及对象创建三、成员操作四、指针类型匿名字段五、多重继承六、基本方法创建七、为结构体添加方法八、使用方法注意事项九、面向对象方法练习十、方法继承十一、方法继承练习十二、......
  • Apache httpd 入门实战(1)--概念及安装
    Apachehttpd是Apache软件基金会的一个开源的Web服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。本文主要介绍其基本概念及安装,文中所使用到的软件版本:httpd2.4.55、apr1.7.2、apr-util1.6.3、pcre8.43、CentOS......
  • 1 REDIS 入门1
    1连接登录认证redis-cli -h hostip -pport -a pwd    命令行登录认证。入门常用,可用于登录远程redis库。出于安全考虑,可以不带密码先进行连接,然后再通过authpwd进行认证redis-cli  客户端工具。如果本机安装并启动了redis服务,redis-cli命令会直接连接......
  • Typora入门笔记-2023-04-08
    Typora入门笔记-2023.4.081-6个#号代表标题的大小,井号越多标题越小字体holleworld!hello,worldHELLO,WORLDHELLO,WORLD引用选择狂神说Java,走向人生巅峰选择狂神说Java,走向人生巅峰选择狂神说Java,走向人生巅峰图片超链接点击跳转到狂神博客列表ABCAB......
  • Rust编程语言入门之函数式语言特性:-迭代器和闭包
    函数式语言特性:-迭代器和闭包本章内容闭包(closures)迭代器(iterators)优化改善12章的实例项目讨论闭包和迭代器的运行时性能一、闭包(1)-使用闭包创建抽象行为什么是闭包(closure)闭包:可以捕获其所在环境的匿名函数。闭包:是匿名函数保存为变量、作为参数可在一个地方......
  • Semantic Kernel 入门系列:
    不论你是否关心,不可否认,AGI的时代即将到来了。在这个突如其来的时代中,OpenAI的ChatGPT无疑处于浪潮之巅。而在ChatGPT背后,我们不能忽视的是LLM(LargeLanguageModel)大型语言模型。一夜之间所有的大厂商都在搞LLM,虽然很难有谁能和OpenAI相匹敌,但是随着AI领域的新摩尔定律的发功,......
  • Verilog入门
    Verilog代码示例://38译码器模块moduledec3_8(a,y);input[2:0]a;output[7:0]y;assigny=1<<a;endmoduleVerilog结构:数字常量变量位宽不做说明的话,默认是一位数据类型不做说明的话,默认是wire类型运算符assign语句assign语句:无论右边......