“编学编玩”用Pygame编写游戏(6)PY_RPG 一个pygame的简单封装。

作者:J.sky · 发表于:
2017-12-28T21:41:37.000000Z
· 更新于:
2023-08-13T22:54:33.266027Z
· Tag: pygame

为什么要封装?

pygame写起游戏都是函数式编写,对于一些简单的小游戏或许可以应付,随着游戏内容的增加,我们不可能只在一个.py文件中写下所有的游戏代码,这个时候,我们应该考虑对游戏中组件及对象进行封装,用面向对象的方式来进行游戏代码的编写。

一些具体的封装内容

游戏中的关键词,假设游戏没有条件判断,那么游戏从头运行到尾就是一部电影。 这样的话,我们定义一些游戏的基本对象:

  • 渲染器(APP)--只负责渲染游戏场景中存在的游戏片段,属性有:一个游戏片段容器及一些游戏窗口常用设置,并初始化游戏设置。
  • 游戏片段(scene)--可能是游戏中的一个片段,一个情节,一节过场,片头,片尾等,游戏片段中包含一个开关属性,用来控制是否可以渲染此游戏片段。
  • 游戏逻辑判断器--游戏中的裁判,负责判断修改游戏中的执行条件。
  • 精灵--游戏中的角色,他可以是游戏中的场景,主角,配角,怪物,子弹,文字对白。
  • 工具类包括:场景中文字渲染工具,游戏中的素材目录的定制,方便调用。一些其它可能需要重复使用的工具。

定义渲染器

渲染器定义为一个游戏的APP,他应该是这个游戏的最外层,可以定义他的,分辨率,标题,刷新频率。 如果游戏中有精灵贯穿全局(比如RPG游戏中的主要角色),这种精灵角色他不属于某个游戏片段,这样他应该存在于这个游戏app中。

定义游戏片段

一个gameApp中,至少得有一个游戏片段,游戏片段包括三个主要方法:

draw() update() handle_event()

这三个方法分别对应:

  • 渲染场景
  • 更新数据
  • 事件处理

当我们继承新建游戏片段类的时候,需要根据自己的需求重写这三个方法。

如何使用PY_RPG?

app = GameApp()#创建游戏
appscreen = app.screen#获取渲染器
app.scenes.append(MainScene(appscreen))#创建游戏菜单
app.scenes.append(TestScene(appscreen))#创建游戏内容
app.scenes.append(GameOverScene(appscreen))#游戏结束画面
app.run() #游戏开始

根据需要创建并重写上边的三个类,然后创建游戏就可以了,现在这样看来,游戏的创建是不是很有层次了?

这个框架还没有封装完毕,我还会继续的,之后的游戏制作都要从这个框架上弄起了,初步还要写几个完整的小游戏例子。

以下为游戏效果图,建议下载相关代码跑一下,有问题可以留言给我。

输入图片说明

输入图片说明

输入图片说明

本文源码下载

请git clone My_pygame下所有代码,以免造成游戏跑不起来的情况。本例源文件在PY_RPG目录下