【发布时间】:2020-05-21 17:01:41
【问题描述】:
我正在创建一个包含房间名称、描述以及提示和项目空间的文本冒险。
这是目前解决方案的一部分,一个包含四个字符串条目的简单结构。一个要求是保持房间初始化数据的可读性和可编辑性,因为 4x4 数组用作我的游戏世界的网格。
using namespace std;
#include <string>
struct Room
{
string name;
string description;
string itemHint;
string item;
};
Room rooms[4][4]= {
{{"...", "...", "...", "..."},
{"...", "...", "...", "..."},
{"...", "...", "...", "..."},
{"...", "...", "...", "..."}}, // rooms[0..3][0] data
{{"...", "...", "...", "..."}, // and so on
现在这在某种程度上有效。但是,在打印游戏世界的房间地图时,我得到了重复的条目。代码每行复制房间数据四次 [0..0][0..3]。
void PrintMap()
{
cout << endl;
for (int v = 0; v < 4; v += 1)
{
for (int h = 0; h < 4; h += 1)
{
if (currentRoom.h == h && currentRoom.v == v)
cout << "@";
else
cout << " ";
cout << rooms[h, v]->name;
string charstring = rooms[h, v]->name;
int chars = charstring.length();
int endSpaces = 24 - 1 - chars;
for (int charSpaces = 1; charSpaces < endSpaces + 1; charSpaces += 1)
cout << " ";
}
cout << endl << endl << endl;
}
}
这是控制台应用程序打印房间地图的屏幕截图,以帮助更好地解释这一点:
我几乎理解为什么会发生这种情况,但也许有人可以解释它并有一个有效的解决方案。当然,正如我所说,我希望房间数据的代码格式保持可读性,我很乐意接受任何代码设计添加。
【问题讨论】:
-
绘制房间的代码在哪里?
标签: c++ string multidimensional-array struct