diff --git a/main.c b/main.c index e39b4bd..1d2ba6a 100644 --- a/main.c +++ b/main.c @@ -18,6 +18,40 @@ #define PX(x) ((x) << 3) +typedef struct { + bool cells[GRID_SIZE][GRID_SIZE]; +} maze_t; + +static void draw_maze(Display *dpy, Window w, GC gc, const maze_t *m) +{ + // Draw walls + XFillRectangle( + dpy, w, gc, PX(MARGIN), PX(MARGIN), PX(GRID_SIZE + 2), + PX(WALL_THICKNESS)); + XFillRectangle( + dpy, w, gc, PX(MARGIN), PX(MARGIN + WALL_THICKNESS + GRID_SIZE), + PX(GRID_SIZE + 2), PX(WALL_THICKNESS)); + XFillRectangle( + dpy, w, gc, PX(MARGIN), PX(MARGIN + WALL_THICKNESS + 1), + PX(WALL_THICKNESS), PX(GRID_SIZE - 1)); + XFillRectangle( + dpy, w, gc, PX(MARGIN + WALL_THICKNESS + GRID_SIZE), + PX(MARGIN + WALL_THICKNESS), PX(WALL_THICKNESS), PX(GRID_SIZE)); + + // Draw cells + for (int x = 0; x < GRID_SIZE; ++x) { + for (int y = 0; y < GRID_SIZE; ++y) { + if (m->cells[x][y]) + continue; + const int left = PX(MARGIN + WALL_THICKNESS + x); + const int top = PX(MARGIN + WALL_THICKNESS + y); + XFillRectangle(dpy, w, gc, left, top, PX(1), PX(1)); + } + } + + XFlush(dpy); +} + int main(void) { XEvent evt; @@ -42,6 +76,10 @@ int main(void) XNextEvent(dpy, &evt); while (MapNotify != evt.type); + maze_t m; + memset(&m, 0, sizeof(maze_t)); + draw_maze(dpy, w, gc, &m); + // Wait for window exit bool is_del = false; do {