i having problem on the game is tied part. when i run the program it end with player 3 win.


tis is the programe i hv

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

class TicTacToe
{
	public:
		TicTacToe();    
		int Pick_Player();   
		int Pick_Row();   
		int Pick_Column();  
		int Check_Board(); 
		void Choice_by_Player(int);  
		void Choice_of_Row(int);   
		void Choice_of_Column(int);  
		void Tic_Tac_Toe_Board();  
		bool Check_Move(int,int); 
	private:
		int row;
		int column;
		int player;
		int board[3][3];
		char display_board[3][3];
};

TicTacToe::TicTacToe()//:row(0):column(0):player(1):board(0)(0):display_board(' ')(' ')
{
	row = 0;
	column = 0;
	player = 1;
	int i = 0;
	int j = 0;
	for ( i = 0; i < 3; i++)
	{
		for ( j = 0; j < 3; j++)
		{
			board[i][j] = 0;
			display_board[i][j] = ' ';
		}
	}	
}

int TicTacToe::Pick_Player()
{
	return player;
}

int TicTacToe::Pick_Row()
{
	return row;
}

int TicTacToe::Pick_Column()
{
	return column;
}

void TicTacToe::Choice_by_Player(int a)
{
	player = a;
}

void TicTacToe::Choice_of_Row(int b)
{
	row = b;
}

void TicTacToe::Choice_of_Column(int c)
{
	column = c;
}

bool TicTacToe::Check_Move(int row, int column)
{
	

	if ( row != 0  && row != 1 && row != 2 ) 
	{
		cout << " Invalid choice!!";
		cout << endl;
		return 0;
	}
	else if ( column != 0 && column != 1 && column != 2 )
	{
		cout << " Invalid choice!! " << endl;
		return 0;
	}
	else if ( board[row][column] == 1 || board[row][column] == 2)
	{
		cout << " Space already used. Try Again. " << endl;
		return 0;
	}
	else 
	{
		board[row][column] = player;
		return 1;
	}
}   // end of Check_Move

int TicTacToe::Check_Board()
{
	int i = 0;
	int j = 0;
	int sum = 0;
	int test = 0;
	int count = 0;

	for (i = 0; i < 3; i++)
	{
		sum = 0;
		for ( j = 0; j < 3; j++)
		{
			if (board[i][j] == 0)
			{
				count++;
			}	
			sum += (board[i][j] * board[i][j]);
		}

	 	if ( sum == 3 || sum == 12)
	 	{
			test = sum;
			break;
		}
		sum = 0;
	}    // end of for loop	

	for ( j = 0; j < 3; j++)
	{
		sum = 0;
		for ( i = 0; i < 3; i++)
		{
			sum += (board[i][j] * board[i][j]);
		}
		
		if ( sum == 3 || sum == 12)
		{
			test = sum;
			break;
		}
		
		sum = 0;
	}   // end of for loop
	
	if ( test != 3 || test != 12)
	{
		
			sum = (board[0][0] * board[0][0])+ (board[1][1] * board[1][1]) + (board[2][2] * board[2][2]);
		
		if ( sum == 3 || sum == 12)
		{
			test  = sum;
		
		}
	}  // end of if condition

	if (test != 3 || test != 12)
	{
		
			sum = (board[2][0] * board[2][0])+ (board[1][1] * board[1][1]) + (board[0][2] * board[0][2]);
			
			if ( sum == 3 || sum == 12 )
			{
				test = sum;
			}
	}  // end of if condition
		
//	}
	
	if ( test == 3)
	{
		test = 1;
	}
	
	else if ( test == 12)
	{
		test = 2;
	}
	
	else if ( count == 0)
	{
	 	test = 3;
	}
	else
	{
		test = 0;
	}
	return test;

} // end of Check_Board

