ITPub博客

首页 > 数据库 > 数据库开发技术 > 黑客帝国中的代码雨

黑客帝国中的代码雨

原创 数据库开发技术 作者:阿黎逸阳的代码 时间:2020-05-30 07:00:00 0 删除 编辑

一年一度的六一儿童节快到啦!预祝小朋友、大朋友们节日快乐。

科普:国际儿童节(又称儿童节International Children's Day)定于每年的6月1日。为了悼念1942年6月10日的利迪策惨案和全世界所有在战争中死难的儿童,反对虐杀和毒害儿童,以及保障儿童权利。

今天小编提前为大家送上一份炫酷的儿童节礼物,教大家用Python绘制黑客帝国中的代码雨。


一、代码雨效果图

 1  纯数字版代码雨


 2  纯字母版代码雨


 3  各种字符混合版代码雨


 4  黑客帝国背景版代码雨‍



二、代码雨实现分步骤讲解


 1  加载包

先把绘制黑客帝国中代码雨需要的包加载好。
"""代码用途:模拟黑客帝国中的代码雨作者:阿黎逸阳
"""import randomimport pygamefrom pygame.locals import *from sys import exitimport string

 2  设置窗口的大小
可以设置全屏显示窗口,也可以自定义窗口大小。
pygame.init()           #初始化 display 模块#全屏显示#screen = pygame.display.Info()#PANEL_width = screen.current_w  #设置屏幕的宽度#PANEL_highly = screen.current_h #设置屏幕的高度#自定义显示大小PANEL_width = 800      #设置屏幕的宽度PANEL_highly = 900     #设置屏幕的高度FONT_PX = 20


 3  创建窗口
设置窗口的标题和背景颜色,并添加背景图片(如不想要背景图片可以注释掉)。
winSur = pygame.display.set_mode((PANEL_width, PANEL_highly))  #设置屏幕的宽和高pygame.display.set_caption("模拟黑客帝国中的代码雨-阿黎逸阳")  #设置标题background=pygame.image.load(r"F:\微信公众号\Python\32.六一儿童节黑客帝国\代码雨背景.png")  #设置背景图片font = pygame.font.SysFont('verdana.ttf', 19)                  #从系统内加载字体bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA)pygame.Surface.convert(bg_suface)          #修改图像(Surface 对象)的像素格式bg_suface.fill(pygame.Color(0, 0, 0, 28)) #设置填充的颜色winSur.fill((0, 0, 0))

 4  定义窗口显示内容
代码雨中的内容可以是纯数字、纯字母、各种字符混合。string模块中的printable属性,它返回系统可打印的字符,可以用它提供代码雨中的字符。
#纯数字 texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]#纯字母  letter = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c','v', 'b', 'n', 'm']#各种字符混合letter = string.printable               #设置字符内容texts = [font.render(str(letter[i]), True, (0, 255, 0)) for i in range(len(letter))]column = int(PANEL_width / FONT_PX)    # 根据窗口的宽度计算字母的列数drops = [0 for i in range(column)]

 5  更新窗口制造代码雨的效果
设置很短的时间刷新屏幕,随机显示的代码雨就能呈现出“下雨”的效果。
while True:    # 从队列中获取事件,防止窗口秒退和无响应    for event in pygame.event.get():        winSur.blit(background,(220,0))  #对齐的坐标        if event.type == pygame.QUIT:            exit()        elif event.type == pygame.KEYDOWN:            if event.key == pygame.K_q:                exit()    pygame.time.delay(19)           #暂停毫秒数    winSur.blit(bg_suface, (0, 0))  #更新图像    for i in range(len(drops)):        text = random.choice(texts)        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))        #重新定义每个坐标点的图像        drops[i] += 1        if drops[i] * 10 > PANEL_highly or random.random() > 0.94:  #超出范围后重置坐标位置            drops[i] = 0    pygame.display.flip()

至此,黑客帝国中代码雨的生成讲解全部结束,如需全量可执行代码可以在公众号中回复“黑客帝国代码雨”,即可免费获取。

参考文献

https://blog.csdn.net/qq_41556318/article/details/85952413https://blog.csdn.net/qq_41556318/article/details/86303502?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9369565679767787175%22%7D&n_type=1&p_from=

往期回顾:

3D星空图
3D星空图V2版
520表白代码合集
用python绘制皮卡丘

娱乐圈排行榜动态条形图绘制

扫一扫关注我

19967879837

投稿微信号、手机号

原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-02-15

  • 博文量
    282
  • 访问量
    130883