-
Notifications
You must be signed in to change notification settings - Fork 321
Expand file tree
/
Copy pathgameboard.hpp
More file actions
48 lines (36 loc) · 1.25 KB
/
gameboard.hpp
File metadata and controls
48 lines (36 loc) · 1.25 KB
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
#ifndef GAMEBOARD_H
#define GAMEBOARD_H
#include "point2d.hpp"
#include "tile.hpp"
#include <tuple>
#include <vector>
namespace Game {
struct GameBoard {
using tile_data_array_t = std::vector<tile_t>;
using gameboard_data_array_t = std::tuple<size_t, tile_data_array_t>;
gameboard_data_array_t gbda;
bool win{};
bool moved{true};
ull score{};
ull largestTile{2};
long long moveCount{-1};
GameBoard() = default;
explicit GameBoard(ull playsize);
explicit GameBoard(ull playsize, tile_data_array_t prempt_board);
};
size_t getPlaySizeOfGameboardDataArray(GameBoard::gameboard_data_array_t gbda);
tile_t getTileOnGameboardDataArray(GameBoard::gameboard_data_array_t gbda,
point2D_t pt);
bool hasWonOnGameboard(GameBoard gb);
long long MoveCountOnGameBoard(GameBoard gb);
void unblockTilesOnGameboard(GameBoard &gb);
bool canMoveOnGameboard(GameBoard &gb);
bool addTileOnGameboard(GameBoard &gb);
void registerMoveByOneOnGameboard(GameBoard &gb);
void tumbleTilesUpOnGameboard(GameBoard &gb);
void tumbleTilesDownOnGameboard(GameBoard &gb);
void tumbleTilesLeftOnGameboard(GameBoard &gb);
void tumbleTilesRightOnGameboard(GameBoard &gb);
std::string printStateOfGameBoard(GameBoard gb);
} // namespace Game
#endif