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

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第三方库


热门话题
Java3D图表JavaGnuplotHybrid   java httpclient异常“org.apache.http.conn.ConnectionPoolTimeoutException:等待连接超时”   java如何使用Drive API连接到Google Drive文件夹   java如何正确组合@PathParams和@RequestBody?   使用JsonParser的java Jackson反序列化正在跳过@context的第一个键值对   java Twitter4j为getCreatedAt和getCountry获取空白或null   java doOnNext()不会被称为Spring Webflux   java Liberty批处理在使用与spring批处理相同的输入参数启动作业时未引发异常(JobInstanceAlreadyExistsException)   api使用WordNet有没有简单的基于Java的词义消歧?   Java和YAML:如何解析多个YAML文档并将它们合并到单个YAML表示?   swing Java:mouseClicked事件不总是触发   从firebase获取Json作为字符串在java中不起作用   java将带有extrastring的意图从活动发送到选项卡片段   Java中的调用方法问题   java是否可以在TestNG dataprovider类中注入变量   java如何在安卓 studio中使列表中的项目可单击并引导到具有特定格式的新页面   java程序在eclipse中运行,但不在终端中运行   java无法让mockito模拟公共类的公共方法