jag

snake_c

public

Small snake game in C

Star0
Watch0

Commit 6d1789094602

tarball

Jaglekon <jaglekon@jaglekon.de>2026-03-23 12:51 UTC

1 file changed+15-7
fixing some logic
Modified file: snake.c+15 additions−7 deletions
@@ -59,7 +59,7 @@ selected new_fruit(char board[HEIGHT][WIDTH][STRING_LEN]);
5959
6060 bool draw_menu(main_menu menu, struct winsize window_size);
6161
62-void draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
62+bool draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
6363 struct winsize window_size, bool redraw);
6464 void draw_pause(struct winsize window_size);
6565
@@ -282,17 +282,14 @@ int main(int argc, char *args[]) {
282282
283283 paused = true;
284284
285+ draw_board(board, current_size, true);
286+
285287 if (current_size.ws_row < ACTUAL_HEIGHT ||
286288 current_size.ws_col < ACTUAL_WIDTH) {
287289 too_small = true;
288-
289- printf("\033[2J\033[HToo small\n");
290- printf("Min width: %i & Min height: %i\n", ACTUAL_WIDTH,
291- ACTUAL_WIDTH);
292290 } else {
293291 too_small = false;
294292
295- draw_board(board, current_size, true);
296293 draw_pause(current_size);
297294 }
298295 }
@@ -548,7 +545,7 @@ bool draw_menu(main_menu menu, struct winsize window_size) {
548545 return false;
549546 }
550547
551-void draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
548+bool draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
552549 struct winsize window_size, bool redraw) {
553550
554551 uint8_t i, j;
@@ -556,6 +553,14 @@ void draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
556553 uint8_t actual_height = HEIGHT + 2;
557554 uint8_t actual_width = WIDTH * 2 + 2;
558555
556+ if (actual_width > window_size.ws_col || actual_height > window_size.ws_row) {
557+
558+ printf("\033[2J\033[HToo small\n");
559+ printf("Min width: %i & Min height: %i\n", actual_height, actual_width);
560+
561+ return true;
562+ }
563+
559564 uint8_t vertical_buffer = (window_size.ws_row - actual_height) >> 1;
560565 uint8_t horizontal_buffer = (window_size.ws_col - actual_width) >> 1;
561566
@@ -595,7 +600,10 @@ void draw_board(char board[HEIGHT][WIDTH][STRING_LEN],
595600 for (i = 0; i < WIDTH; i++)
596601 printf("--");
597602 printf("+");
603+
598604 fflush(stdout);
605+
606+ return false;
599607 }
600608
601609 void draw_pause(struct winsize window_size) {