Question: #include #define SIZE 9 int checkForWinner( char*, int, char* ); void drawGrid( char a[] ); void takeTurn( char*, char* ); void swapPlayer( char* ); int

#include #define SIZE 9

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 the program so that the user has the option at the start to play the game against a computer or a human. In the new play against the computer mode, the computer will be able to play automatically instead of Player 2. And create a new function which writes the resulted board (the current values of the board when the game is over) in a file with file processing functions (pointer to a FILE, fopen, fprintf, fclose etc.)

Note: Program the moves/choices of the computer to be intelligent (such as blocking the moves of the Player 1, playing in favor of computers win.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!