源码链接:添加链接描述
一、具体演示
1.怪兽分为小怪,和大怪;大怪可以发射子弹
2.英雄飞机共有10个生命值
3.英雄飞机可以上下左右移动
4.显示了英雄生命值,消灭怪兽数量,
5.提供了供应包,可以改变英雄飞机发射的子弹
二、项目概述
hm_01_pygame_base05.py
hm_01_pygame_base06.py,飞机大战【非面向对象的飞机大战,作为一个熟悉,热身】
message.py ,message2.py,是在pygame屏幕上输出一句话【作为一个熟悉,热身】
plane_main2.py,plane_sprites.py,是【正式】的飞机大战项目
使用python实现飞机大战游戏,适合python基础入门,同时在一般的飞机大战基础上,新增了很多功能
三、项目具体细节
1.背景,飞机 【完成】
2.敌机,多个 —定时器+事件监听,销毁【完成】
3.飞机子弹 【完成】
【具体实现操作】
【分析:】飞机,敌机等等,都是最后画出来的,所以重点是什么时机添加进去,
子弹- -每隔0.5s监听到事件,添加子弹到精灵组中==》画出子弹了,
【操作】在init中创建精灵组,监听中,添加进去。
每隔 Xs,根据飞机的位置,发射一次,
但是,没有绑定飞机:
eg:多个大怪出现的时候,每个大怪就需要有不同的精灵组
solution:在hero类中,创建子弹精灵组,main中画出来,fire负责将子弹加入精灵组中
4.飞机移动 – 设置边界【完成】
5.飞机喷火 【完成】
6.碰撞效果
子弹–敌机 【完成】
hero–敌机
6.1子弹–敌机:
敌机爆炸:把爆炸精灵组画出来,监听到爆炸,就将爆炸类加入精灵组中
6.2hero–敌机 :
所以应该是,先清屏,然后打印“游戏结束“,再等待按键—调用此方法
self.__game_over()
【solution】 设置一个游戏结束的标志,以便实现按键结束
敌机,子弹,都是事件监听中【每隔Xs】出现的,所以,设置此标志后,就不会出现了
self.gameover_flag = False
7.怎么在屏幕上打印一句话 查找字体 C:\WINDOWS\Fonts\ARIALN.TTF
==实现生命值,消灭怪兽数量
8.大怪2 3
大怪–发子弹,
【注意相对速度:大怪,子弹、背景都在运动】
要是速度没有选好—可能出现后退的情形
可以设置每颗子弹出现的时间
9.大怪爆炸
英雄,碰子弹—true,子弹消失;
英雄+效果
10炸弹供应
原来子弹,供应子弹—都是event中监听
设置一个flag,判断是原来的,还是供应的,【supply碰撞了,就设置为供应的】
在游戏循环中—时间,使用变量,估计供应结束的时间,
若结束,恢复标志
11.大怪3 【待续】