ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
GameEngine Class Reference

#include <engine.hpp>

Public Types

using StateChangeCallback = std::function< void(const GameState &)>
 

Public Member Functions

 GameEngine (uint8_t rows=6, uint8_t cols=7, uint8_t num_players=2, uint8_t connect_length=4)
 
void startGame ()
 
bool makeMove (uint8_t column)
 
bool makeMove (uint8_t column, uint8_t player_id)
 
void reset ()
 
void setStateChangeCallback (StateChangeCallback callback)
 
void skipPlayerTurn ()
 
const GameStategetState () const
 
const GameRulesgetRules () const
 
bool isGameOver () const
 
std::optional< uint8_t > getWinner () const
 

Detailed Description

Core game engine - manages game flow and enforces rules

Member Typedef Documentation

◆ StateChangeCallback

using GameEngine::StateChangeCallback = std::function<void(const GameState &)>

Constructor & Destructor Documentation

◆ GameEngine()

GameEngine::GameEngine ( uint8_t  rows = 6,
uint8_t  cols = 7,
uint8_t  num_players = 2,
uint8_t  connect_length = 4 
)

Constructor

Parameters
rowsBoard rows
colsBoard columns
num_playersNumber of players
connect_lengthNumber of pieces to connect (default 4)

Member Function Documentation

◆ getRules()

const GameRules & GameEngine::getRules ( ) const
inline

◆ getState()

const GameState & GameEngine::getState ( ) const
inline

◆ getWinner()

std::optional< uint8_t > GameEngine::getWinner ( ) const
inline

◆ isGameOver()

bool GameEngine::isGameOver ( ) const

◆ makeMove() [1/2]

bool GameEngine::makeMove ( uint8_t  column)

Make a move for the current player

Parameters
columnColumn to drop piece in
Returns
true if move was successful

◆ makeMove() [2/2]

bool GameEngine::makeMove ( uint8_t  column,
uint8_t  player_id 
)

Make a move for a specific player (with validation)

Parameters
columnColumn to drop piece in
player_idPlayer making the move
Returns
true if move was successful

◆ reset()

void GameEngine::reset ( )

Reset the game to initial state

◆ setStateChangeCallback()

void GameEngine::setStateChangeCallback ( StateChangeCallback  callback)
inline

Register callback for state changes

◆ skipPlayerTurn()

void GameEngine::skipPlayerTurn ( )
inline

Skip one player's turn

◆ startGame()

void GameEngine::startGame ( )

Start a new game


The documentation for this class was generated from the following files: