问题的背景
我正在开发一个基本的类似战舰的衍生游戏,我想随着时间的推移继续在 C++ 中添加功能(无图形)。目前我有一个 50 x 75 的游戏板,用char 类型的 2D 矢量(称为GameBoard )表示。我创建了一个游戏板并用“。”设置每个位置。字符。当您猜测坐标时,之前猜测的位置标有“-”,命中标有“X”
我的程序在哪里
我决定修改游戏以启用更多功能。我并没有走得太远,但是用伪代码勾勒出一个设计开始让我更多地思考如何进行这次升级。
我创建了一个名为Block (板上的空白区域)的类,而不是GameBoard是字符,它现在将具有 ax 和 y 坐标变量,以及一个用于直观显示正确字符的 char 变量。Block具有保存对象“ Feature ”的能力,该对象分解为“feature”的派生类。您可以滚动到最底部以获取有关这些类的更多详细信息。
这就是我的类层次结构树的方式:
feature
item vehicle
gold nuke plane
我需要什么帮助
我基本上有我想做的大纲/结构设置。现在我只需要一些帮助来启动它来连接一切。我在确定何时以及如何使用指针方面非常糟糕。
A.) 我应该更改GameBoard以保存Block类的指针吗?还是实际 的 Block对象?- Block会持有指向Feature或实际Feature对象的指针吗?
B.) 如何添加一个可以为空或给定值的特征变量?我只是将其设置为NULL吗?
C.) 我是否需要自定义复制构造函数来交换Block的Feature值?
D.)如果玩家使用Feature对象,我该如何从Block中移除?
E.)单个块上偶尔会出现超过 1 个功能吗?
F.) 我如何声明Block和Feature类,以便Block可以容纳一个Feature并且Feature已经从另一个类派生(不包括在这篇文章中)。
关于我的课程的额外详细信息
所以 GameBoard 是将存储块的向量。块本质上是板上的各个空间。块包含其位置的坐标、表示它的字符以及持有Feature对象的可能性,但大多数时候Block不会持有特征。Feature源自 Block,在游戏中作为奖励奖励。因此,Feature分支为另外 2 个派生类,一个 Item Feature 或 Vehicle。等等。
当玩家选择坐标时,一个方法将转到 GameBoard 上/中的那个 Block,并首先检查 char 值是否表示之前未使用过的有效空间。然后它检查这个块的内容以获得特征。Feature 可能为空或包含派生的 Feature 对象。
好的,我的小说到此结束。抱歉写了这么多。我认为获得帮助的最佳方式是让帮助者知道发生了什么。请不要回应告诉我“直奔主题”。我知道我知道.. 如果我遗漏了细节,请告诉我。谢谢!