73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
#include "snake.h"
|
|
#include <stdlib.h>
|
|
|
|
struct snake* add_snake(struct snake* snake,int x,int y){
|
|
struct snake* new_snake = (struct snake*)malloc(sizeof(struct snake));
|
|
if (new_snake == NULL) {
|
|
// Ak sa nepodarilo alokovať pamäť, vrátiť pôvodný zoznam hada
|
|
return snake;
|
|
}
|
|
|
|
// Inicializácia nového prvku súradnicami
|
|
new_snake->x = x;
|
|
new_snake->y = y;
|
|
|
|
// Pripojenie nového prvku na začiatok hada
|
|
new_snake->next = snake;
|
|
|
|
// Návrat nového začiatku hada (nového prvku)
|
|
return new_snake;
|
|
//return NULL;
|
|
}
|
|
|
|
struct snake* remove_snake(struct snake* snake){
|
|
// Ak je zoznam hada prázdny, vrátiť NULL
|
|
if (snake == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
// Ak máme iba jeden prvok, uvoľniť ho a vrátiť NULL
|
|
if (snake->next == NULL) {
|
|
free(snake);
|
|
return NULL;
|
|
}
|
|
|
|
// Prechádzanie zoznamu hada, kým nenájdeme predposledný prvok
|
|
struct snake* current = snake;
|
|
while (current->next->next != NULL) {
|
|
current = current->next;
|
|
}
|
|
|
|
// Uvoľnenie posledného prvku a nastavenie nového posledného prvku na NULL
|
|
free(current->next);
|
|
current->next = NULL;
|
|
|
|
// Vrátenie začiatku zoznamu hada
|
|
return snake;
|
|
//return NULL;
|
|
}
|
|
|
|
void free_snake(struct snake* sn){
|
|
}
|
|
|
|
int is_snake(struct snake* snake,int x,int y){
|
|
// Prechádzanie zoznamu hada
|
|
while (snake != NULL) {
|
|
// Ak sa súradnice zhodujú s polohou hada, vrátiť true
|
|
if (snake->x == x && snake->y == y) {
|
|
return 1;
|
|
}
|
|
// Posun na ďalší prvok hada
|
|
snake = snake->next;
|
|
}
|
|
// Ak sme prešli cez celý zoznam a nenájdený žiadny prvok s danými súradnicami, vrátiť false
|
|
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;
|
|
}
|