Skip to content

yuanzhoulvpi2017/countdown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

countdown

【2022-05-01更新】

背景

  1. 最近两个星期把《Rust程序设计语言》和《通过例子学Rust》两本书反复看了几遍。学到了不少知识。
  2. 但是只是看书其实是没啥效果的,很多坑可能要在实战中才能挖掘出来。
  3. 其实实战的主要目的是锻炼对向量和字符串的控制能力(当前的水平)。
  4. 那么实战做什么好呢?前几天刚好用python结合fastapi做了一个简单的web应用:倒计时。其实没啥用。但是今天已经是5月1日了,都快过去2天了,我就在想如果使用Rust做一个倒计时(翻牌器的那种形式),这样可以帮助我了解我的假期余额。这样多好。
  5. 那么我的第一个Rust项目就出来了。(没啥用,适合Rust入门)。

效果展示

【视频】

  1. 依次输入倒计时的:年、月、日、时,就可以自动计算当前的时间距离倒计时日的时间间隔。

步骤

生成基础的显示单元

使用python的matplotlib,把我们需要显示的基础字符转换成图像。我们这里需要显示这几个内容:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, day, hou, min, sec

全都放在一个文件夹下:

这个功能和实现在save2number.py模块里面。

处理图像

如果我们为了在终端里面显示4这个数字,我们需要读取这个数字的图像,并且对图像的每一个像素值转换成字符串。然后都保存到向量里面。

为了可以并排显示多个数字,再对单个数字的字符串向量做拼接。就可以并排形成多个数字了。 比如说我要显示:5169。那么显示出来的效果就是这样的:

更丰富的显示

既然我们都可以显示数字,其实显示这些简单的字符也是可以的。比如这样的效果:

输入

最后,只要让用户输入时间,然后再结合循环就可以做到不断的更新电脑屏幕内容了。

可以说是非常简单。

注意事项

  1. 目前路径已经设施为自动处理了,因此,当cargo run --release运行的时候,会自动获得图片路径了。
  2. 因为这个代码需要读取图像,每个机器的图像文件夹位置还不一样,需要注意修改gen.rs 里面的路径的代码。

  1. 因为我这里考虑到的,每个位置只是显示2位数字,如果你倒计时时间距离当前的时间的天数大于99,那么就会显示错误。这个需要注意。

  2. 代码的运行效率低,需要修改,我这里只是最基础的版本,后面会迭代。(目前只是第一版)

感受

  1. 写rust的时候,整体感觉和写python差不多。写起来感觉比写C、C++轻松不少。
  2. rust的变量的生命周期我还没完全搞清楚,尤其是在循环里面,生命周期奇奇怪怪的。(还是不熟悉,还在探索)。
  3. 一共两天时间写出来的。还是比较顺利的,接下来把中间遇到的小问题再好好研究研究。
  4. 感觉其实还是向量处理、字符串处理,思想其实和R、python也都差不多。大部分代码都是在和向量、字符串打交道。

代码

代码已经开源了,链接为:https://github.com/yuanzhoulvpi2017/countdown

阅读更多

list

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published