50 lines
878 B
C++
50 lines
878 B
C++
#ifndef ELEMENT_HPP
|
|
#define ELEMENT_HPP
|
|
|
|
#include <vector>
|
|
#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<Tail> 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
|