enum Direction {
    UP,
    DOWN,
    LEFT,
    RIGHT
};

class Cell {
public:
    int x, y;
    bool wall;
    bool visted;
    Cell() {}
};

class Maze {
    int width;
    int height;
    Cell **cells;

public:
    Maze(char *path)
    {
        // TODO
    }

    // A constructor to facilitate testing.
    Maze(bool maze[][15], int size_x, int size_y)
    {
        width = size_x;
        height = size_y;

        cells = new Cell*[width];
        for(int i = 0; i < height; ++i)
            cells[i] = new Cell[width];

        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                Cell *cell = &cells[i][j];
                cell->x = i;
                cell->y = j;
                cell->wall = maze[i][j];
            }
        }
    }

    // Print the maze to stdout.
    void print()
    {
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                if (cells[i][j].wall) {
                    std::cout << "█";
                } else {
                    std::cout << " ";
                }
            }
            std::cout << std::endl;
        }
    }
};

