ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
engine.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <functional>
5
6#include "core/move.hpp"
7#include "core/game/state.hpp"
8#include "core/game/rules.hpp"
9
14{
15public:
16 using StateChangeCallback = std::function<void(const GameState &)>;
17
25 GameEngine(uint8_t rows = 6,
26 uint8_t cols = 7,
27 uint8_t num_players = 2,
28 uint8_t connect_length = 4);
29
33 void startGame();
34
40 bool makeMove(uint8_t column);
41
48 bool makeMove(uint8_t column, uint8_t player_id);
49
53 void reset();
54
59 {
60 state_change_callback_ = callback;
61 }
62
67 {
68 advancePlayer();
69 notifyStateChange();
70 }
71
72 // State accessors
73 const GameState &getState() const { return state_; }
74 const GameRules &getRules() const { return rules_; }
75
76 bool isGameOver() const;
77 std::optional<uint8_t> getWinner() const { return state_.getWinner(); }
78
79private:
80 GameState state_;
81 GameRules rules_;
82 StateChangeCallback state_change_callback_;
83
84 void advancePlayer();
85 void checkGameEnd(uint8_t last_player);
86 void notifyStateChange();
87};
Definition engine.hpp:14
bool makeMove(uint8_t column)
Definition engine.cpp:22
void skipPlayerTurn()
Definition engine.hpp:66
std::optional< uint8_t > getWinner() const
Definition engine.hpp:77
const GameRules & getRules() const
Definition engine.hpp:74
const GameState & getState() const
Definition engine.hpp:73
bool isGameOver() const
Definition engine.cpp:76
void reset()
Definition engine.cpp:70
std::function< void(const GameState &)> StateChangeCallback
Definition engine.hpp:16
void setStateChangeCallback(StateChangeCallback callback)
Definition engine.hpp:58
void startGame()
Definition engine.cpp:11
Definition rules.hpp:11
Definition state.hpp:23
std::optional< uint8_t > getWinner() const
Definition state.hpp:36