Python pygame框架实现屏幕数字雨特效
import pygame # 导入pygame模块
import random # 导入random模块
pygame.init() # 初始化pygame
FONT_PX = 20 # 设置字体像素(大小)
SRCEEN = pygame.display.set_mode() # 显示窗口
font = pygame.font.SysFont('arial', 20) # 设置系统字体(字体,大小)
suface = pygame.Surface((1500, 800), flags=pygame.SRCALPHA) # 调用 pygame.Surface() 创建一个新的图像对象
# Pygame 的 Surface 对象用于表示任何一个图像,Surface 对象具有固定的分辨率和像素格式。
pygame.Surface.convert(suface) # 修改图像(Surface 对象)的像素格式
suface.fill(pygame.Color(0, 0, 0, 28))
SRCEEN.fill((0, 0, 0)) # 窗口填充颜色为黑色
texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]
# 使用0--9数字定义文字列表,调用字体方法进行渲染为绿色
column = int(1500 / FONT_PX) # 计算出现最大出现几列
drops = [0 for i in range(column)] # 计算出现最大出现几列坐标并生成列表
while True:
for event in pygame.event.get(): # 监测窗口关闭事件
if event.type == pygame.QUIT:
exit()
pygame.time.delay(60) # 暂停程序一段时间
SRCEEN.blit(suface, (0, 0)) # 将图片绘制到窗口中左上角坐标为0.0
for i in range(len(drops)): # 取任意一列坐标
text = random.choice(texts) # 随机从文字列表选择数据
SRCEEN.blit(text, (i * FONT_PX, drops[i] * FONT_PX)) # 将图片绘制到窗口中左上角坐标为该列的左上角坐标
drops[i] += 1
if drops[i] * 10 > 800 or random.random() > 0.95: # 控制数字延伸长度
drops[i] = 0
pygame.display.flip() # 更新全部显示
实现效果图