簡體   English   中英

C ++-如何使用更改的名稱創建類的實例

[英]C++ - How to create an instance of a class with changing name

有點背景...我正在做一個簡單的迷宮游戲。 本質上,該程序將采用以下格式的文本文件:

A * B * *
B * C * A
C G D * B
D * * * C
E I F * *
F J G * E
G * H C F
H * * * G
I * * E *
J * K F *
K * L * J
L * * * K

其中第一個字符是當前節點,第二個字符是其北邊的節點,下一個是東邊,南邊,西邊的節點。 每行代表一個節點及其可以連接的4個節點。

游戲是基於文本的,玩家在節點A處開始,並可能在四個方向(N / E / S / W)之一中移動。 對於節點A,唯一合法的移動是向東移動到節點B,然后玩家可以從那里向東移動到節點C或向西移動回到節點D。在節點C,用戶可以向北移動到節點G,然后等等等等。 任何有*的地方,在該方向上都沒有節點(因此我將設置為NULL)

我現在仍處於編程的早期階段,這是我的第一項工作,我需要使用節點,甚至是類,因此我想確保在我開始之前對如何處理游戲有很好的了解。參與編程。

我認為游戲的實際玩法將非常簡單。 我的問題是設置游戲板。 我了解如何創建文件流並讀取字符。

int BuildGraph()
{
    ifstream build;
    build.open("file.txt");
    char tempChar;

build >> tempChar;

while(tempChar != '\n')
{
    for(int a = 0; a <= 4; a++)
    {
        switch (a)
        {
            case 0:
                Node tempChar; // NEED HELP HERE
                                    build >> tempChar; // Grabs the next character
                break;
            case 1:
                // set Node.north to tempChar
                break;
            case 2:
                // set Node.east to tempChar
                break;
            case 3:
                // set Node.south to tempChar
                break;
            case 4:
                // set Node.west to tempChar
                break;
        }
    }
}
}

我的問題是,如果關閉正在讀取的字符,如何創建節點和名稱? 在這種情況下,第一個節點應為A,a.east應設置為B,而a.south,a.north和a.west都應設置為NULL。

如何以這種格式完成此操作? 我應該采取其他不同,更簡單還是更好的方法?

我還應該注意,我正在使用一個名為Node的類,該類當前是這樣設置的:

class Node()
{
public:
    char *node_north = ;
    char *node_east = ;
    char *node_south = ;
    char *node_west = ;
};

您可以這樣創建一個節點:

struct Node {
    char name;
    char north;
    char east;
    char south;
    char west;
};

還有一個向量來保持節點在

std::vector<Node> nodes;

並這樣閱讀:

Node node;
build >> node.name >> node.north >> node.east >> node.south >> node.west;
nodes.push_back(node);

或者您可以有一個這樣的節點:

struct Node {
    char north;
    char east;
    char south;
    char west;
};

和節點圖

std::map<char,Node> nodes;

並像這樣閱讀:

char name;
Node node;
build >> name >> node.north >> node.east >> node.south >> node.west;
nodes[name] = node;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM