SFML C ++类中的2D对象数组

时间:2014-04-25 20:36:28

标签: c++ arrays class 2d sfml

(如果出现问题,我道歉,这是我的第一个问题)

我试图为我的游戏创建一个房间网格(类似于艾萨克的绑定)。

我有一个名为“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停止工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我删除了loadRoom函数并将其代码放入默认构造函数中。我遇到的另一个问题是,sf :: Texture operator = overload导致崩溃,所以我再次从文件加载纹理而不是复制它们。我知道它的浪费和缓慢,但我会在几个月内从头开始在Unity写它,所以我不关心它是否优化。