From 199ef7191cd152259e77d1c04b5d25bd65b66bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vasi=C4=BE?= Date: Wed, 27 Apr 2022 18:52:02 +0200 Subject: [PATCH] domaca_uloha_7 --- du7/snake.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/du7/snake.c b/du7/snake.c index dac1810..ee76ecf 100644 --- a/du7/snake.c +++ b/du7/snake.c @@ -16,40 +16,44 @@ struct snake* add_snake(struct snake* snake,int x,int y){ } struct snake* remove_snake(struct snake* snake){ - if (snake == NULL) return NULL; + if (snake == NULL) return NULL; //ak nezadám ako vstup hada, tak okamžite vrátim NULL - else if (snake->next == NULL) { - free(snake); - return NULL; + else if (snake->next == NULL) { //ak had nemá pokračovanie, + free(snake); //tak ho zruším + return NULL; //a vrátim NULL } - else { - struct snake* medzipamat = calloc(1, sizeof(struct snake)); - medzipamat = snake; + else { //inak prebehnem celého hada od začiatku + struct snake* medzipamat = calloc(1, sizeof(struct snake)); //alokujem medipamäť + medzipamat = snake; //adresu hlavy hada uložím do medzipamäte - while (snake->next->next != NULL) snake = snake->next; + while (snake->next->next != NULL) snake = snake->next; //hada budem prezerať dovtedy, kým nenájdem jeho koniec - free(snake->next); + free(snake->next); //koniec hada zmažem - snake->next = NULL; - return medzipamat; + snake->next = NULL; // nastavím nový koniec hada + return medzipamat; //vrátim hlavu hada } } -void free_snake(struct snake* sn){ - struct snake* nasledujuci = calloc(1, sizeof(struct snake)); +void free_snake(struct snake* sn){ //funkcia odstráni hada z hry + struct snake* medzipamat = calloc(1, sizeof(struct snake)); //alokujem medzipamäť - while (sn != NULL) { - nasledujuci = sn->next; - free(sn); - sn = nasledujuci; + while (sn != NULL) { //v cykle vymažem každý jeden prvok hada + medzipamat = sn->next; //hlavu hada uložím do medzipamäte + free(sn); //ak odstránim ju + sn = medzipamat; //nastavím novú hlavu hada } - free(nasledujuci); + free(medzipamat); //nakoniec vyčistím aj medzipamäť } int is_snake(struct snake* snake,int x,int y){ - return 0; + do { + if (snake->x == x || snake->y == y) return 1; + } while (snake->next != NULL); + + return 0; } int step_state(struct state* st){