diff --git a/a2/snake.c b/a2/snake.c new file mode 100644 index 0000000..5549d4d --- /dev/null +++ b/a2/snake.c @@ -0,0 +1,62 @@ +#include "snake.h" +#include + +struct snake* add_snake(struct snake* snake,int x,int y){ + struct snake* hlavicka = calloc(1,sizeof(struct snake)); + + hlavicka->x = x; + hlavicka->y = y; + + hlavicka->next = snake; + + return hlavicka; +} + +struct snake* remove_snake(struct snake* snake){ + + if (snake == NULL || snake->next == NULL) { + return NULL; + } + + struct snake* predtym = NULL; + struct snake* teraz = snake; + while (teraz->next != NULL) { + predtym = teraz; + teraz = teraz->next; + } + + free(teraz); + predtym->next = NULL; + + return snake; +} + +void free_snake(struct snake* sn){ + if (sn == NULL) { + return; + } + free_snake(sn->next); + free(sn); +} + +int is_snake(struct snake* snake,int x,int y){ + if(snake == NULL){ + return NULL; + } + + struct snake* pozicia = snake; + + while(pozicia != NULL){ + if(pozicia->x == x && pozicia->y == y){ + return 1; + } + pozicia = pozicia->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; +}