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

2022-06-281.9万
精华项目
AI 快速预览详细 收起
本文介绍了如何在行空板上实现代码雨效果。首先导入Python的random和pygame库,设置屏幕尺寸和代码雨的列数量。通过循环更新字符位置,生成动态的代码雨效果。详细的操作步骤包括保存项目、新建py文件、复制代码、连接远程终端并运行程序。最终在行空板上展示酷炫的代码雨效果。

行空板上运行代码雨效果图

创意起源

在行空板开机的过程中,有段代码显示很快,看起来挺酷的。不禁想到之前看《黑客帝国》电影的时候,看到过由0和1组成的数字雨信息流,印象比较深刻。觉得可以尝试在行空板上显示代码雨,下面话不多说,直接上演示视频。

作品展示



程序编写

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([screen_width, screen_height], 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 = [0 for i in range(rain_num)]

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[i] * (font_num - 10)))  # 将字体按照当前下雨的位置刷新到窗口上

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

    # 更新屏幕
    pygame.display.flip()

操作步骤详细介绍

1.打开mind+的python模式,在“项目”下拉框里找到“另存项目”,点击“另存项目”保存到命名好的文件夹内。

在“项目”下拉框里找到“另存项目”并点击
保存sb3文件到指定的文件夹内

2.在“项目中的文件”这里新建一个py文件,比如命名为daimayu.py然后双击打开。

点击“+”新建py文件
新建文件命名为daimayu.py

3.把代码复制到daimayu.py文件中。

复制代码到daimayu.py文件中

4.先点击“终端”,弹出“连接远程终端”之后点击“10.1.2.3”进行连接。

点击“终端”,弹出“连接远程终端”
成功连接行空板终端

5.点击“运行”,稍等片刻即可在行空板上显示代码雨效果。

上传程序至行空板并运行
行空板显示代码雨效果

6.如果需要停止程序运行,按下行空板上的A键即可停止。

按下A键停止程序



行空板上运行代码雨效果图.png (935.16 KB, 下载次数: 13046)

STEM教育 · 行空板代码雨显示教程_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(12)
大鹏哥
大鹏哥
作者
针对以下报错,重新修改了代码,代码区已经更新。
大鹏哥
大鹏哥
作者
回复大鹏哥
摸鱼的网民
摸鱼的网民
好6啊.666
派大星ym
派大星ym
有黑客帝国那味了
三春牛-创客
三春牛-创客
6666666666
诩
六臂红红
三春牛-创客
三春牛-创客
呵呵,不错哦!厉害厉害
大鹏哥
大鹏哥
作者
回复三春牛-创客
哈哈哈,准备继续更新这个系列了
汤半泛
汤半泛
可以运行 完整版的 python ,micropython瑟瑟发抖
大鹏哥
大鹏哥
作者
回复汤半泛
行空板,让你2步拥抱Python!
糖醋花生
糖醋花生
字母应该用的是随机库吧
糖醋花生
糖醋花生回复大鹏哥
是用的random在列表里随机选的是吧
大鹏哥
大鹏哥
作者
回复糖醋花生
是的代码刚开始就调用了random
少东
少东
大鹏哥!
大鹏哥
大鹏哥
作者
回复少东
低调哈哈
Ski
Ski
牛逼
大鹏哥
大鹏哥
作者
回复Ski
准备继续更新这个系列
Forgotten
Forgotten
大鹏哥
大鹏哥
作者
回复Forgotten
评论内容
EVE
EVE
这个可以有
大鹏哥
大鹏哥
作者
回复EVE
测试一下看看回复字数
- 没有更多了 -