#ifndef ELEMENT_HPP #define ELEMENT_HPP #include #include "globals.hpp" static int _score = 0; struct Point { int m_row; int m_col; char m_symbol; int m_direction; Point() : m_row(0), m_col(0), m_symbol(' ') {} Point(int x, int y, char s) : m_row(x), m_col(y), m_symbol(s) {} Point(int x, int y, char s, int d) : m_row(x), m_col(y), m_symbol(s), m_direction(d) {} void set_new_point(int row, int col); void set_new_point(Point &point); }; void get_new_pos(Point* (*board)[COL], Point** segments); void check_new_tail(Point** segments); struct Head { Head() : m_direction(2) {}; Point m_head {5, 5, '*'}; Point m_previous_head; int m_direction; void get_new_pos(); }; struct Tail { Point m_tail_pos {0, 0, '@'}; 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(); Point m_point {0, 0, 'o'}; void get_new_pos(char (&board)[ROW][COL], Head &head); }; #endif // ELEMENT_HPP