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

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何时可以运行。toString()是否有可能返回重复的字符串?   使用REST进行Java应用程序登录验证?   java测试onErrorResume()Spring Webflux   java设置一个单元格样式,使数字显示为百分比ApachePOI   java仅替换regex az09   java将字符串附加到文件   java Hibernate:如何在集合中查找对象   当独立客户端为Web服务实例化代理时,java WebSphere会生成ClassNotFoundException   java简单算法。我做不好   java我的代码有什么问题?我想用Android制作一个“cardflip”动画   java如何模拟Springbean及其自动连接的参数?   java在Android中将arraylist对象的某些参数显示到列表视图中   java setOnclickListener(此)错误   java自动连接未按类型连接bean   java如何禁止在Viewpager上滑动?   java代码检查每个if语句吗?   java NIO选择器OP_READ和OP_WRITE,关于处理它们的一些问题   java如何在不锁定文件的情况下获取文件大小   Oculus Rift的Java API?   java是一种选择。仍然需要fork来设置bootClasspath