ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
rules.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <optional>
5#include "core/board.hpp"
6
11{
12public:
17 explicit GameRules(uint8_t connect_length = 4);
18
25 bool checkWin(const Board &board, uint8_t player_id) const;
26
30 bool checkDraw(const Board &board) const;
31
35 bool isValidMove(const Board &board, uint8_t column) const;
36
37 uint8_t getConnectLength() const { return connect_length_; }
38
39private:
40 uint8_t connect_length_;
41
42 bool checkDirection(const Board &board, uint8_t row, uint8_t col,
43 int8_t row_delta, int8_t col_delta, uint8_t player_id) const;
44
45 bool checkHorizontal(const Board &board, uint8_t player_id) const;
46 bool checkVertical(const Board &board, uint8_t player_id) const;
47 bool checkDiagonalDown(const Board &board, uint8_t player_id) const;
48 bool checkDiagonalUp(const Board &board, uint8_t player_id) const;
49};
Definition board.hpp:12
Definition rules.hpp:11
bool checkDraw(const Board &board) const
Definition rules.cpp:25
uint8_t getConnectLength() const
Definition rules.hpp:37
bool checkWin(const Board &board, uint8_t player_id) const
Definition rules.cpp:17
bool isValidMove(const Board &board, uint8_t column) const
Definition rules.cpp:12