C++ 我应该将此方法放在哪个类中?C++;
我正在制作一个基于Nethack的类似流氓的游戏。我需要决定放置在地牢中导航方法的最佳类。现在,我实现移动的方法是简单地向播放器请求字符输入。(使用W、A、S、D作为箭头)。我设置了一段时间,使其循环,直到触发字符结束程序。。在这个循环中,它首先打印地下城的状态。要求输入字符,然后是if语句以检查输入的字符。在每个if语句中,它将调用一个相对于要移动的输入/方向的方法。所以我有:moveUp(),moveRight(),等等。。我只需要找出哪个类最适合放入这些方法,它将决定如何调用这些方法,传递什么,等等 我将以粗体列出这些类,并用缩进表示继承。以下是我参与的课程:C++ 我应该将此方法放在哪个类中?C++;,c++,class,object,inheritance,implementation,C++,Class,Object,Inheritance,Implementation,我正在制作一个基于Nethack的类似流氓的游戏。我需要决定放置在地牢中导航方法的最佳类。现在,我实现移动的方法是简单地向播放器请求字符输入。(使用W、A、S、D作为箭头)。我设置了一段时间,使其循环,直到触发字符结束程序。。在这个循环中,它首先打印地下城的状态。要求输入字符,然后是if语句以检查输入的字符。在每个if语句中,它将调用一个相对于要移动的输入/方向的方法。所以我有:moveUp(),moveRight(),等等。。我只需要找出哪个类最适合放入这些方法,它将决定如何调用这些方法,传递
- 实体:基类。它本质上表示任何/所有对象
- 生物:基本上代表地牢中的一个活物
- 玩家:基本上是一种扩展生物。。这是为谁比赛而上的课
- 项目:充当任何被视为项目的基类
- 武器:武器
- 盔甲:一件盔甲
- 消耗品:可以消费的物品。。他还有几门课
- 生物:基本上代表地牢中的一个活物
- 平铺:在“游戏板”上的一个空格。它包含一个指向生物的ptr、指向物品的指针向量和一个显示该空格所代表内容的字符
- 地下城关卡:这是单关卡的游戏板/网格。它有一个二维向量平铺对象
建议?谢谢。因为您正在玩2d游戏。我猜你正在使用opengl。或者directx 用来移动地牢的地砖。我建议你不要移动它们。但是,取而代之的是移动“相机”,opengl和directx有很多关于渲染工作原理的书籍。这样你就可以做了。检查屏幕上是否有瓷砖,只画屏幕上的瓷砖 至于决定谁应该控制什么。球员的控制权是他自己的,这是合乎逻辑的。但是有允许外部类移动他的功能。不允许直接接触他的私人物品,因为他们不是朋友;) 现在来看看你们的课程应该如何安排。很难确定地回答这个问题。但是从呈现的内容来看 这样看,玩家、生物和物品都从实体继承。他们都需要什么共同点?他们都需要一个职位。函数可以获取和设置它们的位置。他们的轮换。也许可以用一个名字来识别他们。还有一个更新函数来处理发生在他们身上的任何动作?这就是虚拟功能派上用场的地方 因为您可以进行
虚拟void更新(inta_ideltime)代码>
在你的基础课上。从它继承的每个符号都有自己的更新类型。i、 电子播放器检查按键。而敌人只更新他们的旋转和移动
编辑:这样你就可以储存你敌人的所有玩家物品。作为实体*,当您调用update时,因为它是虚拟的。它将根据实际类型调用适当的更新。这意味着您只需要一个列表来存储游戏中的每种类型的实体。结束
这样,您就可以将它们之间共享的所有内容都放在基类中。并且只把独特的东西放在主类中
我所说的一切只是建议,因为您的实现应该是最适合您所面临的确切问题的实现。唯一能让您更好地了解要在何处使用哪些实现的方法是通过实践,正如前面提到的,您应该明确地了解更多关于设计模式的知识,因为它将打开您的思路来编写代码。并允许您编写更简单易读的代码。希望这能有所帮助。这不是对你问题的回答,但根据你所做的决定,如果你还没有一本关于设计模式的书,我强烈建议你买一本。我有设计模式:可重用面向对象软件的元素,并推荐它。这本书让我对设计类和类间交互的不同方式敞开了心扉。是的,这是个好主意。谢谢你的建议。有一个C++教程,用于使用LIbtood库编程RoGuiKe游戏,它有一个思想相当好的类HealCracy。C++教程是基于更完整的Python教程(我已经涉足其中)。Roguelikes是传统的基于文本的教程。