//Header file section #include #include using namespace std; //class declartion
ID: 3634492 • Letter: #
Question
//Header file section#include
#include
using namespace std;
//class declartion
class TicTacToe
{
//Variable declartion
private:
enum Status { WIN, DRAW, CONTINUE };
int board[ 3 ][ 3 ];
public:
//Default constructor
TicTacToe();
// make move
void makeMove();
// print board
void printBoard();
// validate move
bool validMove( int, int );
bool xoMove( int );
Status gameStatus();
};
// Member-function definitions for class TicTacToe.
TicTacToe::TicTacToe()
{
for ( int j = 0; j < 3; j++ )
for ( int k = 0; k < 3; k++ )
board[ j ][ k ] = ' ';
}
bool TicTacToe::validMove( int r, int c )
{
return r >= 0 && r < 3 && c >= 0 && c < 3
&& board[ r ][ c ] == ' ';
}
TicTacToe::Status TicTacToe::gameStatus()
{
int a;
if ( board[ 0 ][ 0 ] != ' '
&& board[ 0 ][ 0 ] == board[ 1 ][ 1 ]
&& board[ 0 ][ 0 ] == board[ 2 ][ 2 ] )
return WIN;
else if ( board[ 2 ][ 0 ] != ' ' &&
board[ 2 ][ 0 ] == board[ 1 ][ 1 ] &&
board[ 2 ][ 0 ] == board[ 0 ][ 2 ] )
return WIN;
for ( a = 0; a < 3; ++a )
if ( board[ a ][ 0 ] != ' ' &&
board[ a ][ 0 ] == board[ a ][ 1 ]
&& board[ a ][ 0 ] == board[ a ][ 2 ] )
return WIN;
for ( a = 0; a < 3; ++a )
if ( board[ 0 ][ a ] != ' ' &&
board[ 0 ][ a ] == board[ 1 ][ a ]
&& board[ 0 ][ a ] == board[ 2 ][ a ] )
return WIN;
for ( int r = 0; r < 3; ++r )
for ( int c = 0; c < 3; ++c )
if ( board[ r ][ c ] == ' ' )
return CONTINUE;
return DRAW;
}
void TicTacToe::printBoard()
{
cout << " 0 1 2 ";
for ( int r = 0; r < 3; ++r )
{
cout << r;
for ( int c = 0; c < 3; ++c )
{
cout << setw( 3 ) <<
static_cast< char > ( board[ r ][ c ] );
if ( c != 2 )
cout << " |";
}
if ( r != 2 )
cout << " ____|____|____ | | ";
}
cout << " ";
}
void TicTacToe::makeMove()
{
printBoard();
while ( true )
{
if ( xoMove( 'X' ) )
break;
else if ( xoMove( 'O' ) )
break;
}
}
bool TicTacToe::xoMove( int symbol )
{
int x;
int y;
do
{
cout << "Player " << static_cast< char >( symbol )
<< " enter move: ";
cin >> x >> y;
cout << ' ';
} while ( !validMove( x, y ) );
board[ x ][ y ] = symbol;
printBoard();
Status xoStatus = gameStatus();
if ( xoStatus == WIN )
{
cout << "Player "
<< static_cast< char >( symbol ) << " wins! ";
return true;
}
else if ( xoStatus == DRAW )
{
cout << "Game is a draw. ";
return true;
}
else
return false;
}
//main function
int main()
{
TicTacToe g;
g.makeMove();
system("pause");
return 0;
}
Explanation / Answer
Dear, /*Header file section*/ #include enum Status { WIN, DRAW, CONTINUE }; int board[ 3 ][ 3 ]; /*Default constructor*/ void TicTacToe(); /* make move*/ void makeMove(); /* print board*/ void printBoard(); /* validate move*/ int validMove(int,int); int xoMove( int ); enum Status gameStatus() { int a,r,c; if(board[0][0] != ' '&& board[ 0 ][ 0 ] == board[ 1 ][ 1 ]&& board[ 0 ][ 0]== board[ 2 ][ 2 ] ) return WIN; else if ( board[ 2 ][ 0 ] != ' ' &&board[ 2 ][ 0 ] == board[ 1 ][ 1 ] &&board[ 2 ][ 0 ] == board[ 0 ][ 2 ] ) return WIN; for ( a = 0; a < 3; ++a ) if ( board[ a ][ 0 ] != ' ' &&board[ a ][ 0 ] == board[ a ][ 1 ]&& board[ a ][ 0 ] == board[ a ][ 2 ] ) return WIN; for ( a = 0; a < 3; ++a ) if ( board[ 0 ][ a ] != ' ' &&board[ 0 ][ a ] == board[ 1 ][ a ]&& board[ 0 ][ a ] == board[ 2 ][ a ] ) return WIN; for ( r = 0; r < 3; ++r ) for (c = 0; c < 3; ++c ) if ( board[ r ][ c ] == ' ' ) return CONTINUE; return DRAW; } /*main function*/ int main() { TicTacToe(); makeMove(); system("pause"); return 0; } /*Member-function definitions for class TicTacToe.*/ void TicTacToe() { int j,k; for(j = 0; j < 3; j++ ) for(k = 0; k < 3; k++ ) board[j][k] = ' '; } void makeMove() { printBoard(); while(1) { if(xoMove('X')) break; else if( xoMove('O')) break; } } void printBoard() { int r,c; printf("0 1 2 "); for(r = 0; r < 3; ++r ) { printf("%d",r); for(c = 0; c < 3; ++c ) { printf("%c",(char)board[ r ][ c ]); if ( c != 2 ) printf(" |"); } if ( r != 2 ) printf(" ____|____|____ | | "); } printf(" "); } int xoMove(int symbol) { int x,y; enum Status xoStatus; do { printf("Player ",(char)symbol," enter move: "); scanf("%d%d", &x, &y); printf(" "); } while (!validMove(x, y)); board[x][y] = symbol; printBoard(); xoStatus = gameStatus(); if(xoStatus == WIN) { printf("Player ",(char)symbol," wins! "); return 1; } else if ( xoStatus == DRAW ) { printf("Game is a draw. "); return 1; } else return 0; } int validMove(int r,int c) { if( r >= 0 && r < 3 && c >= 0 && c < 3&& board[ r ][ c ] == ' ') return 1; else return 0; } Hope this would help you.Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.