Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

#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'; }

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Internals A Deep Dive Into How Distributed Data Systems Work

Authors: Alex Petrov

1st Edition

1492040347, 978-1492040347

More Books

Students also viewed these Databases questions

Question

Discuss the Rights issue procedure in detail.

Answered: 1 week ago

Question

Discuss the Rights issue procedure in detail.

Answered: 1 week ago

Question

Explain the procedure for valuation of shares.

Answered: 1 week ago

Question

Which months of this year 5 Mondays ?

Answered: 1 week ago

Question

Define Leap year?

Answered: 1 week ago