From 900460348b149384b71b50c3a3bc307dfd806276 Mon Sep 17 00:00:00 2001 From: st529yr Date: Mon, 8 Apr 2024 15:16:50 +0200 Subject: [PATCH] funguje --- cv9/snake.c | 85 +++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/cv9/snake.c b/cv9/snake.c index 7f19c5c..8ba06a8 100644 --- a/cv9/snake.c +++ b/cv9/snake.c @@ -1,66 +1,69 @@ +Samozrejme, tu je upravený program v jazyku C: + ```c -#include "snake.h" +#include #include +#define FOOD_COUNT 5 + +struct snake { + int x; + int y; + struct snake* next; +}; + +struct state { + struct snake* snake; + int foodx[FOOD_COUNT]; + int foody[FOOD_COUNT]; + int sx; + int sy; + int width; + int height; +}; + struct snake* add_snake(struct snake* snake, int x, int y) { - // Allocate memory for the new snake part - struct snake* new_part = (struct snake*)malloc(sizeof(struct snake)); - if (new_part == NULL) { - return NULL; // Memory allocation failed + struct snake* head = (struct snake*)malloc(sizeof(struct snake)); + if (head == NULL) { + return NULL; } - - // Set the coordinates of the new part - new_part->x = x; - new_part->y = y; - - // Set the next pointer of the new part to the current head of the snake - new_part->next = snake; - - // Return the new head of the snake - return new_part; + head->x = x; + head->y = y; + head->next = snake; + return head; } struct snake* remove_snake(struct snake* snake) { - // Check if the snake is empty if (snake == NULL) { - return NULL; // Snake is empty, no part to remove + return NULL; } - - // Save the next part of the snake - struct snake* next_part = snake->next; - - // Free the current head of the snake + struct snake* next = snake->next; free(snake); - - // Return the new head of the snake - return next_part; + return next; } int is_snake(struct snake* snake, int x, int y) { - // Traverse the snake while (snake != NULL) { - // Check if the coordinates match if (snake->x == x && snake->y == y) { - return 1; // Coordinates are part of the snake + return 1; } - // Move to the next part of the snake snake = snake->next; } - // Coordinates are not part of the snake return 0; } -void free_snake(struct snake* sn) { - // Traverse the snake - while (sn != NULL) { - // Save the next part of the snake - struct snake* next_part = sn->next; - - // Free the current part of the snake - free(sn); - - // Move to the next part of the snake - sn = next_part; +void free_snake(struct snake* snake) { + while (snake != NULL) { + struct snake* next = snake->next; + free(snake); + snake = next; } } +int main() { + // Place your testing code here + return 0; +} + + +