练手项目:利用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进行版本控制(很重要)。

另外写的博客貌似也没人看啊,有点沮丧。不过还是要沉住气,就权当自己的私人技术笔记了,傻笑:)

posted @ 2018-02-24 13:03  ik-heu  阅读(868)  评论(0编辑  收藏  举报
levels of contents