1#ifndef EILEMITWEILE_BOARD_HPP
2#define EILEMITWEILE_BOARD_HPP
7#include "space/FinishArea.hpp"
8#include "space/HomeField.hpp"
9#include "space/Space.hpp"
11#include "space/NormalSpace.hpp"
12#include "space/LadderSpace.hpp"
13#include "space/BenchSpace.hpp"
49 bool MakeMove(
Player* player,
unsigned int figure_idx,
unsigned target_space);
55 void WriteIntoJson(rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator)
const;
62 void SetupGame(
unsigned int player_count,
unsigned int starting_player);
63 bool CheckMove(
Player *player,
unsigned int start_idx,
unsigned int target_idx);
80 Board(std::vector<Space*> spaces,
Dice* dice,
int current_player_color_id,
81 std::vector<std::tuple<unsigned, unsigned, unsigned>> current_playable_figures,
82 std::optional<Color> winner);
Color
Enum for the colors of the players.
Definition Player.hpp:15
Data structure for the game board of Eile Mit Weile including operations on it.
Definition Board.hpp:37
void ResetCurrentPlayableFigures()
Definition Board.cpp:357
Dice * _dice
Definition Board.hpp:74
static Board * FromJson(const rapidjson::Value &json)
Definition Board.cpp:296
std::vector< std::tuple< unsigned, unsigned, unsigned > > GetCurrentPlayableFigures()
Definition Board.cpp:288
Color _current_player_color
Definition Board.hpp:75
std::optional< Color > _winner
Definition Board.hpp:77
void SetupGame(unsigned int player_count, unsigned int starting_player)
Definition Board.cpp:391
std::vector< std::tuple< unsigned, unsigned, unsigned > > ComputePlayableFigures()
Definition Board.cpp:12
void ResetSixCounter()
Definition Board.cpp:279
unsigned GetLadderIdx(unsigned space_idx)
Definition Board.hpp:65
Dice * GetDice()
Definition Board.cpp:210
const std::vector< Space * > & GetSpaces()
Definition Board.cpp:284
std::vector< Space * > _spaces
Definition Board.hpp:73
Board()
Definition Board.cpp:407
void UpdatePlayerColor(unsigned nof_players)
Definition Board.cpp:292
void MoveHome(Figure *figure, unsigned space_idx)
Definition Board.cpp:218
void WriteIntoJson(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) const
Definition Board.cpp:362
bool MakeMove(Player *player, unsigned int figure_idx, unsigned target_space)
Definition Board.cpp:85
unsigned int GetSixCounter()
Definition Board.cpp:206
std::vector< std::tuple< unsigned, unsigned, unsigned > > _current_playable_figures
Definition Board.hpp:76
std::optional< Color > GetWinner()
Definition Board.cpp:262
bool CheckMove(Player *player, unsigned int start_idx, unsigned int target_idx)
Definition Board.cpp:169
unsigned int ThrowDice()
Definition Board.cpp:236
~Board()
Definition Board.cpp:447
wrapper of a simple RNG with a uniform distribution from 1 to 6
Definition Dice.hpp:16
Holds all relevant information of a player.
Definition Player.hpp:27