1

我正在创建一个基于 2D 的 RPG 游戏。类似于 Gameboy 的口袋妖怪。基本上,我的游戏地图是由 x x x 大小的地形创建的。还有风景对象(树木、灌木等)以及难以处理的东西(即标志、门、物品等)。目前,我一直在对这些对象进行硬编码。问题是,每次我添加风景对象、地形图块或其他任何东西时,都需要我为它添加一个类,指定一些不同的数据等. 基本上,我觉得我必须做很多重复的任务才能做这么简单的事情。

我害怕以后,我的项目会变得无法管理。每个新地形、风景或其他对象都继承自一个名为“GridElement”的类。

那么,将所有的瓷砖、风景等信息放入外部 XML 文件并在运行时加载,还是继续硬编码这些元素会更好吗?

主要问题是,这些元素中的大多数都需要对其应用特定的功能。其中一些需要在被踩到时调用事件。一些元素也是动态的(图块每隔几秒钟就会改变一次,例如水、花等)。

谢谢您的帮助!

干杯!

4

2 回答 2

2

最好将数据放入数据文件中,然后编写代码来处理这些数据文件。有多种原因:您提到一个,数据更易于管理(即,它会更清晰地组织并且更容易找到)。另一个重要的好处是它使数据更容易更改。当与其他人一起工作时会产生巨大的差异,但即使是单独工作时,当您在配置文件中而不是在代码本身中调整所有游戏性值时,它们也会容易得多。

您的注意事项确实意味着您通常必须为不同种类的元素创建不同的类,然后在 XML 中引用这些类;例如:

<grid_element>
  <class>GrassElement</class>
  <image>dark_grass.png</image>
  <xpos>10</xpos>
  <ypos>10</ypos>
</grid_element>

但尽可能远离硬编码的东西并在数据文件中进行。例如,可以在 XML 中定义被调用的不同事件:

<step_event>somethingOrOther</step_event>
于 2011-09-14T12:20:36.660 回答
2

作为一个宽松的规则,你应该只在你想要表示行为时创建一个新类,并用你的数据控制这个类的参数。

在您的情况下,您可能想要为您的花卉、灌木、墙壁和此类事物设置一个风景类。然后,您可以通过调用函数来设置位图、动画速度来自定义此类的对象。然后,这些数据来自哪里并不重要,它可以是硬编码的,来自对象工厂或从 xml 读取。

当你谈到你的可交互对象时,你确实需要额外的类,但尽量使它们更通用而不是具体。因此,如果您想在用户与对象交互时显示一条消息,您有一个通用的交互类,而不是符号类。然后这个类可以用于标志、书架、神秘的物品。

当涉及到特殊事件时,您有几个选择。最简单的是创建一个通用事件类,它可以指导新演员出现在屏幕上或将对象授予玩家。或者,您可以将函数指针/委托传递给当用户触发某些触发器时调用的对象(即,步入正方形,击败怪物)。最后,最复杂但最有可能使用 Pokemon 和类似游戏的,您可以创建/使用自己的脚本语言。

于 2011-09-14T12:40:35.580 回答