大鹏哥 发表于 2022-6-29 01:16:17

在行空板上显示代码雨(一)


![行空板上运行代码雨效果图](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/010334cy21esispsbf3bx1.png)
## 创意起源
在行空板开机的过程中,有段代码显示很快,看起来挺酷的。不禁想到之前看《黑客帝国》电影的时候,看到过由0和1组成的数字雨信息流,印象比较深刻。觉得可以尝试在行空板上显示代码雨,下面话不多说,直接上演示视频。
## 作品展示

https://www.bilibili.com/video/BV1N34y1p7Q4?spm_id_from=333.999.0.0&vd_source=2e2961f147089689bd7b1b48d3b09885

##程序编写
```
import random #导入random库
import pygame #导入pygame库
from pygame.locals import * # 导入所有pygame.locals里的变量(比如下面大写的QUIT变量)
from sys import exit#从sys模组中引入exit即退出功能
#行空板的屏幕尺寸是240*320,以下屏幕设置可以选择是否全屏
screen_width=240#设置屏幕宽度
screen_height=320 #设置屏幕高度

rain_num = 30#设置代码雨的列数量

font_num = 25# 设置显示字符的字体大小

pygame.init()# 初始化pygame

# 访问显示设备,创建一个窗口
# 使用 pygame.display.set_mode() 创建的新显示界面会自动替换掉旧的
# RESIZABLE 创建一个可调整尺寸的窗口
screen=pygame.display.set_mode(, RESIZABLE)

pygame.display.set_caption("代码雨")# 设置标题(仅限于电脑端显示)

# 从系统字体库创建一个字体 Font 对象(这里选用123字体,可以选择其他字体比如arial等等)
font = pygame.font.SysFont("123.ttf", font_num)

# 创建一个图像对象,SRCALPHA表示每个像素包含一个 alpha 通道
bg_suface = pygame.Surface((screen_width, screen_height), flags=pygame.SRCALPHA)

# 使用纯色填充 Surface 对象
bg_suface.fill(pygame.Color(0, 0, 0, 16))

# 使用纯色填充窗口
screen.fill((0, 0, 0))

# 按屏幕的宽带计算可以在画板上放几列坐标并生成一个列表
drops =

while True:
    # 从队列中获取事件
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            pygame.quit()
            exit()
      elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:    #按下A键停止
               exit()

    pygame.time.delay(30)# 暂停30ms

    # 将图片放到窗口的原点坐标上,blit()不会更新屏幕-它在缓冲区中绘制图像,和flip()一起使用。
    screen.blit(bg_suface, (0, 0))

    #在新Surface上绘制文本
    for i in range(rain_num):
      #text = font.render(str(random.randint(0,9)), True, (0, 255, 0))#生成随机数字字体,用于生成一个指定范围内的整数(0到9之间的数)
      text = font.render(str(random.choice('0123456789abcdefghijklmnopqrstuvwxyz')), True, (0, 255, 0))#从0-9和a-z的序列中获取一个随机元素

      screen.blit(text, (i * screen_width/rain_num, drops * (font_num - 10)))# 将字体按照当前下雨的位置刷新到窗口上

      # 更新下雨的坐标,采用随机值,超过界面高度或随机数,下雨位置置0。
      drops += 1
      if drops * 10 > screen_height or random.random() > 0.95:
            drops = 0

    # 更新屏幕
    pygame.display.flip()
```
#操作步骤详细介绍
### 1.打开mind+的python模式,在“项目”下拉框里找到“另存项目”,点击“另存项目”保存到命名好的文件夹内。
![在“项目”下拉框里找到“另存项目”并点击](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/001647rk88hxxa8xhhl8xe.png)
![保存sb3文件到指定的文件夹内](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/001708huoohssplz9oxf0v.png)
### 2.在“项目中的文件”这里新建一个py文件,比如命名为daimayu.py然后双击打开。
![点击“+”新建py文件](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/001752nnz7xpzrmuuivt5q.png)
![新建文件命名为daimayu.py](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/002934guuu0rogmczrcm53.png)
### 3.把代码复制到daimayu.py文件中。
![复制代码到daimayu.py文件中](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/003145qoj8k908l4y696tt.png)
### 4.先点击“终端”,弹出“连接远程终端”之后点击“10.1.2.3”进行连接。
![点击“终端”,弹出“连接远程终端”](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/001847hhuc76h2um7ul7ns.png)
![成功连接行空板终端](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/001927dja7jwkj99tktj7j.png)
### 5.点击“运行”,稍等片刻即可在行空板上显示代码雨效果。
![上传程序至行空板并运行](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/002001r5ymgfufma2q1eb1.png)
![行空板显示代码雨效果](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/003630zatwdcdu29tkw75d.png)
### 6.如果需要停止程序运行,按下行空板上的A键即可停止。
![按下A键停止程序](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/29/003639u33esoe43oq991el.png)

EVE 发表于 2022-6-29 09:51:53

这个可以有

Forgotten 发表于 2022-6-29 11:00:05

Ski 发表于 2022-6-30 15:45:50

牛逼   

Storm 发表于 2022-6-30 18:39:38

大鹏哥!

糖醋花生 发表于 2022-7-1 15:45:09

字母应该用的是随机库吧

岑剑伟 发表于 2022-7-4 11:55:14

可以运行 完整版的 python ,micropython瑟瑟发抖

赤星三春牛! 发表于 2022-7-7 08:42:13

呵呵,不错哦!厉害厉害

大鹏哥 发表于 2022-7-13 13:10:26

EVE 发表于 2022-6-29 09:51
这个可以有

测试一下看看回复字数

大鹏哥 发表于 2022-7-13 13:44:19

Forgotten 发表于 2022-6-29 11:00


{:6_205:}{:6_205:}{:6_205:}

大鹏哥 发表于 2022-7-13 13:46:27

Ski 发表于 2022-6-30 15:45
牛逼

准备继续更新这个系列

大鹏哥 发表于 2022-7-13 13:47:28

Storm 发表于 2022-6-30 18:39
大鹏哥!

低调哈哈

大鹏哥 发表于 2022-7-13 13:49:03

糖醋花生 发表于 2022-7-1 15:45
字母应该用的是随机库吧

是的代码刚开始就调用了random

大鹏哥 发表于 2022-7-13 13:50:28

岑剑伟 发表于 2022-7-4 11:55
可以运行 完整版的 python ,micropython瑟瑟发抖

行空板,让你2步拥抱Python!

大鹏哥 发表于 2022-7-13 13:52:01

赤星三春牛! 发表于 2022-7-7 08:42
呵呵,不错哦!厉害厉害

哈哈哈,准备继续更新这个系列了

糖醋花生 发表于 2022-7-15 10:52:45

大鹏哥 发表于 2022-7-13 13:49
是的代码刚开始就调用了random

是用的random在列表里随机选的是吧

发表于 2022-7-17 09:06:46

六臂红红

赤星三春牛! 发表于 2022-7-21 16:28:17

6666666666

派大星ym 发表于 2022-8-1 09:12:02

有黑客帝国那味了

摸鱼的网民 发表于 2023-1-16 10:18:33

好6啊.666

大鹏哥 发表于 2023-8-15 11:53:26

针对以下报错,重新修改了代码,代码区已经更新。
页: [1] 2
查看完整版本: 在行空板上显示代码雨(一)