zoukankan      html  css  js  c++  java
  • [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏]

    [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏]

    项目实战

    实战1:猜数字游戏

    我们今天来来开始简单的项目实战。

    第一个简单项目是猜数字游戏。

    简单来说,系统给了一个随机数字,你根据提示输入你的数字,如果答对了,系统显示:you win!

    否则系统会给个提示:太小或太大的提示,继续猜。

    我们开始吧!

    先用命令生成工程:

     cargo new guessing_game
    

    用vscode打开新建的工程guessing_game,src/main.rs的代码更新为如下 :

    use std::io;
    
    fn main() {
        println!("Guess the number!");
    
        println!("Please input your guess.");
    
        let mut guess = String::new();
    
        io::stdin()
            .read_line(&mut guess)//从控制台得到用户的输入数据并把它绑定到guess变量
            .expect("Failed to read line");//如果发生错误就打印错误信息
    
        println!("You guessed: {}", guess);
    }
    
    

    我们导入标准库std::io,这个包主要用来处理IO。

    运行上面 的代码,用命令:cargo run

    控制台将等待用户输入,用户这时输入一个数字,控制台将打印用户输入的数字。

    我们来直接看最终的版本,代码如下:

    use rand::Rng;
    use std::cmp::Ordering;
    use std::io;
    
    fn main() {
        println!("Guess the number!");
    
        let secret_number = rand::thread_rng().gen_range(1, 101); //用库rand产生随机数(范围为:1~101)
    
        loop {
            //无限循环
            println!("Please input your guess.");
    
            let mut guess = String::new();
    
            io::stdin()
                .read_line(&mut guess) //等待用户输入,并绑定到guess变量
                .expect("Failed to read line");
            //对用户输入的数据进行处理,这里用模式匹配
            let guess: u32 = match guess.trim().parse() {
                Ok(num) => num,
                Err(_) => continue,
            };
    
            println!("You guessed: {}", guess);
            //对用户输入的数字和系统随机数字相对比较,这里也有模式匹配处理
            match guess.cmp(&secret_number) {
                Ordering::Less => println!("Too small!"),
                Ordering::Greater => println!("Too big!"),
                Ordering::Equal => {
                    //如果用户输入的数字刚好等于系统随机数,显示“You win!”,并跳出循环
                    println!("You win!");
                    break; //跳出loop
                }
            }
        }
    }
    
    

    这个程序用了三个库:std::io, std::cmp::Ordering ,rand::Rng

    以上,希望对你有用。

    如果遇到什么问题,欢迎加入:rust新手群,在这里我可以提供一些简单的帮助,加微信:360369487,注明:博客园+rust
    

    参考文章:

    https://doc.rust-lang.org/stable/book/ch02-00-guessing-game-tutorial.html

  • 相关阅读:
    vue的特点 关键字
    小程序技术实现
    SpringCloud简历模板
    SpringBoot简历模板
    SpringCloud+Eureka快速搭建微服架构
    Docker 面试题
    说说mysql的存储引擎,有什么区别?索引的介绍
    mysql语句
    fail-fast 与 fail-save 机制的区别
    动态规划总结
  • 原文地址:https://www.cnblogs.com/gyc567/p/12063363.html
Copyright © 2011-2022 走看看