#ifndef SNAKE_H #define SNAKE_H struct GridStruct; typedef struct Position { int x; int y; struct Position *next; } Position; typedef enum { TOP, BOTTOM, LEFT, RIGHT } Direction; struct SnakeStruct { Position *segments_list; int size; Direction dir; }; typedef struct SnakeStruct Snake; Snake *new_snake(void); void add_segment(Snake *snake, int x, int y); void free_snake(Snake *snake); void debug_snake(Snake *snake); void crawl(Snake *snake, struct GridStruct *g); Direction determine_initial_direction(struct GridStruct *g, Position *head); #endif /* SNAKE_H */