From f01135edba3b2ed46cd4317a11a09597ee5b6eca Mon Sep 17 00:00:00 2001 From: Bohdan Kapliuk Date: Thu, 18 Apr 2024 19:49:24 +0300 Subject: [PATCH] 123 --- cv9/snake.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/cv9/snake.c b/cv9/snake.c index e69de29..7cad4c4 100644 --- a/cv9/snake.c +++ b/cv9/snake.c @@ -0,0 +1,54 @@ +#include "snake.h" +#include + +struct snake* add_snake(struct snake* snake,int x,int y){ + struct snake* head = calloc(1,sizeof(struct snake)); + if (head == NULL) { + return NULL; + } + head->x = x; + head->y = y; + head->next = snake; + return snake; +} + +struct snake* remove_snake(struct snake* snake){ + if(snake == NULL) + return NULL; + if (snake->next == NULL) { + free(snake); + return NULL; + } + struct snake* current = snake; + struct snake* previous = NULL; + while (current->next != NULL) { + previous = current; + current = current->next; + } + free(current); + previous->next = NULL; + return snake; +} + +void free_snake(struct snake* sn){ + while(sn != NULL){ + struct snake* next = sn->next; + free(sn); + sn = next; + } + +} + +int is_snake(struct snake* snake,int x,int y){ + if(snake == NULL) + return NULL; + if(x == snake->x && y == snake->y) + return 1; + return 0; +} + +int step_state(struct state* st){ + int nx = (st->snake->x + st->sx); + int ny = (st->snake->y + st->sy); + return END_CONTINUE; +}