Question
#include #define SIZE 9 int checkForWinner( char*, int, char* ); void drawGrid( char a[] ); void takeTurn( char*, char* ); void swapPlayer( char* ); int
#include
int checkForWinner( char*, int, char* ); void drawGrid( char a[] ); void takeTurn( char*, char* ); void swapPlayer( char* );
int main() { char grid[SIZE] = {'0', '1', '2', '3', '4', '5', '6', '7', '8' }; char currentPlayer = 'O'; int counter = 0, done = 0; drawGrid( grid ); while( !done ) { takeTurn( grid, ¤tPlayer ); drawGrid( grid ); done = checkForWinner( grid, counter, ¤tPlayer ); swapPlayer( ¤tPlayer ); counter++; } }
/** drawGrid Draws the current state of the tic-tac-toe grid **/ void drawGrid( char a[] ) { printf( " " ); printf( " %c | %c | %c ", a[0], a[1], a[2] ); printf( "---|---|--- "); printf( " %c | %c | %c ", a[3], a[4], a[5] ); printf( "---|---|--- "); printf( " %c | %c | %c ", a[6], a[7], a[8] ); printf(" "); }
void takeTurn( char a[], char *playerPtr ) { int available[8]; int i, j = 0, choice; for(i = 0; i < 9; i++ ) if( (a[i] != 'X') && (a[i] != 'O') ) available[ j++ ] = i;
printf( " It is %c's turn. Choose your move (", *playerPtr );
for( i = 0; i < j; i++ ) printf( " %d", available[i]); printf( " ): "); scanf( "%d", &choice); if( *playerPtr == 'X' ) a [ choice ] = 'X'; else a[ choice ] = 'O';
}
int checkForWinner( char a[], int cnt, char* playerPtr ) { int i, gameOver = 0; for( i = 0; i < 3; i++ ) { if( a[3*i] == a[3*i + 1] && a[3*i + 1] == a[3*i + 2]) { printf( "We have a winner! It is %c. ", *playerPtr ); gameOver = 1; } if( a[i] == a[i + 3] && a[i + 3] == a[i + 6]) { printf( "Game over, man! %c dominates. ", *playerPtr ); gameOver = 1; } }
if( a[0] == a[4] && a[4] == a[8]) { printf( "%c wins on a diagonal move! ", *playerPtr ); gameOver = 1; } if( a[2] == a[4] && a[4] == a[6]) { printf( "That's it. %c has won! ", *playerPtr ); gameOver = 1;
} if( cnt == 8 && gameOver == 0 ) { printf( "Awww. There is no winner! " ); gameOver = 1; } return gameOver; }
void swapPlayer( char *playerPtr ) { if( *playerPtr == 'X' ) *playerPtr = 'O'; else *playerPtr = 'X'; }
In its current form the Player 1(currentPlayer) is initialized to use O and Player 2 uses X characters by default. Modify the program so that Player 1 can choose with which character he/she wants to play the game with.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started