Code:
// main.c
#include "ConnectFour.h"
int main (void)
{
// Note, Board is just a struct that contains a
// 2-D array of Cells
Board main_board;
initialize_game_board (&main_board);
display_game_board (main_board);
main_board.game_board[5][0].color = 'r';
display_game_board (main_board);
return 0;
}
Code:
// ConnectFour.c
#include "ConnectFour.h"
void initialize_game_board (Board *main_board)
{
int row_counter = 0, column_counter = 0;
for (row_counter = 0; row_counter < ROWS; row_counter++)
{
for (column_counter = 0; column_counter < COLUMNS; column_counter++)
{
main_board->game_board[row_counter][column_counter].color = ' ';
main_board->game_board[row_counter][column_counter].location.column = column_counter;
main_board->game_board[row_counter][column_counter].location.row = row_counter;
main_board->game_board[row_counter][column_counter].occupied = FALSE;
}
}
}
void display_game_board (const Board main_board)
{
int row_counter = 0, column_counter = 0;
printf ("%5d%4d%4d%4d%4d%4d%4d\n", 0, 1, 2, 3, 4, 5, 6);
for (row_counter = 0; row_counter < ROWS; row_counter++)
{
printf ("%5c%4c%4c%4c%4c%4c%4c\n", '-', '-', '-', '-', '-', '-', '-');
printf ("%d", row_counter);
for (column_counter = 0; column_counter < COLUMNS; column_counter++)
{
printf ("%2c", '|');
printf ("%2c", main_board.game_board[row_counter][column_counter].color);
}
printf ("%2c\n", '|');
}
printf ("%5c%4c%4c%4c%4c%4c%4c\n", '-', '-', '-', '-', '-', '-', '-');
}
Code:
// ConnectFour.h
#ifndef CONNECT_FOUR_H
#define CONNECT_FOUR_H
#include <stdio.h>
#define ROWS 6
#define COLUMNS 7
// This type will be used for determining whether or not
// a game board cell is occupied, i.e. a game piece has been
// placed in the cell
typedef enum boolean
{
FALSE, TRUE
} Boolean;
// This represents the location of a cell on the game board
typedef struct coordinate
{
int row;
int column;
} Coordinate;
// A cell is the place on the game board that may be
// occupied with a game piece
typedef struct cell
{
Boolean occupied;
char color;
Coordinate location;
} Cell;
// Use a struct to define the game board
typedef struct board
{
Cell game_board[ROWS][COLUMNS];
} Board;
void initialize_game_board (Board *main_board);
void display_game_board (const Board main_board);
#endif
Also some pseudocode that I have:
* Initialize the board
- Fill the board array with ' ' characters
* Ask user for number of players
- prompt
- get number from user
- return number
* if one player – against computer, otherwise two humans
* Play the game
- While nobody has won (or cats game)
- Get a valid move
- Human?
- Get a move
- Check if valid column and if column is not full
- If bad move, ask again
- Return move
- Computer?
- Get random number between 0 and 6
- Check if column is full, if so, get a new number
- Return number
- Update board with move
- For the selected column
- Start at the bottom
- Move up while the cell isn't empty
- Put player's marker into the cell
- Print board
- Check for win
- Diagonal
*
- Horizontal
- Vertical
- Tie game
Since I am working on it right now I'll probably update the thread within the next few hours. Any help would be appreciated guys!
