?This program runs fine, but want it to display the winners characters only at t
ID: 3556106 • Letter: #
Question
?This program runs fine, but want it to display the winners characters only at the end of the loop.
?
#include <iostream>
using namespace std;
?
?
int getRow();//Get Play Input
int player(int);//Get Players "1" and "2'
char character(int);//Get 'X' and 'O'
int intial(char[9]);//For board values 1-9
int determineWinner(char[9],int count);//Determine Winner
void board(char[9]);//Game board
void validatePlayerMove(char[9],int&);//Validate move
int main()
{
int count=0;//To keep track of Player #1 and #2
char g[9];//For the 9 places on the board
char intialBoard;//For 9 the numbers of the board
int getrow;//Get Player Input
char m;//For 'X' and 'O'
int getPlayer=0;
int i=0;
intialBoard=intial(g);//Puts the nine numbers in place on the board
do{
board(g);//For Game Board filled by g
getPlayer=player(count);//Initializes two players
getrow=getRow();//Get Player Input
m=character(count);//Intiallize X and O
validatePlayerMove(g,getrow);//If move is not valid.
g[getrow-1]=m;//For X and O can be placed on board.
cout<<" ";
i=determineWinner(g,count);
if(i==1)// '1' is winning conditions
{ board(g);
cout<<"Player "<<((count%2)+1)<<" won the game."<<endl;
}
count++;//Advance Players
}while(i==-1);// '-1' is game in progress
if(i==0)//No winner
{
cout<<"Draw"<<endl;
}
return 0;
}
int player(int count)//For Player 1 and 2
{
int t=0;
cout<<" Player " <<((count%2)+1);
t=count;
return t;
?
}
int getRow()//Get player input
{
int row;
cout<<" Enter number: ";
cin>>row;
return row;
?
}
int intial(char g[9])//Sets each number for board.
{
int t=0;
for(int i=0; i<9; i++)
{
g[i];
if(g[0])
{
g[0]='1';
}
if(g[1])
{
g[1]='2';
}
if(g[2])
{
g[2]='3';
}
if(g[3])
{
g[3]='4';
}
if(g[4])
{
g[4]='5';
}
if(g[5])
{
g[5]='6';
}
if(g[6])
{
g[6]='7';
}
if(g[7])
{
g[7]='8';
}
if(g[8])
{
g[8]='9';
}
t=g[i];
}
return t;
?
}
?
char character(int count)//Players assigned letters
{char m;
char a;
m=(count%2==0) ? 'X' : '0';
a=m;
return a;
}
int determineWinner(char g[9],int count)
{
char m;
m=(count%2==0) ? 'X' : '0';
if (g[0] == g[1]&& g[1] ==g[2]) // first row
return 1;
else if(g[3] == g[4]&& g[4] ==g[5])// sec row
return 1;
else if(g[6] == g[7]&& g[7] ==g[8])
return 1;
else if(g[0] == g[3]&& g[3] ==g[6])
return 1;
else if(g[1] == g[4]&& g[4] ==g[7])
return 1;
else if(g[2] == g[5]&& g[5] ==g[8])
return 1;
else if(g[0] == g[4]&& g[4] ==g[8])
return 1;
else if(g[2] == g[4]&& g[4] ==g[6])
return 1;
else if (g[0] != '1' && g[1] != '2' && g[2] != '3' && g[3] != '4' && g[4] != '5' && g[5] != '6' && g[6] != '7' && g[7] != '8' && g[8] != '9')
return 0;
else
return -1;
}
void board(char g[9])
{
cout << endl;
cout << " | | " << endl;
cout << " " << g[0] << " | " << g[1] << " | " << g[2] << endl;
cout << "_____|_____|_____" << endl;
cout << " | | " << endl;
cout << " " << g[3] << " | " << g[4] << " | " << g[5] << endl;
cout << "_____|_____|_____" << endl;
cout << " | | " << endl;
cout << " " << g[6] << " | " << g[7] << " | " << g[8] << endl;
cout << " | | " << endl << endl;
?
?
}
void validatePlayerMove(char g[9],int&getrow)
{
while(g[getrow-1]== 'X'|| g[getrow - 1] == '0')
{
cout<<"Invalid move"<<endl;
getrow=getRow();//Get Player Input
cin.ignore();
}
?
?
?
}
Explanation / Answer
#include <stdio.h>
#define XPLAYER 0
#define OPLAYER 1
#define OPEN 32
#define TIEGAME 2
#define LIVEGAME 3
char board[3][3];
void display_board()
{
printf("------------ ");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("| %c ",board[i][j]);
}
printf("| ");
printf("------------- ");
}
}
void initialize_board()
{
for(int i=0; i< 3; i++)
{
for(int j=0; j<3; j++)
{
board[i][j]= ((48 + i*3 + j )) ;
}
}
display_board();
}
int mainmenu()
{
int ch;
printf("Press 1 if you want to play Press 0 if you want to quit Enter your choice : ");
scanf("%d",&ch);
if(ch==0)
return 1;
else
initialize_board();
return 0;
}
int startscreen()
{
return mainmenu();
}
int get_player_move()
{
int move;
scanf("%d",&move);
return move;
}
int check_valid_move(int move)
{
if(move > 8 || move < 0)
return 0;
int y = move%3;
int x=move/3;
if((board[x][y]=='O') || (board[x][y]=='X'))
return 0;
return 1;
}
int check_win(char ch)
{
if(board[0][0] == ch && board[0][1] ==ch && board[0][2] == ch)
return 1;
if(board[0][0] == ch && board[1][1] ==ch && board[2][2] == ch)
return 1;
if(board[1][0] == ch && board[1][1] ==ch && board[1][2] == ch)
return 1;
if(board[2][0] == ch && board[2][1] ==ch && board[2][2] == ch)
return 1;
if(board[0][1] == ch && board[1][1] ==ch && board[2][1] == ch)
return 1;
if(board[0][2] == ch && board[1][2] ==ch && board[2][2] == ch)
return 1;
if(board[0][0] == ch && board[1][0] ==ch && board[2][0] == ch)
return 1;
if(board[0][2] == ch && board[1][1] ==ch && board[2][0] == ch)
return 1;
return 0;
}
int check_tied()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(board[i][j]!='X' || board[i][j]!='O')
return 0;
}
}
return 1;
}
int check_winner()
{
if(check_win('X')== 1)
return XPLAYER;
if(check_win('O')== 1)
return OPLAYER;
if(check_tied() == 1)
return TIEGAME;
return LIVEGAME;
}
int main()
{
while(1)
{
if(startscreen()==1)
break;
for(int i=0;i<9; i++)
{
if(i%2==0)
{
printf(" ");
printf("Player X Turn ");
int move = get_player_move();
while(!check_valid_move(move))
{printf("INVALID MOVE... PLEASE ENTER AGAIN ");
move=get_player_move();
}
int y=move%3;
int x=move/3;
board[x][y]='X';
display_board();
}
else
{
printf(" ");
printf("Player O Turn ");
int move = get_player_move();
while(!check_valid_move(move))
{
printf("INVALID MOVE... PLEASE ENTER AGAIN ");
move=get_player_move();
}
int y=move%3;
int x=move/3;
board[x][y]='O';
display_board();
}
if(check_winner()== XPLAYER)
{
printf("PLAYER X WON... ");
break;
}
if(check_winner()== OPLAYER)
{
printf("PLAYER O WON... ");
break;
}
if(check_winner()== TIEGAME)
{
printf("GAME TIED... ");
break;
}
if(check_winner()== LIVEGAME)
{
printf("GAME IS ON.... ");
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.