事件驱动的python游戏引擎

ppb的Python项目详细描述


追击皮熊

追加PyBube,也称为{{CD1}},是一种教育 资源。最明显是用来教计算机科学的,它可以是 对于任何有助于模拟的主题都是有用的工具。

游戏引擎

在其核心,ppb提供了许多使其完美的特性 用于电子游戏。GameEngine本身提供了一个可插入的子系统 添加新功能的体系结构与子类化和 延伸System。此外,它还包含Scenes的状态堆栈。 简单的容器,允许您在 简单的方法。

整个系统使用的事件系统的可扩展性与 系统的其他部分。将新值注册到现有事件类型,以及 甚至覆盖默认值。添加新的事件系统非常简单 使用新数据类型调用Engine.signal。而不是出版商 系统引擎知道自己范围内的所有内容,并且只调用 具有适当回调的对象。最基本的事件是Update 你的处理程序应该与签名匹配 on_update(self, update_event, signal)

指导原则

因为ppb开始是一个非常适合学习的游戏框架, 该项目有几个长期目标:

教育友好型

非技术教育工作者应该在很少的时间 训练。虽然需要一些编程知识,但是 对事物的思考和对事件的反应只允许教育者集中精力 在他们的课上。

惯用的python

基于ppb构建的项目应该看起来像惯用的python。它也 应该看起来像现代Python。因此,我们经常添加新的语言 功能一出现,就让新用户知道 ppb运行在最新的python上。

面向对象和事件驱动

ppb游戏是由继承自 EventMixin。每个对象只有足够的信息来响应 提供的事件,它始终包含当前的BaseScene。因为 ppb没有事件的主列表,您可以提供新的事件 只是为了给你的游戏增加更多的粒度控制。

硬件库不可知

因为ppb强烈地尝试可扩展和可插入,所以 硬件扩展可以为ppb提供自己的钩子,您可以 几乎无缝地在各种python库之间切换。

乐趣

其中一位维护人员说得最好:

If it’s not fun to use, we should redo it

ppb是关于锉掉粗糙的边缘,以便创造的乐趣和 两者都强调发现。新用户应该能够构建 几小时后的第一场比赛,之后继续探索。

试试看

按标准方法安装ppb:

pip install ppb

ppb提供了一个run函数,它使启动单个 屏幕游戏。

要制作一个非常简单的游戏,制作一个目录并添加一个图像文件 对它调用了ship.png。然后将以下内容添加到python文件中并 运行它。

importppbclassShip(ppb.BaseSprite):defon_update(self,update_event,signal):self.position+=0,-(4*update_event.time_delta)defsetup(scene):scene.add(Ship(pos=(0,3.5)))ppb.run(setup=setup)

兼容性

ppb保证与python 3.6或更高版本兼容。

参与

最快的参与方式是查看ongoing discussions. 如果您已经在使用ppb请随时报告错误,建议 增强功能,或要求新功能。

如果你想贡献代码,一定要阅读相关部分 of贡献.md

更改日志

0.5.0

我们想要一个更小的版本,但是我们做了很多事情 几个月。最重要的是所有的输入事件 在里面!一些很酷的东西包括精灵自动缩放和 在使用事件系统的场景之间移动的新方法。那意味着 旧方法已被正式弃用。

新东西:

  • 鼠标按钮事件
  • 关键事件
  • 在游戏窗口中添加标题
  • 基于游戏单元大小的精灵缩放
  • 键代码标志
  • 新的场景改变了我使用事件系统的机制

更改内容:

  • 场景默认值现在是类属性
  • 大多数精灵默认值现在是类属性
  • 现在可以正确地键入标志
  • 如果运行为 是的。
  • 修复了框架与 视窗。
  • 修正了camera.point_in_viewport函数中的错误
  • 默认像素比率现在是64:1(64像素对1游戏单位)
  • 新的(更好的)运行功能
  • 其他类型提示修复程序

删除的内容:

  • 从精灵中移除bb属性

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java RandomAccessFile:在循环中写入(字节)或写入(字节数组),哪个更有效?   从命令行运行maven+eclipse的java   在java中无法用正则表达式替换字符串   java Eclipse输出字符与键盘键值不同   JavaWeb服务(服务器客户端)。服务器使用外部项目   java试图制作“夜间模式”过滤器   java Box2d加速和限制车轮速度   javascript JQuery DataTable页面长度在第1页之后不受尊重   java如何使用DefaultCellEditor使JT的列只能得到数字,并在点后用两个符号进行四舍五入?   无法在Java中实例化泛型类型实例   java My code在我的代码中出现数组越界异常,但在前两次输入出错后,它将运行并崩溃   字符串的Java代码压缩和解压缩   SpringBootJava。lang.IllegalStateException:无法解析公共组织中的参数[0]。springframework。http。响应<java。lang.Object>   java在安卓中访问容器的子级   为什么Java不能从InputStream正确地重新创建此映像?