首页 > 编程知识 正文

Python X 数字雨代码实现改,python代码实现飞机大战

时间:2023-05-04 12:50:14 阅读:200041 作者:1602

【Python X 数字雨】 はじめました!どぞよろしくおねいします!首先呢,从别人那里嫖到源代码,做了些小小的改动。也就是说:以下非原创。特此说明。话不多说,先放代码: #coding = UTF-8

↑这里用于声明编码方式。

import randomimport pygamefrom pygame.locals import *from sys import exitfrom win32api import GetSystemMetrics

↑这里用于引用模块方式。
请注意: 我发现自己电脑没有pygame模块,所以请自行安装
cmd.exe中输入 “pip install --upgrade pygame” 这条语句显然是万能的(笑)

all_font = pygame.font.get_fonts()tmpfont = str(all_font[len(all_font) -1])

这两句是新增的,显然123.ttf不是所有人都有的,没有该字体的人只会显示□□□□□

all_font = pygame.font.get_fonts()是用于获取所有可用字体并储存在all_font列表(list)里

tmpfont = str(all_font[len(all_font) -1])是用于获取中文字体 (毕竟这样最简单,中文总是在后面)

PANEL_width = GetSystemMetrics(0)PANEL_highly = GetSystemMetrics(1)FONT_PX = 20

定义宽高和字体大小,这也是新增的,获取屏幕像素,单纯的1920x1440显然不适合我的电脑

pygame.init() # 创建一个可视窗口winSur = pygame.display.set_mode((PANEL_width, PANEL_highly), FULLSCREEN, 32) font = pygame.font.SysFont(tmpfont , 15) bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA) pygame.Surface.convert(bg_suface) bg_suface.fill(pygame.Color(0, 0, 0, 16)) winSur.fill((0, 0, 0))

对游戏画面下定义,注意第二条语句是用tmpfont作为字体

#定义letter列表作为引用对象#汉字版#letter = ['我', '爱', '你', '我', '爱你', '我爱你', '我非常爱你', '我爱你', '我爱', '我', '爱', '你','我爱你', '爱', '我', '爱你', '我', '我爱', '爱你', '你']#二进制版#letter = ['1', '0', '1', '1', '1', '0', '0', '0', '1', '0', '1', '0', '1', '0', '0', '1', '1', '0', '0', '0', '1', '1','1', '0', '1', '0', '0', '1', '0', '1']#字母版#letter = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z']#数字版#letter = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']#以下以汉字版做示例letter = ['我', '爱', '你', '我', '爱你', '我爱你', '我非常爱你', '我爱你', '我爱', '我', '爱', '你','我爱你', '爱', '我', '爱你', '我', '我爱', '爱你', '你']texts = [font.render(str(letter[i]), True, (0, 255, 0)) for i in range(len(letter))]

OK,咱们继续。。。

# 按屏幕的宽带计算可以在画板上放几列坐标并生成一个列表column = int(PANEL_width / FONT_PX)drops = [0 for i in range(column)] while True: # 从队列中获取事件 for event in pygame.event.get(): if event.type == pygame.QUIT: exit() elif event.type==pygame.KEYDOWN: if event.key==pygame.K_ESCAPE: sys.exit() elif event.type == pygame.KEYDOWN: chang = pygame.key.get_pressed() if (chang[32]): exit() # 将暂停一段给定的毫秒数 pygame.time.delay(30) # 重新编辑图像第二个参数是坐上角坐标 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.95: drops[i] = 0 pygame.display.flip()

这里几乎无变化,只是插入了elif event.type==pygame.KEYDOWN: if event.key==pygame.K_ESCAPE: sys.exit()用于按Esc退出
如果你想看到控制台,请保存为.py文件
如果你不想看到控制台,请保存为.pyw文件
打包请注意:

pip install --upgrade pyinstaller

走起在控制台进入python安装路径的Script文件夹目录下

cd C:UsersAdministratorAppDataLocalProgramsPythonPython36-32Scripts

输入

pyinstaller.exe -F -p C:UsersAdministratorDesktop; -i ..图标路径.ico ..工程文件路径.py

不过可能会报错,如果报错,请

先进入
C:UsersAdministratorAppDataLocalProgramsPythonPython36-32Libsite-packagesPyInstallerutilswin32
文件夹
找到winmanifest.py
可见

1074 if not need_new:1075 with open(filename) as f:1076 old_xml = f.read()1077 new_xml = manifest.toprettyxml().replace('r','')

将其改为

1074 if not need_new:1075 with open(filename,encoding="UTF-8") as f:1076 old_xml = f.read()1077 new_xml = manifest.toprettyxml().replace('r','')

重新打包即可

OK,结束,打完字收工

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。