2018年8月10日对飞机大战的思考和将python源文件打包成exe可执行文件


今天遇到的新单词:
script n脚本
terminate vi结束
*****************************
将Python文件怎么打包成win下直接能执行的exe文件:
在win终端输入命令下载pyinstaller,命令是:  pip install pyinstaller
安装完后,检查安装成功与否,pyinstaller --version
下载后在图形化界面到你要打包的的文件目录下,cmd切换到该目录下的shell
用命令 pyinstaller -F -w (要打包的主文件名.py) 意义是打包成一个单独的文件并且不要shell窗口直接运行
只打包主启动py文件就可以了,其他的py文件不需要打包,打包后会生成一个build和一个disk文件夹
disk文件夹里面就是可以直接启动的exe文件,然后把文件中用到的的音乐图片全部都拉到disk文件夹中,
直接点击exe文件就可以直接运行了,也可以直接发给其他人直接运行
要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,
不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。
用pyinstaller打包时候各个参数的意义:

-F  指定打包后只生成一个exe格式的文件

-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)

-c –console, –nowindowed 使用控制台,无界面(默认)

-w –windowed, –noconsole 使用窗口,无控制台

-p  添加搜索路径,让其找到对应的库。

-i  改变生成程序的icon图标


******************
王奎:
屏幕是怎么向两边打开的?   设两个图片精灵,x轴分别向两边走
坦克大战怎么实现坦克的转向不同枪口指向不同的? 添加四个不同方向枪口的坦克图片,方向键切换不同的图片
pygame中的kill()命令的真正意义是不再渲染,在精灵组里面就是把这个精灵清除,不会再检测到碰撞,而不会真正杀死那个变量,那个变量还是存在的
怎么解决按一次键却发射了很多子弹,怎么向三个方向发子弹:加一个变量,当调用够30次的时候就触发一次,
可以控制子弹的发射速度,斜着发射可以设置一个rect.move(x,y),也可以给x轴一个速度,让子弹斜着发射。

继承父类的真正作用:加载图片并让图片动起来
余自华保护罩怎么跟着走和显示在飞机上?保护罩建立一个精灵组,x,y坐标一直随着英雄飞机的坐标变化,
并把保护罩渲染在飞机上

赵军臣:
暂停按钮,可以使游戏所有场景音乐暂停是怎么做到的?在开始设置一个标签,可以设为False,在游戏窗口上
添加一个暂停按钮,当点击之后False变成true,场景内的所有精灵的速度都设为0,音乐关闭pause,再点击一下
暂停键,重新所有速度speed重新赋值让程序运行起来

孙世玉:
英雄飞机打子弹的时候英雄飞机颜色是怎么变的?图片的切换
怎么让子弹散开:可以定义pygame.rect.move(x,y),让子弹斜着发射,再加入数学函数可以让子弹从中间向四周
随机散开
动画怎么做出来的:多张图片的定时切换
在背景上飞机怎么飞到指定的位置:开始给一个速度,飞到指定的位置指定一个边界限制
怎么选飞机和选场景:要用面向对象的思想特别简单

怎么实现攻击boss它才会反击:碰撞检测,碰撞了就触发某种事件
图形化界面中在想要执行的py文件上面的目录地址直接输入cmd进入该目录下的终端窗口,
如果想要直接执行该启动文件让程序跑起来,直接python 文件名.py就可以了, 如果不输入python,
直接文件名.py是打开py文件而不是运行

win+p  : 快速更改当前投影模式,实现多屏显示,一般用于投影仪
游戏结束的时候飞机消失,其他精灵继续的透明效果是怎么实现的?直接让英雄飞机消失,然后让游戏结束的
字体出现并渲染在游戏界面上速度设为0.
pygame中的自定义事件无论多少都是写USEREVENT +1
锻炼口才
python的类中设置静态方法的优势是可以在不用创建对象的前提下,直接类名.方法名直接使用,文件中的所有对象
都可以直接调用,适用于一些公共的操作,静态方法的调用方式有两种,第1种是对象名.方法名,第2种是类名.方法名

win切换盘符:
直接盘符名称冒号:d:
如果想快速启动python文件可以在终端运行启动,首先在图形化界面切换到想要执行的文件目录下
在该目录上边的路径上可以直接输入cmd进入该目录下的shell,输入python main.py(启动文件名)运行
win中cls清屏,linux中是clear, python中os.sys(cls)
win中退出是ctrl+c,linux中退出是ctrl+z和ctrl+c都可以
pygame中surface对象也就是图像对象,也可以说是一个精灵对象
linux中如果软件死机或者进程被占用,可以先用ps -ef|grep 进程名 查看该进程的进程号
然后用kill -9 进程号 可以杀死该进程,-9是强制杀死
psgrep 进程名 可以直接查看该进程的进程号

# 监听键盘上的事件用pygame.key.get_pressed()
key_down = pygame.key.get_pressed()
if key_down[pygame.K_LEFT]:
print("向左移动")
game_sprites.hero2.rect.x -= 5

#监听窗口中的所有事件用pygame.event.get(),如果需要鼠标操作就需要要判断鼠标是否按下了
for event in pygame.event.get():                   #获得事件
if event.type == pygame.MOUSEBUTTONDOWN:           #判断鼠标位置以及是否摁了下去。
if 180 <= event.pos[0] <= 360 and 292 <= event.pos[1] <= 365:
 #开始游戏
 engine.start()

#监听窗口中的自定义事件,如果自定义事件的时间到了的话就会触发某种功能
event_list = pygame.event.get()
for event in event_list:
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == game_sprites.CREATE_ENEMY:
# 创建一架敌机
print("创建一架敌机")
enemy = game_sprites.EnemySprite()
game_sprites.enemys.add(enemy)
# 出发敌机的攻击事件
enemy.fire()

#生成一个窗口
screen=pygame.display.set_mode([640,480])里面的第一个参数必须是一个列表,也可以是如下的形式
screen=pygame.display.set_mode((640,480), 0, 32), 第一个参数是大小,第二个参数是控制是否全屏,第三个参数是显示颜色深度
 

猜你喜欢

转载自blog.csdn.net/qq_40994972/article/details/81583742