#ifndef ELEMENT_HPP #define ELEMENT_HPP #include #include "globals.hpp" struct Point; struct Head; struct Tail; struct Body; struct Fruit; struct Point { int m_row; int m_col; int m_direction; Point() {} Point(int x, int y) : m_row(x), m_col(y) {} Point(int x, int y, int dir) : m_row(x), m_col(y), m_direction(dir) {} void set_new_point(int row, int col, int dir); void set_new_point(Point &point); }; struct Head { Head() : m_head(5, 5, 2) {}; Point m_head; Point m_previous_head; void get_new_pos(); }; struct Tail { Point m_tail_pos; Point m_previous_tail_pos; }; struct Body { std::vector m_body; void check_new_tail(); bool check_collision(Head &head); void get_new_pos(Head &head); }; struct Fruit { Fruit(char (&board)[ROW][COL]); Point m_point; void get_new_pos(char (&board)[ROW][COL], Head &head); }; #endif // ELEMENT_HPP