游戏的中文文档

欢迎阅读Minecraftpy的官方中文文档。

这个文档主要讲述的是游戏的基本内容,而非特性,那是Minecraft wiki干的事。当然,也会涉及一些实现细节。

中文文档被分成了如下4个部分:

  • 开始之前—您在游玩之前要做什么
  • 游玩之时—准备游玩时,可以读一下这部分
  • 致开发者—讲述游戏特定的实现细节
  • 做出贡献—对于想要为游戏或文档做出贡献的人,应该阅读这一部分

我们欢迎您为该文档做出贡献,或者把它翻译到另一门语言。

那么,开始阅读吧!

下载&安装

通常情况下,游戏启动器会自动完成这个步骤,您只需指定一些参数。

这一节讲述的是如何手动下载并安装游戏至启动器。

阁下可以在这里获取游戏的全部源代码,使用git clone或者直接下载压缩文件

在开始下一步之前,您应先确保计算机上有 Python3.8 或更高版本并且安装有 pip 包管理程序。

游戏使用了很多依赖项,并且游戏的不同版本可能需要不同版本的依赖项,必须让不同版本的游戏运行在不同的虚拟环境内。使用 Python 自带的venv就可以做到这一点。

这里不过多赘述虚拟环境的用法,查看标准库中 venv 的介绍以了解如何创建及激活虚拟环境。

确保在游戏源代码目录创建并激活了虚拟环境后,可输入以下命令来安装所有依赖项:

pip install -r requirements.txt

若上述命令没有出错,您便可以输入下面的命令来直接启动游戏:

python3 - m minecraft

可见,您并不需要安装即可游玩这个游戏。

场景的应用

游戏有着一堆界面,例如开始界面、创建存档的界面、设置参数的界面等等,然后才是实际游玩的界面。

为了方便实现这些功能而不是使用一堆if,场景(Scene)就这样诞生了。

当然,该游戏也同样实现了场景这一功能,还是挺简单的说。

使用场景

欲使用场景,应先导入之:

from minecraft.scenes import Scene
from minecraft.utils.utils import *

场景继承自EventDispatcher,这里不多赘述,可点击链接查看文档。

同时,场景有3个回调函数:

  • Scene.on_scene_enter()—进入场景时调用
  • Scene.on_scene_leave()—离开场景时调用
  • Scene.on_language_change()—在改变语言时调用

创建好新的场景类后,需要把它的实例添加到一个字典(私有的)中才能访问。

添加并切换至一个名为MyScene的代码如下所示:

class MyScene(Scene):
    pass

get_game_window_instance().add_scene("ext:my_scene", MyScene)
get_game_window_instance().switch_scene("ext:my_scene")

我们并不赞成使用get_game_window_instance()获取游戏窗口的实例,您应该使用其它方法来达到相同的目的。

同时,add_scene也可传入若干关键字参数和位置参数用于实例化类。

虽然程序对名称中是否添加主命名空间(这里是ext)没有硬性要求,但一直这样做是一个好习惯。

使用 GUIFrame

Scene.frame为一个GUIFrame1对象,监听各种事件并反应到小部件上。

需要注意的是,游戏会在进入或离开场景时强制启用或禁用Scene.frame(通过enable属性)。

关于小部件的详细描述,请转到使用小部件一节。

已有的场景

以下列出了原版游戏中所拥有的场景:

  • minecraft:start—标题页面
  • minecraft:singleplayer—单人游戏的选择存档的场景

它们的代码都包含在 minecraft/scenes 目录中,可随时查看。


1

完整的命名空间为minecraft.gui.frame.GUIFrame,该类重写于pyglet.gui.frame.Frame