#include "MazeGenerator.h" #include #include MazeGenerator::MazeGenerator() { srand(time(NULL)); m_height = 2; m_width = 2; maze_ready = false; verticalWalls = new bool[(m_width-1)*m_height]; horizontalWalls = new bool[(m_height-1)*m_width]; } MazeGenerator::MazeGenerator(int width, int height) { srand(time(NULL)); maze_ready = false; m_height = height; m_width = width; verticalWalls = new bool[(width-1)*height]; horizontalWalls = new bool[(height-1)*width]; } void MazeGenerator::setDimensions(int width, int height) { maze_ready = false; m_height = height; m_width = width; disjset.resetSize(width*height); delete [] verticalWalls; delete [] horizontalWalls; verticalWalls = new bool[(width-1)*height]; horizontalWalls = new bool[(height-1)*width]; } void MazeGenerator::generateMaze() { Grabbag walls(m_height*m_width); // guarantee disjset is reset disjset.resetSize(m_width*m_height); // randomly choose the start square startX = rand()%m_width; startY = rand()%m_height; // randomly choose a different exit square do { exitX = rand()%m_width; exitY = rand()%m_height; } while(exitX == startX && exitY == startY); // generate all vertical, non-boundary walls for(int j=0; j