练手项目:利用pygame库编写射击游戏
本项目使用pygame模块编写了射击游戏,目的在于训练自己的Python基本功、了解中小型程序框架以及学习代码重构等。游戏具有一定的可玩性,感兴趣的可以试一下。
项目说明:出自《Python编程 从入门到实践》中12-14章节的例子。
- 游戏包含飞船、外星人两个角色。
- 外星人编队向左右和下方移动,直至接触到屏幕底端或碰撞到外星人;飞船顶端可发射子弹击落外星人。
- 随着游戏的进行,子弹速度、飞船移动速度、外星人移动速度以可设置的速度提升,增加游戏难度和可玩性。
- 游戏界面显示剩余飞船数目(左上角)、最高分(中上)、当前分和游戏等级(右上角)等信息。
github地址:https://github.com/ikheu/alien_invasion
效果图如下:
程序框架:
alien_invasion.py | 包含运行游戏的run_game函数 |
alien.py | 外星人类 |
bullet.py | 子弹类 |
button.py | 按钮类 |
game_functions.py | 包含实现游戏功能的函数 |
game_stats.py | 跟踪游戏信息的类 |
scoreboard.py | 显示得分的类 |
settings.py | 存储设置的类 |
ship.py | 飞船类 |
项目心得:
- 项目中使用pygame模块中的功能比较少,主要包括两部分:和图形相关的reac对象,以及判断对象间的碰撞的函数。而且这两部分很容易理解,因此项目封闭性不强,很适合作为锻炼python基本功的练手项目。
- 代码重构方面:程序的各部分应功能相对独立,层次清晰明了。如在setting.py中设置游戏参数,而避免直接把具体参数写到功能相关的程序里,导致后续修改的困难。同时还要避免把函数写得太长,如最复杂的game_function文件里包含许多个功能单一的函数。在添加新功能前,要审核现有代码,对混乱、低效的代码进行清理。有句话叫动态类型一时爽,代码重构火葬场,可能是程序结构还比较简单吧,这个还没能深刻体会到。
- 在写代码时,要尽量保持好的风格。可以参考Effective Python一书。
- 熟练使用git、github进行版本控制(很重要)。
另外写的博客貌似也没人看啊,有点沮丧。不过还是要沉住气,就权当自己的私人技术笔记了,傻笑:)