This was a class example to make simple tic-tac-toe to explain 2d-arrays. Our professor did the board and some of the logic, as the students followed.
The thing I want to do is to make sure the player one's 'X' doesn't overwrite the player two's 'O' and visa-versa, when playing the game.
CODE
#include <cstdlib>
#include <iostream>
using namespace std;
const int ROW = 5;
const int COL = 5;
void print(char [][COL], int, int);
void init(char [][COL], int, int);
void play(char [][COL], int, int);
void menu(int &, int &);
int main(int argc, char *argv[])
{
char board[ROW][COL];
init(board, ROW, COL);
print(board, ROW, COL);
play(board, ROW, COL);
system("PAUSE");
return EXIT_SUCCESS;
}
//print the game board
void print(char board[][COL], int row, int col)
{
for(int r = 0; r < row; r++)
{
for(int c = 0; c < col; c++)
{
cout << board[r][c];
}
cout << endl;
}
}
//initialize the playing field
void init(char board[][COL], int row, int col)
{
board[0][0] = 201;
board[row-1][0] = 200;
board[0][col-1] = 187;
board[row-1][col-1] = 188;
//horizontal
for(int c = 1; c < col-1; c++)
{
board[0][c] = 205;
board[row-1][c] = 205;
}
//vertical
for(int r = 1; r < row-1; r++)
{
board[r][0] = 186;
board[r][col-1] = 186;
}
//center of table
for(int r = 1; r < row-1; r++)
{
for(int c = 1; c < col-1; c++)
{
board[r][c] = 250;
}
}
}
void menu(int & r, int & c)
{
cout << "Please, enter the row coord. (1-3): ";
cin >> r;
cout << "\nNow, enter the column coord. (1-3): ";
cin >> c;
while (r <= 0 || r >= 4 || c <= 0 || c >= 4) // input validation for the array
{
cout << "\nPlease, enter the CORRECT coordinates again" << endl;
cout << "Enter Row: ";
cin >> r;
cout << "\nEnter Column: ";
cin >> c;
}
}
//play
void play(char board[][COL], int row, int col)
{
char p1 = 'X';
char p2 = 'O';
int r, c;
bool p1p = true;
cout << "Welcome" << endl;
for(int i = 0; i < 9; i++)
{
menu(r, c);
if(p1p)
{
board[r][c] = p1;
p1p = false;
}
else
{
board[r][c] = p2;
p1p = true;
}
system("CLS");
print(board, row, col);
}
}