我正在制作一款基于Nethack的游戏。我需要决定最好的班级来放置通过地牢进行导航的方法。现在我执行移动的方式是只需要播放器输入一个字符。 (使用W,A,S,D作为箭头)。我有一段时间建立,所以它循环直到触发器字符结束程序。在这个循环中,它通过打印地下城的状态开始。要求输入字符输入,然后输入if语句来检查输入的字符。在每个if语句中,它将调用一个相对于想要移动的输入/方向的方法。所以我会有:moveUp(),moveRight()等等。我只需要弄清楚哪个类最适合放这些方法,这将决定如何调用方法,传递什么,以及等等。我应该在哪个类中放置此方法? C++
我将用粗体列出类,并用缩进表示继承。这里是我涉及的类:
- 实体:基类。它本质上表示任何/所有对象
- 生物的:基本上代表了地牢
- 球员生活“东西”:基本上是一个扩展的怪物..它是谁在玩的类。
- 项目:作为一个基类的任何一个被认为会项目
- 武器:一个武器..
- 护甲:一块装甲..
- 消耗品:可以消耗的物品..有其他几个类别
- 生物的:基本上代表了地牢
我也有一些独立的类:
- 瓷砖:在A空间 “游戏键盘”。它拥有Creature的ptr,指向Items的向量以及显示该空间所代表的字符的char。
- DungeonLevel:这是单个级别的游戏板/网格。它有一个2D向量Tile对象。
我已经有地牢生成正确,什么不是。对于每个DungeonLevel对象,所有的瓷砖将保持在同一个位置。因此,当一个播放或生物移动(1点)的程序将调用这些方法来操纵DungeonLevel对象(的2D矢量瓷砖的),以反映在播放器/生物通过从将它们移动到平铺到平铺。然后程序重新启动循环。
我不知道哪个类放这些方法。我基本上需要生物和玩家能够移动。玩家根据字符输入进行移动。游戏中生成的生物/怪物将向玩家移动1个空间(如果可能)。
所以我不知道我是否应该使用相同的方法来控制任何实体或者如果DungeonLevel应控制移动,或生物基类和派生,播放机,类应该具有相同的运动方法,或者如果Creature应该有自己的球员,球员应该有自己的。
对此提出建议?谢谢。
这不是您的问题的答案,而是基于您所做决定的种类,如果您尚未拥有设计模式,我强烈建议您阅读这本书。我有设计模式:可重用的面向对象软件的元素,并将其推荐。这本书让我开始思考不同的课程设计类别和交互方式。 – Joshua
是的,这是一个好主意。感谢您的建议。 – ModdedLife
在http:// codeumbra上有一个使用libtcod库编程roguelike游戏的C++教程。eu/complete-roguelike-tutorial-using-c-and-libtcod-part-1-setting-up,它有一个相当深思熟虑的课堂教学。 C++教程基于更完整的python教程http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod(我有一些参与)。 – Muscles