猜数游戏-Rust版

简介: 猜数游戏-Rust版

输入任意内容,并打印出来


main.rs:

use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
fn main() {
    println!("猜数");
    println!("猜测一个数");
    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess)
}

生成随机数


Cargo.toml

[package]
name = "guessing_game"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "^0.3.14" # ^代表任何与0.3.14这个版本公共api兼容的版本都可以

rand包还依赖libc

微信截图_20230925144626.png

use std::io;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
    println!("猜数");
    let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
    println!("神秘数字是{}", secret_number);
    println!("猜测一个数");
    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess)
}

微信截图_20230925144701.png

比较大小

use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
    println!("猜数");
    // i32 u32 i64,不指定则默认i32
    let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
    println!("神秘数字是{}", secret_number);
    println!("猜测一个数");
    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
    // shadow, 隐藏;(用同名变量隐藏旧变量)
    // trim 去掉空格等
    // parse 将字符创串装换为u32 类型
    let guess: u32 = guess.trim().parse().expect("Please type a number!");
    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess);
    match guess.cmp(&secret_number) {
        Ordering::Less => println!("Too small!"), //arm,类似分支吧
        Ordering::Greater => println!("Too big!"), //arm,类似分支吧
        Ordering::Equal => println!("You win!"), //arm,类似分支吧
    }
}

微信截图_20230925144815.png

微信截图_20230925144823.png

做多次猜测,直到猜对

use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
    println!("猜数");
    // i32 u32 i64,不指定则默认i32
    let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
    println!("神秘数字是{}", secret_number);
    loop {
        println!("猜测一个数");
        let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
        // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
        io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
        // shadow, 隐藏;(用同名变量隐藏旧变量)
        // trim 去掉空格等
        // parse 将字符创串装换为u32 类型
        let guess: u32 = match guess.trim().parse() { // match,是rust错误处理的惯用方式
            Ok(num) => num,
            Err(_) => continue, //_表示舍弃,不关心
        };
        // {}为占位符,类似golang里的%s,%d
        println!("你猜测的数是:{}", guess);
        match guess.cmp(&secret_number) {
            Ordering::Less => println!("Too small!"), //arm,类似分支吧
            Ordering::Greater => println!("Too big!"), //arm,类似分支吧
            Ordering::Equal => {
                println!("You win!");
                break;
            }
        }
    }
}

微信截图_20230925144904.png

目录
相关文章
|
6月前
|
算法 C语言 C++
【C语言-扫雷游戏全功能详解】
【C语言-扫雷游戏全功能详解】
78 1
|
1天前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
31 7
|
2月前
|
存储 Rust 安全
30天拿下Rust之输入输出
30天拿下Rust之输入输出
31 0
|
4月前
|
存储 编译器 C语言
C语言实战 | “贪吃蛇”游戏
【7月更文挑战第5天】在C语言实战中,本文档介绍了如何构建一个简单的“贪吃蛇”游戏。游戏的核心是控制蛇移动并增长,当吃掉食物时,蛇的身体变长。数据结构使用固定大小的数组表示蛇的位置,变量存储食物位置和蛇的长度。初始化后,利用非阻塞式`getKey()`函数实现WASD键盘控制蛇的运动方向。虽然蛇的边界检测和吃食物后的增长尚未详细说明,但提到了这些问题作为练习留给读者解决,并预告将在后续章节讨论模块化编程以简化复杂代码。
94 0
C语言实战 | “贪吃蛇”游戏
|
5月前
|
存储 C语言
C语言实战 | “贪吃蛇”游戏重构
在程序设计中,模块化思维至关重要,尤其对于复杂项目,它帮助分解任务,便于团队协作。以“贪吃蛇”游戏为例,游戏涉及两个角色:蛇和食物。使用数组存储蛇的位置,变量存储食物位置。游戏流程分为初始化、显示和更新数据。初始化时,食物位置随机,蛇的位置根据数组设定。显示数据则根据这些信息在屏幕上呈现角色。更新数据时,处理蛇的移动和增长以及食物的生成和消失。类似地,通过模块化方法可开发“打砖块”游戏,涉及球、球拍和砖墙,每个角色都有相应数据结构和更新逻辑。通过这种方式,游戏开发就像搭建积木,遵循框架逐步实现。
77 0
C语言实战 | “贪吃蛇”游戏重构
|
5月前
|
Rust 安全
Rust猜数字游戏
Rust猜数字游戏
|
5月前
|
存储 移动开发 Rust
【Rust学习】02_猜谜游戏
让我们一起动手完成一个项目,来快速上手 Rust!本章将介绍 Rust 中一些常用概念,并向您展示如何在实际项目中运用它们。您将会学到 let、match、方法、关联函数、引用外部 crate 等知识!后续章节会深入探讨这些概念的细节。
36 0
|
C语言
【C语言实现猜数游戏】
【C语言实现猜数游戏】
89 0
|
6月前
|
存储 Rust 安全
【Rust】——猜数游戏
【Rust】——猜数游戏
|
C语言
c语言猜数游戏
c语言猜数游戏
143 0