用初始化列表填充C ++中的多维结构数组的问题

问题描述 投票:-1回答:1

我正在创建文本冒险,其中包含房间名称,描述以及提示和项目的空格。

到目前为止,这是解决方案的一部分,它是带有四个字符串条目的简单结构。一个要求是保持房间初始化数据的可读性和可编辑性,因为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;
    }
}

这里是控制台应用程序印刷室地图的屏幕快照,有助于更好地说明这一点:

room map

我几乎理解为什么会这样,但是也许有人可以解释它并且有一个有效的解决方案。当然,正如我所说的那样,我希望保持房间数据的代码格式可读,我很高兴接受任何代码设计的补充。

我正在创建文字冒险,其中包含房间名称,描述以及提示和项目的空格。到目前为止,这是解决方案的一部分,它是一个具有四个字符串条目的简单结构。一个要求是保持...

c++ string multidimensional-array struct
1个回答
0
投票

由于矩阵混乱,您可能未正确初始化数据。您需要以表的形式查看它,其中第一个维度是房间的行,第二个维度是房间的列。

© www.soinside.com 2019 - 2024. All rights reserved.