From bf4652ca5b81d11d02688c1c8fa7bea19e28c38a Mon Sep 17 00:00:00 2001 From: Luxferre Date: Fri, 23 Oct 2026 16:07:35 +0300 Subject: [PATCH] fix(games): single playfield border, snake score in top strip, no soft-drop scoring, 239x295 window --- overlay/rootfs/usr/bin/snake | Bin 13672 -> 13672 bytes overlay/rootfs/usr/bin/tetris | Bin 13668 -> 13668 bytes prebuilt/games/usr/bin/snake | Bin 13672 -> 13672 bytes prebuilt/games/usr/bin/tetris | Bin 13668 -> 13668 bytes src/games/snake.cpp | 22 +++++++++------------- src/games/tetris.cpp | 13 ++++--------- 6 files changed, 13 insertions(+), 22 deletions(-) diff --git a/overlay/rootfs/usr/bin/snake b/overlay/rootfs/usr/bin/snake index 5553412e604921e938301e14badcd88fca59251b..5ef421a71f97fdf8adcacccac5e71810f0472d73 100755 GIT binary patch delta 1114 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 #include -static const int WIN_W = 240; -static const int WIN_H = 296; +static const int WIN_W = 239; +static const int WIN_H = 295; static const int COLS = 24; static const int ROWS = 28; @@ -113,15 +113,16 @@ static unsigned long now_ms() { static void compute_grid() { int m = 4; + int topH = 16; // reserved status strip for SCORE/BEST int aw = winW - 2 * m; - int ah = winH - 2 * m; + int ah = winH - topH - m; cell = aw / COLS; if ((ah / ROWS) < cell) cell = ah / ROWS; if (cell < 4) cell = 4; gw = cell * COLS; gh = cell * ROWS; gx0 = (winW - gw) / 2; - gy0 = (winH - gh) / 2; + gy0 = topH + (ah - gh) / 2; } static void place_food() { @@ -213,15 +214,10 @@ static void render() { XSetForeground(dpy, gc, C_BG); XFillRectangle(dpy, back, gc, 0, 0, winW, winH); - // playfield border + // playfield border (single clean frame around the grid) XSetForeground(dpy, gc, C_DIM); XDrawRectangle(dpy, back, gc, gx0 - 1, gy0 - 1, gw + 2, gh + 2); - // frame the whole window (right/bottom edges too) - XSetForeground(dpy, gc, C_DIM); - XDrawRectangle(dpy, back, gc, 2, 2, winW - 4, winH - 4); - XDrawRectangle(dpy, back, gc, 3, 3, winW - 6, winH - 6); - // food if (foodx >= 0) { XSetForeground(dpy, gc, C_FOOD); @@ -233,13 +229,13 @@ static void render() { XFillRectangle(dpy, back, gc, gx0 + snake[i][0] * cell, gy0 + snake[i][1] * cell, cell, cell); } - // score (top-left, small) + // score (top status strip, clear of the playfield border) char buf[32]; snprintf(buf, sizeof(buf), "SCORE %d", score); - draw_text(gx0, 2, 1, C_DIM, buf); + draw_text(gx0, 4, 1, C_DIM, buf); if (best > 0) { snprintf(buf, sizeof(buf), "BEST %d", best); - draw_text(gx0 + gw - 11 * 6, 2, 1, C_DIM, buf); + draw_text(gx0 + gw - 11 * 6, 4, 1, C_DIM, buf); } if (state == PAUSED || state == GAMEOVER) { diff --git a/src/games/tetris.cpp b/src/games/tetris.cpp index 4adf8f3..8a7b83b 100644 --- a/src/games/tetris.cpp +++ b/src/games/tetris.cpp @@ -23,8 +23,8 @@ #include #include -static const int WIN_W = 240; -static const int WIN_H = 296; +static const int WIN_W = 239; +static const int WIN_H = 295; static const int PCOLS = 10; static const int PROWS = 20; static const int CELL = 14; @@ -255,15 +255,10 @@ static void render() { XSetForeground(dpy, gc, C_BG); XFillRectangle(dpy, back, gc, 0, 0, winW, winH); - // playfield border + // playfield border (single clean frame around the well) XSetForeground(dpy, gc, C_DIM); XDrawRectangle(dpy, back, gc, px0 - 1, py0 - 1, PCOLS * CELL + 2, PROWS * CELL + 2); - // frame the whole window (right/bottom edges too) - XSetForeground(dpy, gc, C_DIM); - XDrawRectangle(dpy, back, gc, 2, 2, winW - 4, winH - 4); - XDrawRectangle(dpy, back, gc, 3, 3, winW - 6, winH - 6); - // settled blocks for (int x = 0; x < PCOLS; x++) for (int y = 0; y < PROWS; y++) @@ -381,7 +376,7 @@ static void handle_key(KeySym ks) { int cells[4][2]; piece_cells(curType, curRot, cells); if (!collide(curX, curY + 1, cells)) { - curY++; score += 1; if (score > best) best = score; + curY++; } else { lock_piece(); }