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'; }
Modify version 2 so that a user cannot over-write previous moves Use a 2-D array to hold the Xs and Os Add an option a new header file to play the game on a 4X4 board instead of 3X3
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
