Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

CPSC 1103 Lab # 11 Two – dimensional array Write a program to play the game of T

ID: 3571476 • Letter: C

Question

CPSC 1103 Lab # 11 Two – dimensional array

Write a program to play the game of Tic-Tac-Toe with two players. It is a 5 by 5 board. Write one function to initialize board. Assume a 5 by 5 integer array. Write one function to output board. Write one function to check for a winning player. Each player is assigned an integer code and is prompted for the entry which is the location for the entry on the board using the subscripts of the array. Output the board after each entry. The game is stopped when there is a winning entry and when all cells are filled and there is no winner.

Test the lab with no winner as well. It should be well-tested.

Please program in C++. Thanks

Explanation / Answer

*************************Program*****************************

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int rows , columns ;
int gameStatus(int board_config[][5])
{
if (rows == 3)
{
if ( board_config[0][0] == board_config[0][1] && board_config[0][1] == board_config[0][2] )
{
return 1;
}
else if ( board_config[1][0] == board_config[1][1] && board_config[1][1] == board_config[1][2] )
{
return 1;
}
else if ( board_config[2][0] == board_config[2][1] && board_config[2][1] == board_config[2][2] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][0] && board_config[1][0] == board_config[2][0] )
{
return 1;
}
else if ( board_config[0][1] == board_config[1][1] && board_config[1][1] == board_config[2][1] )
{
return 1;
}
else if ( board_config[0][2] == board_config[1][2] && board_config[1][2] == board_config[2][2] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][1] && board_config[1][1] == board_config[2][2] )
{
return 1;
}
else if ( board_config[0][2] == board_config[1][1] && board_config[1][1] == board_config[2][0] )
{
return 1;
}
else if ( board_config[0][0] != 1 && board_config[0][1] != 2 && board_config[0][2] != 3 && board_config[1][0] != 4 && board_config[1][1] != 5 &&
board_config[1][2] != 6 && board_config[2][0] != 7 && board_config[2][1] != 8 && board_config[2][2] != 9 )
{
return 0;
}
else
{
return -1 ;
}
}
else if (rows == 4)
{
if ( board_config[0][0] == board_config[0][1] && board_config[0][1] == board_config[0][2] && board_config[0][2] == board_config[0][3] )
{
return 1;
}
else if ( board_config[1][0] == board_config[1][1] && board_config[1][1] == board_config[1][2] && board_config[1][2] == board_config[1][3] )
{
return 1;
}
else if ( board_config[2][0] == board_config[2][1] && board_config[2][1] == board_config[2][2] && board_config[2][2] == board_config[2][3] )
{
return 1;
}
else if ( board_config[3][0] == board_config[3][1] && board_config[3][1] == board_config[3][2] && board_config[3][2] == board_config[3][3] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][0] && board_config[1][0] == board_config[2][0] && board_config[2][0] == board_config[3][0] )
{
return 1;
}
else if ( board_config[0][1] == board_config[1][1] && board_config[1][1] == board_config[2][1] && board_config[2][1] == board_config[3][1] )
{
return 1;
}
else if ( board_config[0][2] == board_config[1][2] && board_config[1][2] == board_config[2][2] && board_config[2][2] == board_config[3][2] )
{
return 1;
}
else if ( board_config[0][3] == board_config[1][3] && board_config[1][3] == board_config[2][3] && board_config[2][3] == board_config[3][3] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][1] && board_config[1][1] == board_config[2][2] && board_config[2][2] == board_config[3][3] )
{
return 1;
}
else if ( board_config[0][3] == board_config[1][2] && board_config[1][2] == board_config[2][1] && board_config[2][1] == board_config[3][0] )
{
return 1;
}
else if ( board_config[0][0] != 1 && board_config[0][1] != 2 && board_config[0][2] != 3 && board_config[0][3] != 4 &&
board_config[1][0] != 5 && board_config[1][1] != 6 && board_config[1][2] != 7 && board_config[1][3] != 8 &&
board_config[2][0] != 9 && board_config[2][1] != 10 && board_config[2][2] != 11 && board_config[2][3] != 12 &&
board_config[3][0] != 13 && board_config[3][1] != 14 && board_config[3][2] != 15 && board_config[3][3] != 16 )
{
return 0;
}
else
{
return -1 ;
}
}
else
{
if ( board_config[0][0] == board_config[0][1] && board_config[0][1] == board_config[0][2] && board_config[0][2] == board_config[0][3] && board_config[0][3] == board_config[0][4] )
{
return 1;
}
else if ( board_config[1][0] == board_config[1][1] && board_config[1][1] == board_config[1][2] && board_config[1][2] == board_config[1][3] && board_config[1][3] == board_config[1][4] )
{
return 1;
}
else if ( board_config[2][0] == board_config[2][1] && board_config[2][1] == board_config[2][2] && board_config[2][2] == board_config[2][3] && board_config[2][3] == board_config[2][4] )
{
return 1;
}
else if ( board_config[3][0] == board_config[3][1] && board_config[3][1] == board_config[3][2] && board_config[3][2] == board_config[3][3] && board_config[3][3] == board_config[3][4] )
{
return 1;
}
else if ( board_config[4][0] == board_config[4][1] && board_config[4][1] == board_config[4][2] && board_config[4][2] == board_config[4][3] && board_config[4][3] == board_config[4][4] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][0] && board_config[1][0] == board_config[2][0] && board_config[2][0] == board_config[3][0] && board_config[3][0] == board_config[4][0] )
{
return 1;
}
else if ( board_config[0][1] == board_config[1][1] && board_config[1][1] == board_config[2][1] && board_config[2][1] == board_config[3][1] && board_config[3][1] == board_config[4][1] )
{
return 1;
}
else if ( board_config[0][2] == board_config[1][2] && board_config[1][2] == board_config[2][2] && board_config[2][2] == board_config[3][2] && board_config[3][2] == board_config[4][2] )
{
return 1;
}
else if ( board_config[0][3] == board_config[1][3] && board_config[1][3] == board_config[2][3] && board_config[2][3] == board_config[3][3] && board_config[3][3] == board_config[4][3] )
{
return 1;
}
else if ( board_config[0][4] == board_config[1][4] && board_config[1][4] == board_config[2][4] && board_config[2][4] == board_config[3][4] && board_config[3][4] == board_config[4][4] )
{
return 1;
}
else if ( board_config[0][0] == board_config[1][1] && board_config[1][1] == board_config[2][2] && board_config[2][2] == board_config[3][3] && board_config[3][3] == board_config[4][4] )
{
return 1;
}
else if ( board_config[0][4] == board_config[1][3] && board_config[1][3] == board_config[2][2] && board_config[2][2] == board_config[3][1] && board_config[3][1] == board_config[4][0] )
{
return 1;
}
else if ( board_config[0][0] != 1 && board_config[0][1] != 2 && board_config[0][2] != 3 && board_config[0][3] != 4 && board_config[0][4] != 5 &&
board_config[1][0] != 6 && board_config[1][1] != 7 && board_config[1][2] != 8 && board_config[1][3] != 9 && board_config[1][4] != 10 &&
board_config[2][0] != 11 && board_config[2][1] != 12 && board_config[2][2] != 13 && board_config[2][3] != 14 && board_config[2][4] != 15 &&
board_config[3][0] != 16 && board_config[3][1] != 17 && board_config[3][2] != 18 && board_config[3][3] != 19 && board_config[3][4] != 20 &&
board_config[4][0] != 21 && board_config[4][1] != 22 && board_config[4][2] != 23 && board_config[4][3] != 24 && board_config[4][4] != 25 )
{
return 0;
}
else
{
return -1 ;
}
}
}
string getChoice (int x)
{
switch (x)
{
  
   //the following case returns user choice i.e. X or O to fill the game tiles
case -1 : return "X " ;
               break;
case 0 : return "O " ;
               break;
       //The following case returns user choice of tile selection for first row
case 1 : return " 1" ;
               break;
case 2 : return " 2" ;
               break;
case 3 : return " 3" ;
               break;
case 4 : return " 4" ;
               break;
case 5 : return " 5" ;
               break;
       //The following case returns user choice of tile selection for second row
case 6 : return " 6" ;
               break;
case 7 : return " 7" ;
               break;
case 8 : return " 8" ;
               break;
case 9 : return " 9" ;
               break;
case 10 : return "10" ;
                   break;
       //The following case returns user choice of tile selection for third row
case 11 : return "11" ;
                   break;
case 12 : return "12" ;
               break;
               // when a user press 13 it will update 13th tile in the game and same for other tiles
case 13 : return "13" ;
                   break;
case 14 : return "14" ;
               break;
case 15 : return "15" ;
                  break;
   //The following case returns user choice of tile selection for fourth row
case 16 : return "16" ;
               break;
case 17 : return "17" ;
                   break;
case 18 : return "18" ;
               break;
   //hen a user press 19 it will update 19th tile in the game and same for other tiles
case 19 : return "19" ;
                  break;
case 20 : return "20" ;
               break;
   //The following case returns user choice of tile selection for fifth row
case 21 : return "21" ;
               break;
case 22 : return "22" ;
               break;
case 23 : return "23" ;
               break;
case 24 : return "24" ;
               break;
case 25 : return "25" ;
               break;
       //af any other number is entered following default will display an error message
default : cout << "Error Occured...Please try again...!!!!" ;
}
}
void updateBoard(int board_config[][5],int rows ,int columns)
{
system("cls") ;
for (int i = 0 ; i < rows ; i++)
{
for (int j = 0 ; j < columns ; j++)
{
cout << " " << getChoice(board_config[i][j]) << " |" ;
}
cout << endl ;
}
}
void play_move(int board_config[][5])
{
int player = 1 , p ;
int choose_move ;
int mark ;
do
{
updateBoard(board_config,rows,columns) ;
player = (player % 2) ? 1 : 2 ;
cout << "player " << player << " , please enter your move(Note:enter the number in the box) : " ;
cin >> choose_move ;
mark = (player % 2) ? -1 : 0 ;
player = player++ ;
while (
choose_move != board_config[0][0] &&choose_move != board_config[0][1] &&choose_move != board_config[0][2] &&choose_move != board_config[0][3] &&choose_move != board_config[0][4] &&
choose_move != board_config[1][0] &&choose_move != board_config[1][1] &&choose_move != board_config[1][2] &&choose_move != board_config[1][3] &&choose_move != board_config[1][4] &&
choose_move != board_config[2][0] &&choose_move != board_config[2][1] &&choose_move != board_config[2][2] &&choose_move != board_config[2][3] &&choose_move != board_config[2][4] &&
choose_move != board_config[3][0] &&choose_move != board_config[3][1] &&choose_move != board_config[3][2] &&choose_move != board_config[3][3] &&choose_move != board_config[3][4] &&
choose_move != board_config[4][0] &&choose_move != board_config[4][1] &&choose_move != board_config[4][2] &&choose_move != board_config[4][3] &&choose_move != board_config[4][4]
)
{
player-- ;
cout << "Wrong Move...!!!! Please Press 'ENTER' and choose again to continue : " << endl;
cout << "player " << player << " Please choose your move wisely :" ;
cin >> choose_move ;
player++ ;
}
for (int i = 0 ; i < rows ;i++)
{
for (int j = 0 ; j < columns ; j++)
{
if ( choose_move == board_config[i][j])
{
board_config[i][j] = mark ;
}
}
}
p = gameStatus(board_config);
if (p == 0)
{
updateBoard(board_config,rows,columns) ;
cout << " Result : The Game Draw. " ;
break ;
}
}while ( p != 1) ;
if (p == 1)
{
updateBoard(board_config,rows,columns) ;
int temp= --player;
cout << "Result :Player "<<temp;
       cout<<" is the winner of this game...!!!. " ;
}
}
int main()
{
int board_config[5][5] ;
int x = 1 ;
    rows=5 ;
    columns=5;
for (int i = 0 ; i < rows ; i++)
{
for (int j = 0 ; j < columns ; j++)
{
board_config[i][j] = x++ ;
}
}
play_move(board_config);
}

****************OUTPUT************************************

1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 |
player 1 , please enter your move(Note:enter the number in the box) :

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote