[英]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.