-
Notifications
You must be signed in to change notification settings - Fork 0
/
Snake.h
76 lines (71 loc) · 2.06 KB
/
Snake.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef SNAKE_H
#define SNAKE_H
#include <cstddef>
#include <list>
#include <utility>
class field;
/*!
* \brief The snake class - класс змейки
*/
class snake
{
public:
/*!
* \brief The Status enum - перечисление статусов змейки
*/
enum Status { INCREASED, LIVE, WIN, DEAD };
/*!
* \brief The Direction enum - типы управляющих сигналов
*/
enum Direction { LEFT, UP, RIGHT, DOWN };
/*!
* \brief snake - конструктор по умолчанию
*/
snake();
/*!
* \brief tick - обработчик таймера
* \param f - ссылка на поле на котором находится змея
*/
void tick(field & f);
/*!
* \brief keyEvent - обработчик управляющего сигнала
*/
void keyEvent( Direction );
/*!
* \brief size - получить текущий размер
* \return - размер
*/
size_t size() const;
/*!
* \brief maxSize - получить максимальный размер
* \return размер
*/
size_t maxSize() const;
/*!
* \brief status - получить текущий статус змейки
* \return - статус
*/
snake::Status status() const;
private:
/*!
* \brief Blocks - переименованный тип туловища змейки
*/
typedef std::list< std::pair<int, int> > Blocks;
/*!
* \brief m_blocks - список блоков являющихся частью туловища змейки
*/
Blocks m_blocks;
/*!
* \brief m_direction - текущий управляющий сигнал (показывает направление движения)
*/
Direction m_direction;
/*!
* \brief m_status - текущий статус змейки
*/
snake::Status m_status;
/*!
* \brief m_maxSize максимальный размер змейки
*/
size_t m_maxSize;
};
#endif // SNAKE_H