-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfoods.h
62 lines (54 loc) · 1.36 KB
/
foods.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
#ifndef FOODS_H
#define FOODS_H
#include <QWidget>
#include <QVector>
#include <QPainter>
#include <QImage>
#include <QRandomGenerator>
#include <QtDebug>
#include "constants.h"
class Food
{
friend QDataStream& operator<<(QDataStream& out, const Food& food);
friend QDataStream& operator>>(QDataStream& in, Food& food);
public:
int typeIndex;
QPoint position;
FoodType type;
Food() {}
Food(QPoint p, int t) {
typeIndex = t;
position = p;
type = FoodTypes[t];
}
};
class Foods : public QWidget
{
Q_OBJECT
friend class AISnake;
friend QDataStream& operator<<(QDataStream& out, const Foods& foods);
friend QDataStream& operator>>(QDataStream& in, Foods& foods);
public:
explicit Foods(QWidget *parent = nullptr);
void init();
void render(QPainter *painter);
void generate(int num = 1);
void add(QPoint pos, int foodIndex);
bool remove(QPoint pos);
~Foods();
private:
QVector<Food> list;
int rockets, snails;
bool exists(QPoint p);
Food newFood();
int randomFoodType();
signals:
void foodEaten(int snakeId, FoodType type);
void foodGenerated(const QPoint& p);
void overwritten(const QPoint& p);
public slots:
void checkEat(int id, const QPoint& head);
void checkOverwrite(const QPoint& p);
void regenerate(const QPoint& p);
};
#endif // FOODS_H