2011-12-07 60 views
0

我正在使用Perl的RPG库,并希望使每个部分尽可能互换。我目前正在创建Map子系统并将继续到Character子系统。我应该如何处理角色和地图之间的交互?在角色扮演库中将角色与地图分离

$character->move('left'); # Character encapsulates a Map 

或者类似的东西

$runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character 

它似乎并不像一个地图应该是一个字的一部分,但它似乎尴尬并非如此。

另外,我应该如何区分地图的瓦片的图形元素和角色的外观与其基础数据?或者在这种情况下,数据的图形方面的一部分?

我知道我正在反思这一点,并希望使这个系统更灵活,而不是完全过度工程化。谢谢!

回答

1

第一部分:

取决于。如果没有看到一些你希望人们能够用你的图书馆来实现的游戏的设计文档,那么你就无法确定地回答这个问题。如果你想获得灵感,Roguelike-Utils有一个全球性的世界对象,相关的比特悬停。

第二部分:

使瓦片成为一个对象。图形方面只是一个属性。你知道你正确地做到了这一点,当你将它解耦足够的时候,可以将tile和其他东西传递给不同的渲染器,从而产生(可伸缩或位图)图形,ANSI终端输出甚至像ADVENT这样的文本描述。由于一个对象不仅包含哑数据(外观),而且还将行为与它关联起来,所以可以通过流体动力学或温度交互来轻松扩展tile系统。

+0

谢谢,这非常有帮助!所以对于Tile对象,我可以有Map :: Tile :: Graphical :: GTK,Map :: Tile :: Graphical :: Qt等抽象的Map :: Tile类,它们是具体的类和Map :: Tile: :文本是另一个具体的类?然后在地图中确保添加的每个图块类型都是相同的? (我真的需要刷新设计模式)。 –

相关问题