C++-如何创建具有更改名称的类的实例
C++ - How to create an instance of a class with changing name
一个小背景。。。我正在做一个简单的迷宫游戏。从本质上讲,该程序是采用以下形式的文本文件:
A*B**B*C*AC G D*BD***CE I F**F J G*EG*H C FH***G我*J*K F*K*L*JL***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的类,该类当前设置如下:
类节点(){公共: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;
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 在C++中为链表类创建实例
- C++无法创建类的实例
- 如何在另一个类中创建类的实例?
- 在堆栈上创建类实例
- 创建模板嵌套类实例的语法?
- 如何使用模板化类创建其他类的实例?
- 在 C++ 中在堆栈上创建实例时如何保持多态性?
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 用于创建未命名实例的语法
- C++ - 在 main() 方法内的类实例中创建一个线程并调用 Sleep()
- 超级级别的方法称为super具有sub的str attr 实例在循环 实例中创建的方法是作为super的指针存储在向
- C++,返回各种类实例如何创建模板
- 实例化创建线程的类的多个实例
- 从现有实例中创建新的类实例一次