From 076d06a3071b89c1c0a7356023f51d3c2b7aeed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Frankovi=C4=8D?= Date: Fri, 8 May 2026 13:28:24 +0200 Subject: [PATCH] snake --- du4/program.c | 16 ++++++++++++++++ du4/snake.c | 22 +++++++++------------- du4/snake.h | 2 +- 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 du4/program.c diff --git a/du4/program.c b/du4/program.c new file mode 100644 index 0000000..122f567 --- /dev/null +++ b/du4/program.c @@ -0,0 +1,16 @@ +#include +#include +#include "game.h" + +int main() { + printf("Starting Snake Game...\n"); + printf("Use arrow keys to move the snake.\n"); + printf("Press 'q' to quit.\n"); + printf("Eat all food (*) to win!\n\n"); + sleep(2); + + run_game(); + + printf("Thanks for playing!\n"); + return 0; +} diff --git a/du4/snake.c b/du4/snake.c index 762d2d0..62b4c81 100644 --- a/du4/snake.c +++ b/du4/snake.c @@ -64,6 +64,12 @@ int step_state(struct state* state) { return END_WALL; } + // Check if new position is on snake's body + if (is_snake(state->snake, new_x, new_y)) { + return END_SNAKE; + } + + // Find food at new position int food_index = -1; int items_left = 0; @@ -76,14 +82,9 @@ int step_state(struct state* state) { } if (food_index >= 0) { + // Food found - mark as eaten and grow snake state->foodx[food_index] = -1; state->foody[food_index] = -1; - - if (is_snake(state->snake, new_x, new_y)) { - state->snake = add_snake(state->snake, new_x, new_y); - return END_SNAKE; - } - state->snake = add_snake(state->snake, new_x, new_y); if (items_left == 0) { @@ -91,14 +92,9 @@ int step_state(struct state* state) { } return END_CONTINUE; } else { + // No food - normal movement (remove tail and add head) state->snake = remove_snake(state->snake); - - if (is_snake(state->snake, new_x, new_y)) { - state->snake = add_snake(state->snake, new_x, new_y); - return END_SNAKE; - } - state->snake = add_snake(state->snake, new_x, new_y); return END_CONTINUE; } -} +} \ No newline at end of file diff --git a/du4/snake.h b/du4/snake.h index c0ab1ad..a546cc7 100644 --- a/du4/snake.h +++ b/du4/snake.h @@ -2,7 +2,7 @@ #define snake_h_INCLUDED // Number of food items on the plane -#define FOOD_COUNT 5 +#define FOOD_COUNT 20 /** * One part of the snake;