2011-02-07 125 views
0

我想在面向对象的编程风格中制作RPG。我有oo编程经验,但从未与大量的类和子类合作过。我从这个 http://members.gamedev.net/emmanuel_deloget/ 开始,创建类似于它的我自己的结构。问题是我不明白结构如何使用。你是否为类似比赛的事物创建静态类并使用它们,或者你是否从单个种族类创建了一个对象?这让我感到困惑,因为我会假设你创建了一个单独的种族类,并且当'Main'类初始化时创建了所有的单个类,但是上面的图表并没有显示任何用于初始化这些对象的方法,除了构造函数。但是因为种族会有不同的成员变量值,我将如何使用上面的图表来初始化一个种族对象?或者这个图表不完整? (如果它不完整,那么这就是我所认为的混淆)如何使用RPG类层次结构?

+0

这个问题太广泛了,无法回答。 – 2011-02-07 18:50:19

回答

3

强烈建议:不要使用继承层次结构来表示RPG中的对象。

改为使用组合而使用prototype-based programming对象来定义对象属性和行为。

简单的原因是,无法在继承式类层次结构中表示复杂RPG的行为。

举一个例子,假设你在游戏中有一个铁魔像。它需要有:

  • 关于什么是能够造成破坏(即冲击非常抗拒,非常耐火,很容易生锈或酸)
  • “铁”材料的性能“大型人形”在战斗和行动方面的属性(不能飞行,可以行走,可以被斩首,可以使用超大型武器和装甲)
  • 魔法效果的“人造结构”的属性(不容易受到恐惧,不是生活,神奇地动画)
  • “半智能怪物”的属性与人工智能和行为的相互关系(敌对玩家,在瞄准球员等)

所有这些类型的属性理论上可以混合和匹配。所以你将永远无法定义一个包含它们的简单继承heirarchy。甚至不要尝试,只是让你的钢铁魔像成为相关属性的组合。

我从实施RPG对象模型的经验中发表意见 - 如果您有兴趣,请查看Tyrant(我多年前写的一个roguelike游戏)的源代码。我从一个继承层次开始,但最终不得不将整个代码重构为基于原型的模型。