未知

ExpectoCastellum的Python项目详细描述


游戏引擎和基本地图构造

现在你有了一个游戏引擎。引擎是你构建和运行游戏的方式。对于所有的意图和目的来说,引擎就是游戏。主要方法有:新建、保存和播放。方法的完整列表如下。

让我们为测试游戏添加一些房间。我们可以通过以下两种方式之一添加房间:

< Buff行情> 走廊=test_game.new('房间',name='空走廊',description="它回应oes oes…") xyzy=测试游戏。新房间(名称='xyzy')

这两个方法都有效; new_room 使用第一个参数调用 new ,并且仅为方便起见。您可以使用可选参数定义新创建的房间的属性。 您必须提供新的房间、物品和NPC名称。此级别的规范对于引擎如何存储其数据是必需的。如果您忘记给您的房间命名,默认情况下,引擎会将其命名为"newroom"。更改文件室的名称,然后使用 test_game.update_game_dictionaries() 来确保文件室存储正确。

但是等等!我忘了给我的房间添加一些属性。别担心!这两个房间都是对象,您的引擎会在字典中跟踪它的房间,其中键为 room.name ,值为 room 。因此,以下两项均有效:

< Buff行情> corridor.start_location=真 test_game.roomdict['xyzzy'].description="您似乎正处于一个巨大洞穴探险的糟糕时期。"

现在,这不是一个合适的游戏地图。我们有两个房间,他们连在一起都没有!好吧,我们可以改变。每个房间都有一个名为"路径"的属性,这是一个以方向为键、房间名为值的字典。

< Buff行情> 测试游戏。roomdict['empty corridor'].添加路径({'n':'xyzy'}) xyzzy.paths={'s':'空走廊'}

我是故意的,故意的,可能会令人沮丧地与风格不一致,因为我想强调的是,有多种方法可以做事情,你应该以对你来说最有意义的方式来思考架构。在第一行中,我们通过引擎的 self.roomdict 访问名为"空走廊"的房间,并在房间对象上使用 add_paths 方法更新 test_game.roomdict['empty corridor'].paths with paths['n']=['xyzy'] 。第二行只是用适当的键和值替换默认的空房间 路径 字典。一般来说,除非一个房间只有一个连接,或者您非常了解您的地图,否则您可能希望使用"添加路径"。

每次在房间之间建立一个连接时,都要更新两个房间,这很乏味。好消息:你不必!每一个新的游戏引擎都会自动使用一个名为"镜像路径"的方法,该方法假设如果您从A房间向上到达B房间,那么您应该能够从B房间向下到达A房间,等等。

< Buff行情>

final_message=test_game.new('room',name="quentulus quazgar mountains",description="在山边的火信中拼写为:"我们对给您带来的不便深表歉意。") shire=test_game.new('room',name='the shire',description="这里是霍比特人。")

最终消息。添加路径({'e':'xyzy'}) 走廊。添加路径({'u':'the shire'})

test_game.save()

test_游戏中的 save 方法添加反向路径,以便玩家可以从夏尔(shire)通过向下、向北和向西到达昆都拉斯夸兹加尔山(quentulus quazgar mountains),然后保存您的编辑。如果要禁用路径镜像,只需将 test_game.mirror_paths 设置为 false

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

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库