diff --git a/main.c b/main.c index 4c0602b..e2b46fe 100644 --- a/main.c +++ b/main.c @@ -33,6 +33,11 @@ typedef struct { typedef bool (*coord_pred_t)(vec2_t c, vec2_t im); typedef bool (*visit_fn_t)(vec2_t c, vec2_t im); +typedef struct { + bool is_path : 1; + bool visited : 1; +} cell_t; + static const struct timespec pause = { .tv_nsec = 5000000 }; static const vec2_t steps[] = { @@ -45,7 +50,7 @@ static const vec2_t steps[] = { static Display *dpy; static Window window; static GC ctx; -static bool maze[GRID_SIZE][GRID_SIZE]; +static cell_t maze[GRID_SIZE][GRID_SIZE]; static void draw_walls(void) { @@ -75,7 +80,7 @@ static void draw_maze(void) for (int x = 0; x < GRID_SIZE; ++x) { for (int y = 0; y < GRID_SIZE; ++y) { - if (maze[x][y]) + if (maze[x][y].is_path) continue; const int left = margin_px + PX(x); const int top = margin_px + PX(y); @@ -122,13 +127,13 @@ random_walk(coord_pred_t should_visit, visit_fn_t visit_fn, vec2_t start) static bool is_wall(vec2_t c, vec2_t im) { (void)im; - return !maze[c.x][c.y]; + return !maze[c.x][c.y].is_path; } static bool generation_visit(vec2_t c, vec2_t im) { - maze[c.x][c.y] = true; - maze[im.x][im.y] = true; + maze[c.x][c.y].is_path = true; + maze[im.x][im.y].is_path = true; return false; } @@ -166,7 +171,7 @@ int main(void) // Generate memset(&maze, 0, sizeof(maze)); const vec2_t gen_start = { GOAL, GOAL }; - maze[GOAL][GOAL] = true; + maze[GOAL][GOAL].is_path = true; random_walk(is_wall, generation_visit, gen_start); // Wait for window exit