13 int get_lowest_empty_row(
int col) {
14 for (
int row = 0; row < 6; row++) {
15 if (
board[row][col] ==
' ') {
24 for (
int i = 0; i < 6; i++) {
25 for (
int j = 0; j < 7; j++) {
32 int col = move->
get_y();
35 if (col < 0 || col >= 7) {
36 cout <<
"Invalid column! Choose 0-6.\n";
40 int row = get_lowest_empty_row(col);
42 cout <<
"Column " << col <<
" is full!\n";
46 board[row][col] = symbol;
55 for (
int row = 0; row < 6; row++) {
56 for (
int col = 0; col < 4; col++) {
57 if (
board[row][col] == symbol &&
58 board[row][col + 1] == symbol &&
59 board[row][col + 2] == symbol &&
60 board[row][col + 3] == symbol)
66 for (
int col = 0; col < 7; col++) {
67 for (
int row = 0; row < 3; row++) {
68 if (
board[row][col] == symbol &&
69 board[row + 1][col] == symbol &&
70 board[row + 2][col] == symbol &&
71 board[row + 3][col] == symbol)
77 for (
int row = 0; row < 3; row++) {
78 for (
int col = 0; col < 4; col++) {
79 if (
board[row][col] == symbol &&
80 board[row + 1][col + 1] == symbol &&
81 board[row + 2][col + 2] == symbol &&
82 board[row + 3][col + 3] == symbol)
88 for (
int row = 0; row < 3; row++) {
89 for (
int col = 3; col < 7; col++) {
90 if (
board[row][col] == symbol &&
91 board[row + 1][col - 1] == symbol &&
92 board[row + 2][col - 2] == symbol &&
93 board[row + 3][col - 3] == symbol)
106 for (
int col = 0; col < 7; col++) {
107 if (
board[5][col] ==
' ') {
142 <<
"), enter column (0-6): ";
147 int col = rand() % 7;
148 cout << player->
get_name() <<
" chooses column " << col <<
"\n";
PlayerType
Represents the type of player in the game.
Definition BoardGame_Classes.h:24
@ HUMAN
A human player.
Definition BoardGame_Classes.h:25
@ COMPUTER
A computer-controlled player.
Definition BoardGame_Classes.h:26
int n_moves
Definition BoardGame_Classes.h:45
Board(int rows, int columns)
Definition BoardGame_Classes.h:51
vector< vector< char > > board
Definition BoardGame_Classes.h:44
bool is_lose(Player< char > *player) override
Check if a player has lost.
Definition FourInARow.h:101
bool game_is_over(Player< char > *player) override
Check if the game is over.
Definition FourInARow.h:114
bool is_draw(Player< char > *player) override
Check if the game ended in a draw.
Definition FourInARow.h:105
FourInARowBoard()
Definition FourInARow.h:23
bool update_board(Move< char > *move) override
Update the board with a new move.
Definition FourInARow.h:31
bool is_win(Player< char > *player) override
Check if a player has won.
Definition FourInARow.h:51
FourInARowPlayer(string name, char symbol)
Definition FourInARow.h:122
FourInARowRandomPlayer(char symbol)
Definition FourInARow.h:128
Move< char > * get_move(Player< char > *player) override
Ask the user (or AI) to make a move.
Definition FourInARow.h:138
FourInARowUI()
Definition FourInARow.h:136
Represents a single move in a board game.
Definition BoardGame_Classes.h:100
T get_symbol() const
Get the move symbol.
Definition BoardGame_Classes.h:116
int get_y() const
Get column index.
Definition BoardGame_Classes.h:113
Base template for all players (human or AI).
Definition BoardGame_Classes.h:126
char symbol
Definition BoardGame_Classes.h:130
PlayerType get_type() const
Get player type (e.g., 'H' or 'C').
Definition BoardGame_Classes.h:147
Player(string n, char s, PlayerType t)
Definition BoardGame_Classes.h:137
string get_name() const
Get the player's name.
Definition BoardGame_Classes.h:144
string name
Definition BoardGame_Classes.h:128
T get_symbol() const
Get the player's symbol.
Definition BoardGame_Classes.h:150
UI(string message, int cell_display_width)
Definition BoardGame_Classes.h:196