2022-04-26 17:40:00 +00:00
|
|
|
#include "snake.h"
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
struct snake* add_snake(struct snake* snake,int x,int y){
|
2022-04-26 18:33:09 +00:00
|
|
|
struct snake* novyZaciatok = calloc(1, sizeof(struct snake)); //alokujem pamäť smerníka
|
|
|
|
novyZaciatok->x = x; //nastavím súradnice hada
|
2022-04-26 17:40:00 +00:00
|
|
|
novyZaciatok->y = y;
|
2022-04-26 17:44:26 +00:00
|
|
|
|
2022-04-26 18:33:09 +00:00
|
|
|
if (snake != NULL) { //ak má had telo,
|
|
|
|
novyZaciatok->next = snake; //tak mu iba pridám hlavu
|
2022-04-26 17:46:44 +00:00
|
|
|
} else {
|
2022-04-26 18:33:09 +00:00
|
|
|
novyZaciatok->next = NULL; //inak musím vytvoriť nové telo
|
2022-04-26 17:44:26 +00:00
|
|
|
}
|
2022-04-26 17:40:00 +00:00
|
|
|
|
|
|
|
return novyZaciatok;
|
|
|
|
}
|
|
|
|
|
|
|
|
struct snake* remove_snake(struct snake* snake){
|
2022-04-26 18:28:43 +00:00
|
|
|
if (snake == NULL) return NULL;
|
|
|
|
|
2022-04-26 19:14:38 +00:00
|
|
|
else if (snake->next == NULL) {
|
|
|
|
free(snake);
|
|
|
|
return NULL;
|
|
|
|
}
|
2022-04-26 18:15:29 +00:00
|
|
|
|
2022-04-26 19:14:38 +00:00
|
|
|
else {
|
|
|
|
struct snake* medzipamat = calloc(1, sizeof(struct snake));
|
|
|
|
medzipamat = snake
|
|
|
|
|
|
|
|
while (1) {
|
|
|
|
snake = snake->next;
|
|
|
|
if (snake->next->next == NULL) break;
|
|
|
|
}
|
|
|
|
free(snake->next->next);
|
|
|
|
snake->next = NULL;
|
|
|
|
return medzipamat;
|
|
|
|
}
|
2022-04-26 17:40:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void free_snake(struct snake* sn){
|
2022-04-26 18:26:09 +00:00
|
|
|
struct snake* nasledujuci = calloc(1, sizeof(struct snake));
|
2022-04-26 17:40:00 +00:00
|
|
|
|
|
|
|
while (sn != NULL) {
|
|
|
|
nasledujuci = sn->next;
|
|
|
|
free(sn);
|
|
|
|
sn = nasledujuci;
|
|
|
|
}
|
2022-04-26 18:28:43 +00:00
|
|
|
|
|
|
|
free(nasledujuci);
|
2022-04-26 17:40:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int is_snake(struct snake* snake,int x,int y){
|
|
|
|
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;
|
|
|
|
}
|