有点背景...我工作的一个简单的迷宫游戏创建一个类的实例。从本质上讲,该方案是采取一个文本文件中的格式如下:C++ - 如何不断变化的名称
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,至少应该设置为B,并且.outh,a.north和a.west都应该设置为NULL。
我如何做到这一点的这种格式?有什么不同的,更简单的,或更好的方法,我应该采取?
我也应该注意到,我使用的一类,称为节点,当前设置是这样的:
class Node() { public: char *node_north = ; char *node_east = ; char *node_south = ; char *node_west = ; };
@ sakau2007:后你读了你需要存储它的节点 - 也许是一个std :: vector。 –
我看到你是如何添加名称字段的,但我不知道这对我有什么帮助。不仅会保存最后一个节点的信息? 我如何参考成员? 我在想这个方法是node.A.north(将返回NULL)node.A.东(将返回节点B或char B,具体取决于我如何设置它;我认为返回整个节点,因此方向指针将是最好的) – sakau2007
@ sakau2007:可以有一个函数通过节点并找到一个使用特定名称,或者使用'std :: map'。 –