#pragma once #include "raylibCpp.h" #include #include #include #include "Vec2.h" #include "Settings.h" class Snake { public: enum Direction { Up, Down, Left, Right, None }; private: class Body { public: Body(Vec2 pos); void draw(Color color = WHITE) const; void move(Vec2 pos) { this->pos = pos; }; Vec2 getPos() const { return this->pos; } static void setSize(Vec2 size) { Body::size = size; } private: Vec2 pos; static Vec2 size; Snake::Direction nextPart; }; class Food { public: Food(); void draw() const; void newPosition(); Vec2 getPosition() { return this->pos; } private: Vec2 pos; Vec2 size; }; public: Snake(); void update(); void draw() const; void setDirection(Direction dir); private: void move(); void eat(); Direction dir = Direction::None; Food food; bool hasEaten = false; bool hasBitten = false; int score = 0; double lastMoveTime = 0; double moveDelay = 0.15; std::list bodyList; };