#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); }; 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 { Body() : m_score(0), m_collision(false) {}; std::vector m_body; int m_score; bool m_collision; void check_new_tail(); void 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, int &score); }; #endif // ELEMENT_HPP