From f4aa1bc01c15d607facc224cc98c3e291af26c5b Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Mon, 4 Nov 2024 00:01:32 +0000 Subject: [PATCH] Draw visited cells in a different colour --- main.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index e2b46fe..39dd10c 100644 --- a/main.c +++ b/main.c @@ -51,9 +51,12 @@ static Display *dpy; static Window window; static GC ctx; static cell_t maze[GRID_SIZE][GRID_SIZE]; +static int bg_col, wall_col, visited_col; static void draw_walls(void) { + XSetForeground(dpy, ctx, wall_col); + XFillRectangle( dpy, window, ctx, PX(MARGIN), PX(MARGIN), PX(GRID_SIZE + 2), PX(WALL_THICKNESS)); @@ -80,7 +83,11 @@ 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].is_path) + if (!maze[x][y].is_path) + XSetForeground(dpy, ctx, wall_col); + else if (maze[x][y].visited) + XSetForeground(dpy, ctx, visited_col); + else continue; const int left = margin_px + PX(x); const int top = margin_px + PX(y); @@ -149,15 +156,21 @@ int main(void) assert(dpy); // Create window and configure graphics context - const int black = BlackPixel(dpy, DefaultScreen(dpy)); - const int white = WhitePixel(dpy, DefaultScreen(dpy)); + wall_col = BlackPixel(dpy, DefaultScreen(dpy)); + bg_col = WhitePixel(dpy, DefaultScreen(dpy)); window = XCreateSimpleWindow( dpy, DefaultRootWindow(dpy), 0, 0, PX(WINDOW_SIZE), PX(WINDOW_SIZE), - 0, white, white); + 0, bg_col, bg_col); Atom del = XInternAtom(dpy, "WM_DELETE_WINDOW", false); XSetWMProtocols(dpy, window, &del, 1); ctx = DefaultGC(dpy, DefaultScreen(dpy)); - XSetForeground(dpy, ctx, black); + + // Create colormap and allocate colour for visited cells + Colormap cm = XCreateColormap( + dpy, window, DefaultVisual(dpy, DefaultScreen(dpy)), AllocNone); + XColor xcol = { .red = 55555, .green = 10000, .blue = 10000 }; + XAllocColor(dpy, cm, &xcol); + visited_col = xcol.pixel; // Map window XSelectInput(dpy, window, StructureNotifyMask);