前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自制街机游戏(2):再次实现

自制街机游戏(2):再次实现

作者头像
不可言诉的深渊
发布2019-07-26 16:40:52
1.1K0
发布2019-07-26 16:40:52
举报

自制街机游戏(1):初次实现

5.再次实现

在本节中,我不演示如何逐步设计和实现游戏,而在源代码中包含大量的注释和文档字符串。你可通过研究源代码来了解其工作原理,但这里还是简单地说说其中的要点(以及不那么直观的细节)。

  • 这个游戏包含5个文件:包含各种配置变量的config.py;包含游戏对象的实现的objects.py;包含主游戏类和各种游戏状态类的squish.py;游戏使用的图像weight.png和banana.png。
  • 矩形的方法clamp确保一个矩形位于另一个矩形内,并在必要时移动这个矩形。这个方法用于避免香蕉移到屏幕外。
  • 矩形的inflate调整矩形的尺寸——在水平和垂直方向调整指定数量的像素。这个方法用于收缩香蕉的边界,从而在香蕉和铅锤重叠到一定程度后,才认为香蕉被砸到。
  • 这个游戏本身由一个游戏对象和各种状态组成。游戏对象在特定时间点只有一个状态,而状态负责处理事件并在屏幕上显示自己。状态还能让游戏切换到另一个状态。例如,状态Level可让游戏切换到GameOver状态。

就这些,要运行这个游戏,可执行文件squish.py,如下所示:

python squish.py

你必须确保其他文件与squish.py位于同一目录中。

下面几幅图显示了这个游戏运行时的一些屏幕截图。

6.进一步探索

下面是一些改进这个游戏的点子。

  • 添加声音。
  • 记录得分。例如,每躲开一个铅锤得16分。使用文件或在线服务器存储最高得分如何?为此可分别使用之前讨论的asyncore和XML-RPC。
  • 让更多的物体同时从天而降。
  • 将逻辑反过来,要求玩家尽可能撞击而不是避开从天而降的物体,就像Peter Goode开发的老游戏Egg Catcher那样(游戏Squish主要借鉴了这款游戏)。
  • 让玩家有多条“命”。
  • 创建游戏的可执行版。

有关更精致(且娱乐性极高)的Pygame编程示例,请参阅Pygame维护者Pete Shinners开发的游戏SolarWolf(http://www.pygame.org/shredwheat/solarwolf)。Pygame官网提供了丰富的信息,还有其他几个游戏。如果你通过尝试Pygame迷上了游戏开发,可能想参阅网站http://www.gamedev.net或http://gamedev.stackexchange.com。通过在网上搜索还可找到很多其他类似的网站。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档