(如果出现问题,我道歉,这是我的第一个问题)
我试图为我的游戏创建一个房间网格(类似于艾萨克的绑定)。
我有一个名为“Station'我希望有一个2D阵列的房间,我在课堂上定义了房间'。 在我的main.cpp中,我使用名为currentroom的Room对象,我希望通过引用传递给我的Station类中的函数loadRoom。该函数将生成数组中的所有Rooms,并通过引用将中间的一个传递回main.cpp。 我一直在尝试使用矢量,数组,指针数组甚至是专为存储房间而设计的新类,但似乎没有任何效果。请帮助我,这些是我之前提到的2个课程: Station.h:
#pragma once
#include "The Station.h"
class Station
{
public:
void pause();
void resume();
int h,w;
Station();
sf::RenderWindow App;
sf::Image guii;
sf::Texture player, bgt, guit, fltilt;
sf::Font arial;
void loadSection(Room& currentroom);
};
Room.h:
#pragma once
#include "The Station.h"
#define n 16
#define m 6
class Station;
class enemy;
class projectile;
class Room
{
public:
tile floortile[n][m];
sf::Texture floort,enemyt, dleftt,sht, drightt,dtopt,dbottomt, chestt;
int chest_max=15;
int chestcount;
bool dleft, dright,dtop,dbottom,isempty;
Room();
void loadroom(int w, int h);
std::vector <enemy> enem;
std::vector <projectile> proj;
void spawn_enemy(int x,int y);
};
我希望第一个拥有后者的数组。 谢谢。
编辑: 好的,这是我得到的: 当我只是尝试制作这样的二维数组时:
Room sect[10][10];
我将它放在void loadSection之前的一个类中,它在运行后崩溃了一秒钟。 当我创建一个名为&#39; lvl&#39;在同一个地方,当我试图访问一个房间的成员时,它只会崩溃,如下所示:
this->lvl->Row[5].Column[5].loadroom(this->w,this->h);
但是,当我创建矢量矢量时,如下所示:
std::vector< vector< Room > > station;
当我尝试调整它时,它会崩溃,无论我是使用初始化程序,push_back还是vector :: resize。
错误始终相同,Application.exe停止工作。
有什么想法吗?
答案 0 :(得分:0)
我解决了这个问题。我删除了loadRoom函数并将其代码放入默认构造函数中。我遇到的另一个问题是,sf :: Texture operator = overload导致崩溃,所以我再次从文件加载纹理而不是复制它们。我知道它的浪费和缓慢,但我会在几个月内从头开始在Unity写它,所以我不关心它是否优化。