pygame编写的坦克游戏(二)

来源:互联网 发布:淘宝卖家发布宝贝教程 编辑:程序博客网 时间:2024/04/20 05:59

搞游戏怎么也得有个引擎这种高大上的东东吧,用来加载图像、声音资源,用来控制游戏输入,开始结束场景啥的


先简单说明一些要点,个人感觉挺重要的:

1、输入控制,event这东东可以轮询按键,会产生按键状态、按键类型,按下一个事件KEYDOWN,松开一个事件KEYUP,按着不松也不会产生多个KEYDOWN就是了;这在坦克这个游戏里显示不完美,其它乱七八糟的方法试了很多,什么自动产生多个按键事件啦,不靠谱。

所以本程序里采用的方法是:只要没有KEYUP事件,就隔一帧重发KEYDOWN的事件到控制流程,这样按个“上”就能一直移动了,按着“开火”就能一直发射了。

2、图像资源里只有坦克向上的图,没关系pygame可以transform.rotate来旋转,transform.scale来缩放

3、计时器,pygame.time.Clock() 的实例,clock.tick(40)可以让程序刷新出40帧/秒,没有事件产生,也没关系啦,整个程序用帧来计时好了,反正偏差不大

4、绘图,每帧重绘一遍所有对象就是了,对象不多对帧率没什么影响,要注意的是按层次来绘图

5、玩家状态信息保存,剩几条命,当前火力装甲怎样(等级),都要保存起来,加了星也要进行升级处理

6、引擎控制一切嘛,当然要控制生成地图了,坦克的产生交给工厂搞定

7、声音,坦克静止时的声音、坦克移动时的声音、开火的声音、坦克被击毁的声音、击中钢板的声音、击中边界的声音、击毁砖头的声音、吃到宝物的声音、加命的声音、加分的声音、场景开始结束暂停的声音,差不多了吧

8、动画,如果一个对象有多帧的话,到了延时时间后切换成下一帧,例如:一般坦克2帧,红坦克3帧,河2帧,老窝2帧,宝物2帧,爆炸5帧,出生时7帧,在const.py里有定义

9、字体,找了一圈终于发现适合坦克游戏的字体名叫:insert coin ( ICOIN.FON )

效果大概是这个样子的:


(未完待续)

0 0