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