一点背景...我正在做一个简单的迷宫游戏。本质上,该程序是采用以下形式的文本文件:
A * B * * B * C * A CGD * B D * * * C EIF * * FJG * E G * HCF H * * * G IE * J * KF * 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 的类,当前设置如下:
类节点() { 上市: 字符 *node_north = ; 字符 *node_east = ; 字符 *node_south = ; 字符 *node_west = ; };