一个用于教学编程的小游戏开发框架。

pygamelib的Python项目详细描述


Linux: OkWindows: OkMac OS: OkGPLv3 licensePRs WelcomeDocumentation StatusCII Best PracticesCircleCIcodecov

pygamelib公司

一个(不是那么)小的库,用于基于终端的游戏开发。在

先发制人的警告

在版本1.1.1和1.2.0之间,该库从hac game lib重命名为pygamelib,并对其核心进行了重新处理。因此,即使所有对象在不同版本之间仍然保持API兼容,但在导入过程中仍需要进行一些重命名。在

简介

历史上,这个库被用作基础,教6到15岁的孩子编码。 它的目标是给新的和学习的开发人员(包括孩子们)提供一个环境,让他们专注于算法,而不是糟糕的显示或精确的管理。在

它最初是一个非常简单的库,功能很少,但随着时间的推移,它变成了更多的功能。以至于现在可以用它进行非常体面的游戏。 因此,这是显然与其他游戏框架相比仍然非常简单,它仍然不打算成为真正的游戏开发者的任何严肃的东西。 然而,它现在可以被有抱负的游戏开发者用来介绍2D游戏开发。在

有一个包含教程的Youtube channel。在

suparex.py screenshot

以下是该库目前可以实现的功能的快速视图(base_游戏很久没有更新):

base_game.py animation

游戏基地利用:

  • 主要的“游戏引擎”(pygamelib.engine.Game游戏)在
  • 许多不同类型的结构(从pygamelib.board_项):墙(好吧,墙…),宝藏(宝石和钱袋),一般结构(树)和通用结构(心脏和门户)
  • Game()的菜单功能。在
  • 玩家和NPC(来自pygamelib.board_项)在
  • 库存(来自pygamelib.engine.Inventory)在
  • 玩家和库存统计
  • 随机执行器(2级NPC)和路径执行器(1级NPC)(来自pygamelib.actuators.SimpleActuators)在

有关更多最新示例,请查看:

下面是一个制作糟糕的Suparex gif: Suparex animation

优点

希望您会发现pygamelib有很多优点:

  • 它是simple。开始编写游戏需要非常有限的Python知识。在
  • 然而,power为更高级的程序员提供了lot的可能性。在
  • 可能性会随着学生的增加而扩大,为初学者提供“足够好”的基本功能和默认值,并为高级程序员提供大量调试机会。在
  • 默认情况下,有很多可用的。你知道初学者只显示一块板的一部分需要多长时间吗?使用pygamelib只需1秒,如果必须手工操作,可能会稍长一些;)
  • 它基于终端。这意味着没有显卡依赖性,跨平台,和一个激发想象力和创造力的框架。在

安装(推荐)

安装稳定版本的最简单方法是使用pypi

pip3 install pygamelib

它将拉动所有依赖项

从来源和要求安装

Python

pygamelib只支持python3.6+。它将not与Python2一起运行。 我们使用pipenv来管理依赖关系。在

运行Pipenv以安装要求:

^{pr2}$

如果需要运行所需的开发依赖项:

pip3 install pipenv
pipenv install --dev

运行测试

要运行单元测试,请使用以下命令:

python -m unittest discover -s tests

终端颜色和表情

这并不是一个硬性的要求,但彩色表情符号确实让游戏变得栩栩如生。
然后我们建议安装一个彩色表情符号字体Noto Color Emojis(在大多数Linux发行版中,您可以从package manager安装它,搜索“Noto Color emoji”)。在

如果您的终端应用程序没有显示彩色表情图,请查看这个file并按照说明操作。在

运行示例

要使用pipenv运行示例:

pipenv shell
(pygamelib)cd examples/suparex
(pygamelib) python3 suparex.py

局限性

有很多限制,但最重要的是:

  • 只支持一个玩家。在
  • 没有什么保护措施可以防止内部混乱。这是有意,我希望孩子们学会使用API,而不是弄乱每个类的内部结构。在
  • 它是纯Python(它很慢)。在

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

推荐PyPI第三方库


热门话题
java构建Apache配置单元不可能解决依赖关系   java如何从安卓 studio中的库模块调用活动   将Javascript日期转换为java日期   jvm InnoSetup:检测Java是32位还是64位   java如何向Arraylist添加新数据?如何删除重复的用户输入?   java Spring数据MongoTemplate更新嵌套数组失败   java文本按钮按下按钮时更改文本颜色?   java可以使用“不包含ObjectFactory.class或jaxb.index”来进一步澄清类加载器问题   cmd Java无法找到或加载主类Class01   java如何将jsp中的表单值连接到SpringMVC中的控制器   在Clojure REPL中使用自定义Java类   java如何在Javafx中的特定坐标系下将ClickListener设置为背景图像   java获取文档键mongodb spring模板上的不同记录计数以及其他where条件   应用程序被终止时,java服务将重新启动   反射API中新类[0]的java含义   java映射反序列化属性混合   java JavaFX监视/记录网页上执行的事件