• 目标

生成一个1~100间的随机数

提示玩家输入一个猜测

输入后程序提示猜测是大了还是小了

如果正确了,打印出一个庆祝信息,程序退出

  • 首先我们做一个单次猜测
use std::io;
use rand::Rng;
use std::cmp::Ordering;//枚举类型 分别是小于大于和等于
fn main() {println!("猜数!! ");let secret_number = rand::thread_rng().gen_range(1, 101);println!("神秘数字为:{}", secret_number);println!("猜测一个数: ");//let foo = 1;//let为定义值操作//let bar = foo;//foo = 2;//报错 因为rust中被定义的变量不能改变类似java中的"常量"let mut guess = String::new();//let mut所定义的变量就可以改变值io::stdin().read_line(&mut guess).expect("无法读取行");//方法的参数是用引用进行传递的//read_line()具有返回值 OK||Err  expect函数若read_line()返回值为Err就输出内部字符串 OK就赋值给guesslet guess: u32 = guess.trim().parse().expect("Please type a number!");//前面guess是新定义的整数类型 后面guess是就定义的字符串类型 trim是去掉两边空白 parse把字符串变为数值类型println!("你猜的数是:{}", guess);//String 和 io 均为库 ::代表库下的函数match guess.cmp(&secret_number){//cmp返回的是Ordering类型Ordering::Less => println!("Too small!"),Ordering::Greater => println!("Too big!"),Ordering::Equal => println!("You win!"),}
}

这里需要注意的有几点:

1.cargo.toml必须要添加rand包的依赖

2.引入rand::Rng 和 std::cmp::Ordering

3.rust中允许在一个变量之后使用相同名字定义另一个变量,但两个变量需要进行赋值连接

4.match 配合 Ordering类型进行匹配(类似java中的switch)

  • 接下来我们要实现可以连续猜测的代码(直到猜对才停止)
use std::io;
use rand::Rng;
use std::cmp::Ordering;//枚举类型 分别是小于大于和等于
fn main() {println!("猜数!! ");let secret_number = rand::thread_rng().gen_range(1, 101);//println!("神秘数字为:{}", secret_number);//使用loop进行无限循环loop {println!("猜测一个数: ");//let foo = 1;//let为定义值操作//let bar = foo;//foo = 2;//报错 因为rust中被定义的变量不能改变类似java中的"常量"let mut guess = String::new();//let mut所定义的变量就可以改变值io::stdin().read_line(&mut guess).expect("无法读取行");//方法的参数是用引用进行传递的//read_line()具有返回值 OK||Err  expect函数若read_line()返回值为Err就输出内部字符串 OK就赋值给guesslet guess: u32 = match guess.trim().parse(){//使用match来处理错误Ok(num)=>num,Err(_)=>continue,};//前面guess是新定义的整数类型 后面guess是就定义的字符串类型 trim是去掉两边空白 parse把字符串变为数值类型println!("你猜的数是:{}", guess);//String 和 io 均为库 ::代表库下的函数match guess.cmp(&secret_number){//cmp返回的是Ordering类型Ordering::Less => println!("Too small!"),Ordering::Greater => println!("Too big!"),Ordering::Equal => {println!("You win!");break;},}}
}

这里需要注意的是:

1.loop{} 进行无线循环

2.rust语言和其他语言一样break;跳出循环 continue;直接执行下一次循环

3.rust中处理错误一般使用match

Rust语言——猜数游戏相关推荐

  1. 猜价格游戏购物街c语言,猜数游戏实例

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

  2. 八个小灯泡闪烁的c语言程序,C语言猜数游戏程序.doc

    #include //包含 time函数 #define random(x) (rand()%x) void main() { int zhucaidan(); void youxijieshao() ...

  3. 猜数游戏教学设计C语言,猜数游戏优秀教学设计

    猜数游戏优秀教学设计 篇一:一年级<猜数游戏>教学设计 教学内容:北师大版一年级上册第三单元<猜数游戏> 教学目标: 1.在猜数游戏的活动中,进一步理解加减法的意义,探索并掌握 ...

  4. c语言 猜数游戏-代码 外G版

    思路  增加了2模式,可以简单地体会到乐趣,再也不用一个一个找数了. 一次游戏,一次加载,主要为了美观. 无聊的加了一个加载过程. 欢迎你们的点赞,关注,支持!你们的鼓励让我努力做一个合格的程序员. ...

  5. 猜数游戏c语言程序流程图,C语言猜数游戏代码

    写在前面:本代码使用了随机数+循环体+时间戳等初等代码,仅供小白交流,参考!#include #include #include #include int menu()                 ...

  6. C语言 猜随机数大小,C语言 猜数游戏--产生一个随机数

    #include #include #include int main(int argc, const char * argv[]) { // insert code here... printf(& ...

  7. C语言猜数游戏两位数

    老师布置的作业,VS2010 想问问大家应该怎么写呀

  8. 【Rust指南】配置加速Cargo下载、更新依赖库|利用随机数编写Rust猜数游戏

    文章目录   前言 一.Cargo配置问题与VSC的实用插件下载 1.解决Cargo拉取crates.io非常慢的问题 2.VSC自动管理Rust项目的实用插件 二.编写Rust 的猜数游戏 1.抓取 ...

  9. Rust——猜数游戏、数据类型、函数、循环和if条件表达式

    目录 一.数据类型 (一).基础类型 (二).进制 (三).复合类型 ①tuple ②数组 二.函数 三.循环和if (一).if (二).loop (三).while (四).for 四.猜数游戏 ...

最新文章

  1. 跳一跳python源码下载_Python玩跳一跳【简】
  2. Angular--TypeScript finalize 方法
  3. Ubuntu 使用 heirloom-mail 调用外部邮箱 SMTP 服务器发送邮件
  4. BZOJ 2733: [HNOI2012]永无乡 [splay启发式合并]
  5. DataGridView 实现记录颜色间隔交替显示
  6. RabbitMQ指南之三:发布/订阅模式(Publish/Subscribe)
  7. 1087 1 10 100 1000
  8. iOS应用程序瘦身的静态库解决方案
  9. DoIP诊断技术一点通
  10. 【Cad To Excel】CAD中表格到EXCEL的转换
  11. python定义一个整数变量_Python变量和数据类型详解
  12. 新浪微博开发平台接入流程(1)---注册应用
  13. 日系插画学习笔记(五):日系角色脸部画法-1头部
  14. C - Fewest Flops
  15. (原)android系统下绑定Server的时候报MainActivity has leaked ServiceConnection的错误
  16. 2021年最新ABAQUS复合材料建模仿真与应用专题培训
  17. jasypt数据源加密
  18. linux 浏览器问题
  19. 华为防火墙双机热备(link-group和Eth-trunk)
  20. 多角度探讨灵活可扩缩的云上游戏解决方案

热门文章

  1. 【菠萝狗四足机器人】二次开发教程--第三章 【腿部校准和步态效果调试】
  2. FTP、FTPS与SFTP定义与联系
  3. linux程序 在线控制,ToDesk Linux版
  4. 什么是回波损耗?什么是插入损耗?
  5. 逻辑运算符和逻辑表达式详解
  6. python下的复杂网络编程包networkx的使用(摘抄)
  7. swift使用yymodel解析数组模型
  8. Spring Boot + Vue 前后端合一
  9. 迷宫问题 回溯 C++
  10. 计算机网络安全实验一(期末复习专用)