-
Notifications
You must be signed in to change notification settings - Fork 1
/
gameboard.h
127 lines (99 loc) · 4.46 KB
/
gameboard.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef GAMEBOARD_H
#define GAMEBOARD_H
#include <QObject> // Pour faire GameBoard hériter de QObject
#include <QDebug> // Pour débuger
#include <QVector> // Pour créer des objets QVector
#include "tile.h" // Pour créer les Tiles
#include <stdlib.h> // Pour la fonction random
#include <time.h> // Pour initialiser la fonction random
#include <QStringList>
#include <QList>
#include <vector>
#include <fstream>
#include <string>
class GameBoard : public QObject // GameBoard hérite QObject
{
Q_OBJECT
public:
explicit GameBoard(QObject *parent = 0); // Constructeur de la classe
~GameBoard(); // Déstructeur de la classe
Q_INVOKABLE void moveRight(); // Commandes à être appelés depuis qml
Q_INVOKABLE void moveLeft();
Q_INVOKABLE void moveUp();
Q_INVOKABLE void moveDown();
Q_INVOKABLE void newGame();
Q_INVOKABLE void undoGame();
Q_INVOKABLE void setNumberOfTiles(int n);
Q_INVOKABLE void defineSetOfColors(int n);
Q_INVOKABLE void setwinner();
Q_INVOKABLE void setgamenormal();
Q_INVOKABLE void setgamepractice();
Q_PROPERTY(int winner READ readWinner NOTIFY tileChanged) // Propriétés à être utilisés sur qml
int readWinner();
Q_PROPERTY(int loser READ readLoser NOTIFY tileChanged)
int readLoser();
Q_PROPERTY(int posX READ readPosX NOTIFY tileChanged)
int readPosX();
Q_PROPERTY(int posY READ readPosY NOTIFY tileChanged)
int readPosY();
Q_PROPERTY(QString tileNb READ readTileNb NOTIFY tileChanged)
QString readTileNb();
Q_PROPERTY(QString tileColor READ readTileColor NOTIFY tileChanged)
QString readTileColor();
Q_PROPERTY(QString tileTextColor READ readTileTextColor NOTIFY tileChanged)
QString readTileTextColor();
Q_PROPERTY(int numberOfTiles READ readNumberOfTiles NOTIFY tileChanged)
int readNumberOfTiles();
Q_PROPERTY(QList<QString> colorsList READ readColorsList NOTIFY tileChanged)
QList<QString> readColorsList();
Q_PROPERTY(int score READ readScore NOTIFY tileChanged)
int readScore();
Q_PROPERTY(int bestscore READ readBestScore NOTIFY tileChanged)
int readBestScore();
Q_PROPERTY(bool gamemode READ readgamemode NOTIFY tileChanged)
bool readgamemode();
signals:
void tileChanged(); // Signal pour mettre à jour le qml
private:
int numberOfTiles;
int indX = 0, indY = 0, indNb = 0, indColor = 0, indTextColor = 0; // indices pour passer les données au qml
int indColorOptions;
QList<QString> colorsList;
Tile*** tiles;
Tile** tilesQml;
int*** matrixNb;
int score; // score
int bestscore; // best score
void refreshRef(); // On refait les références
void printInfo(); // Print pour debug
void changePlaces(int i1, int j1, int i2, int j2); // Changer deux tiles de place
void createTiles(); // On crée les Tiles
void deleteTiles(); // On les efface
void verifyRight(); // Mouvement des tiles
void verifyLeft();
void verifyUp();
void verifyDown();
void scoreraz(); // remise a zero du score
void add_score(int a); // incrementation du score
void createNewTile(); // Création d'un nouveau tile aleatoirement
void loadGame(); // Pour recuperer le jeu precedent
void loadRight(); // On va "rejouer" les mouvements enregistres
void loadLeft();
void loadUp();
void loadDown();
void saveGame(); // savegarder le jeu lors qu`on ferme la fenetre
void clearProgress(); // effacer
std::vector<std::vector<int>> save_moves; // vecteurs qui vont enregistrer temporairement les mouvements joues et les nombre aleatoires
std::vector<std::vector<int>> moves;
std::fstream progress; // archive pour sauvegarder le progres
int winner; // 0 : score < 2048, 1 : score = 2048, 2 : score > 2048
int loser; // 0 : en train de jouer, 1 : perdu
bool verifyLost;
void verifyLostRight(); // Verifier s`il y a des mouvements possibles avec le tableau rempli
void verifyLostLeft();
void verifyLostUp();
void verifyLostDown();
bool gamemode; // Practie ou Normal
int multiplier(); // Dans le mode practice on n`a pas de points
};
#endif // GAMEBOARD_H