Итак, у меня есть класс, который использует рекурсию для генерации уровня. Простой пример генерации подземелий BSP. Я использую код здесь. Но я пишу на C ++, поэтому у меня не может быть статического класса.
Проблема в том, что у меня есть указатель класса.
#ifndef RECTANGLE_H
#define RECTANGLE_H
class Rectangle
{
public:
Rectangle(int top, int left, int height, int width);
~Rectangle();
bool split();
void generate_dungeon();
private:
static int min_size;
Rectangle* dungeon;
Rectangle* left_child;
Rectangle* right_child;
int top, left, width, height;
};
#endif
редактировать
std::vector<Rectangle*> rectangles;
Rectangle root(0,0,map_height,map_width);
//std::cout<<root.split()<<std::endl;
rectangles.push_back(&root);//std::cout<<rectangles.at(0).split()<<std::endl;
while(rectangles.size() < 5)
{
int split_idx = Rng::rand_int(0, (rectangles.size()-1));
Rectangle* to_split = rectangles.at(split_idx);
std::cout<<rectangles.size()<<std::endl;
if((*to_split).split())
{
rectangles.push_back(((*to_split)get_left()));
rectangles.push_back(((*to_split)get_right()));
}
}
root.generate_dungeon();
Это решает проблему. Я называю ясно на std::vector
после.
Задача ещё не решена.
Других решений пока нет …