惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
博客园 - Franky
腾讯CDC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
V
V2EX
N
Netflix TechBlog - Medium
量子位
Jina AI
Jina AI
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
爱范儿
爱范儿
博客园 - 叶小钗
D
Docker
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
“编学编玩”用Pygame编写游戏(6)PY_RPG 一个pygame的简单封装。
J.sky · 2017-12-29 · via 碎言

为什么要封装?

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目录下