pvjc24/cv9/snake.c

73 lines
1.9 KiB
C
Raw Permalink Normal View History

2024-04-18 20:41:57 +00:00
#include "snake.h"
#include <stdlib.h>
struct snake* add_snake(struct snake* snake,int x,int y){
2024-04-18 20:51:23 +00:00
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
2024-04-18 20:54:44 +00:00
return snake;
2024-04-18 20:51:23 +00:00
}
// Inicializácia nového prvku súradnicami
new_snake->x = x;
new_snake->y = y;
// Pripojenie nového prvku na začiatok hada
2024-04-18 20:54:44 +00:00
new_snake->next = snake;
2024-04-18 20:51:23 +00:00
// Návrat nového začiatku hada (nového prvku)
return new_snake;
//return NULL;
2024-04-18 20:41:57 +00:00
}
struct snake* remove_snake(struct snake* snake){
2024-04-18 20:58:08 +00:00
// 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;
2024-04-18 20:41:57 +00:00
}
void free_snake(struct snake* sn){
}
int is_snake(struct snake* snake,int x,int y){
2024-04-18 21:01:08 +00:00
// 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
2024-04-18 20:41:57 +00:00
return 0;
2024-04-18 21:01:08 +00:00
2024-04-18 20:41:57 +00:00
}
int step_state(struct state* st){
int nx = (st->snake->x + st->sx);
int ny = (st->snake->y + st->sy);
return END_CONTINUE;
}