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

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在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?