From 50f4be2f43175ade7ce2f9eda0cf41bf70c97891 Mon Sep 17 00:00:00 2001 From: ak643du Date: Thu, 18 Apr 2024 14:39:13 +0200 Subject: [PATCH] Initialization --- a2/snake.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 a2/snake.c diff --git a/a2/snake.c b/a2/snake.c new file mode 100644 index 0000000..b1843df --- /dev/null +++ b/a2/snake.c @@ -0,0 +1,58 @@ +#include "snake.h" +#include + +struct snake* add_snake(struct snake* snake,int x,int y){ + struct snake* head = calloc(1,sizeof(struct snake)); + head->x = x; + head->y = y; + head->next = snake; + return head; +} + +struct snake* remove_snake(struct snake* snake) { + if (snake == NULL) { + return NULL; + } + + if (snake->next == NULL) { + free(snake); + return NULL; + } + + struct snake* current = snake; + while (current->next->next != NULL) { + current = current->next; + } + + free(current->next); + current->next = NULL; + + return snake; +} + +void free_snake(struct snake* sn) { + struct snake* current = sn; + struct snake* next; + + while (current!= NULL) { + next = current->next; + free(current); + current = next; + } +} + +int is_snake(struct snake* snake,int x,int y){ + while (snake != NULL) { + if (snake->x == x && snake->y == y) { + return 1; + } + snake = snake->next; + } + 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; +}