我正在制作基于 Nethack 的 Rogue Like 游戏。我需要决定最好的班级来放置在地牢中导航的方法。现在我实现移动的方式是简单地向播放器询问字符输入。(使用 W、A、S、D 作为箭头)。我设置了一段时间,所以它循环直到触发字符结束程序。在这个循环中,它从打印地牢的状态开始。要求输入字符,然后是 if 语句以检查输入的字符。在每个 if 语句中,它将调用一个相对于要移动的输入/方向的方法。所以我将拥有:moveUp()、moveRight() 等等。我只需要弄清楚哪个类最适合放置这些方法,这将决定如何调用这些方法、传递什么以及很快。
我将以粗体列出这些类,并用缩进表示继承。这是我参与的课程:
- 实体:基类。它本质上代表任何/所有对象
- 生物:基本上代表地牢中的一个活的“东西”
- 玩家:基本上是一个扩展的生物.. 这是谁在玩的类。
- Item:作为任何被视为 Item 的东西的基类
- 武器:武器..
- 盔甲:一件盔甲..
- 消耗品:可以消耗的物品..还有其他几个类别
- 生物:基本上代表地牢中的一个活的“东西”
我还有一些独立课程:
- Tile:“游戏板”上的一个空间。它拥有一个指向 Creature 的 ptr、指向 Items 的指针向量和一个显示该空间所代表内容的字符。
- DungeonLevel:这是单个关卡的游戏板/网格。它有一个Tile对象的 2D 矢量。
我已经有地牢生成正确,什么不是。对于每个DungeonLevel对象,所有的Tiles都将保持在同一个位置。因此,当玩家或生物移动(1 个位置)时,程序将调用这些方法来操作DungeonLevel对象(Tile 的2D 向量),通过将玩家/生物从 Tile 传递到 Tile 来反映它们移动到的位置。然后程序重新开始循环。
我不确定将这些方法放在哪个类中。我基本上需要 Creatures 和 Player 才能移动。玩家根据字符输入移动。游戏中生成的生物/怪物将向玩家移动 1 个空间(如果可能)。
所以我不确定我是否应该使用相同的方法来控制任何实体,或者DungeonLevel是否应该控制移动,或者 Creature 基类和派生的 Player 类应该有相同的移动方法,或者 Creature 是否应该有自己的移动方法并且 Player 应该有自己的。
建议?谢谢。