void TicTacToe::Tic_Tac_Toe_Board()
{
	for ( int row = 0; row < 3; row ++)
	{

		for ( int column = 0; column < 3; column++)
		{

			if ( board[row][column] == 0)
			{
				display_board[row][column] = ' ';
			}
			if ( board[row][column] == 1)
			{
				display_board[row][column] = 'X';
			}
			if ( board[row][column] == 2)
			{
				display_board[row][column] = 'O';
			}
		}  // end of inner for loop
	}  // end of outer for loop

	cout << " 		Let's Play Tic-Tac-Toe!			" << endl;
	cout << "	Current Player: X		Current Player: O	" << endl;
	cout << endl;
	cout << "		|		|		"  << endl;
	cout << " 		|		|		"  << endl;
	cout << 				   display_board[0][0] << " 		|   "  << display_board[0][1]  <<  " 		| "  << display_board[0][2] << "   "  << endl;
	cout << "		|		|		" << endl;
	cout << "-----------------------------------------------" << endl;
	cout << "		|		|		" << endl;
	cout << "		|		|		" << endl;
	cout << 		  		   display_board[1][0] << " 		|   "  << display_board[1][1]  <<  " 		| "  << display_board[1][2] << "   "  << endl;
	cout << "		|		|		" << endl;
        cout << "-----------------------------------------------" << endl;
	cout << " 		|		|		" << endl;
	cout <<			  	       	display_board[2][0] << " 		|   "  << display_board[2][1]  <<  " 		| "  << display_board[2][2] << "   "  << endl;
 	cout << "		|		|		" << endl;
	cout << "		|		|		" << endl;

}   // end of Tic_Tac_Toe_Board




int main()
{


	TicTacToe game;
	bool test;
	bool more = true;
	int row = 0;
	int column= 0;
	int player;
	int check = 0;
	

	TicTacToe();
	
	while ( more )
	{
		game.Tic_Tac_Toe_Board();
		player = game.Pick_Player();
		

		cout << " Current Player " << player;
		cout << endl;
		cout << " Enter Row Index ( 0,1,2):  " ;
		cout << endl;
		cin >> row;
		cout << " Enter Column Index (0,1,2): " << endl;
		cin >> column;

		game.Choice_of_Row(row);
		game.Choice_of_Column(column);

		test = game.Check_Move( game.Pick_Row(), game.Pick_Column());

		if ( test == 1)
		{

			check = game.Check_Board();
		}


		else
		{
			while ( test == 0 ) 
			{
	
				cout << " Current Player " << game.Pick_Player() <<"  Invalid Choice" << endl;
				
				cout << " Enter Row Index ( 0,1,2): " ;
				
				cin >> row;
				cout << endl;
				cout << " Enter Column Index ( 0,1,2): " ;

				cin >> column;
				cout << endl;
				game.Choice_of_Row(row);
				game.Choice_of_Column(column);

				test = game.Check_Move(game.Pick_Row(),game.Pick_Column());
			} // end of while loop
			check = game.Check_Board();
		}
				
		if ( check == 1 || check == 2)
		{	
			break;
		}
		
		else if ( check == 3 ) 
		{
			game.Tic_Tac_Toe_Board();
			cout << " The game is tied. " << endl;
			break;
			
		}
		
		if ( player == 1)
		{
			player = 2;
		}
		else
		{
			player = 1;
		}
		game.Choice_by_Player(player);
		
	} // end of outer while loop

	game.Tic_Tac_Toe_Board();
		
	cout << " Player " << check << " wins. " << endl;
		
	return 0;
} // end of main function

Recommended Answers

All 5 Replies

I didn't go through all your code, but shouldn't you be using

cout << " Player " << player<< " wins. " << endl;

instead of

cout << " Player " << check << " wins. " << endl;

?

In any case, try to debug this first by yourself. Writing it all at once and then posting code in forum is not the way to program.

Start like this.

If the program displays "Player 3 wins" everytime, that means check always gets the value 3 . Now see where the value 3 is assigned for check , and find the reason.

After i follow wad you instruct, it ables to display " The game is tied press any key to continue" but now it does not display the x or 0 on the table for the finally result.

if ( check == 1 || check ==2)
		{	
			break;
		}
		
		else if( check ==3 )
		{
			
		cout << " The game is tied."<< endl;
		return 0;
			
		}
		game.Tic_Tac_Toe_Board();
		
		

		if ( player == 1) // repeating player 1, player 2 ...
		{
			player = 2;
		}
		else
		{
			player = 1;
		}
		game.Choice_by_Player(player);
		
	} // end of outer while loop

	game.Tic_Tac_Toe_Board();
		
	cout << " Player " << player << " wins. " << endl;
	
		
	return 0;
} // end of main function

I have go throught all your code neither; however, I just feel that your code is too long to produce the tic-tac-toe game.

Remove the return statement in line 10, and you will get the display.

If i remove the return 0; the program cannnot work

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.