Perl RPG库中字符与地图的分离
我正在用Perl开发一个RPG库,希望使每个部分都尽可能可互换。我目前正在创建地图子系统,并将继续创建角色子系统。我应该如何处理角色和地图之间的交互Perl RPG库中字符与地图的分离,perl,design-patterns,Perl,Design Patterns,我正在用Perl开发一个RPG库,希望使每个部分都尽可能可互换。我目前正在创建地图子系统,并将继续创建角色子系统。我应该如何处理角色和地图之间的交互 $character->move('left'); # Character encapsulates a Map 或者类似的 $runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character 地图似乎不应该是角色的一部分,但在其他方面似乎很尴
$character->move('left'); # Character encapsulates a Map
或者类似的
$runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character
地图似乎不应该是角色的一部分,但在其他方面似乎很尴尬
另外,我应该如何将地图平铺的图形元素和角色的外观与其基础数据分离?或者在这种情况下,图形是其数据的一部分
我知道我想得太多了,我想让这个系统更灵活,而不是完全过度设计。谢谢 第一部分:
视情况而定。如果没有看到一些游戏的设计文档,你就无法肯定地回答这个问题,你希望人们能够通过你的库实现这些游戏。如果你想获得灵感,你需要一个全球性的对象,这个对象的相关部分正在悬挂
第二部分:
使平铺成为对象。图形方面只是一个属性。当您将其解耦到足以将瓷砖和其他内容传递给不同的渲染器,从而生成(可缩放或位图)图形、ANSI终端输出,甚至类似的文本描述时,您就知道您这样做是正确的
由于对象不仅封装了哑数据(外观),而且还将行为与之关联,因此您可以通过流体动力学或温度交互轻松扩展磁贴系统。谢谢,这非常有用!所以对于Tile对象,我可以有一个抽象的Map::Tile类,其中Map::Tile::Graphical::GTK、Map::Tile::Graphical::Qt等是具体的类,而Map::Tile::Text是另一个具体的类?然后在地图中,我确保添加的每个瓷砖类型都是相同的?(我真的需要复习一下设计模式)。