Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Tic-tac-toe in c++ using classes (http://www.go4expert.com/forums/tic-tac-toe-cpp-using-classes-t23803/)

fattydq 9Nov2010 04:14

Tic-tac-toe in c++ using classes
 
Hello everybody, I was given a partial code for a tic-tac-toe game using classes in C++, and I'm asked to modify it in a few ways. First off I have to fix the display (easy, don't need help here), I have to add a constructor member function which initialize the empty board to all zeros (which I could use some help with, I don't understand where in the program I would even want this to occur, or why?)

Lastly I have to make it so that a second player can play, as of right now only player one can add x's to the board.

Furthermore, I'm having trouble understanding what the entire "Check_Board" object does at all? I see a bunch of sums and multiplications, and I can't figure out what the hell it's doing!

Code: Cpp

// Tic-Tac-Toe Game by Devan Wiech
#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;
int i=0; //where i is row and j will be columns
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!!"<<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;
}
}
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;
}
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;
}
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;
}
}
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;
}
}
if (test==3)
{
test=1;
}
else if (test==12)
{
test=2;
}
else if (count==0)
{
test=3;
}
else
{
test=0;
}
return test;
}
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';
}
}
}
cout<<"Welcome to tic-tac-toe!"<<endl<<endl;;
cout<< " Current Player: X Current Player: O " << endl<<endl<<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;
}
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, or 2): " <<endl;
cin>>row;
cout<<"Enter Column Index (0, 1, or 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, or 2): "<<endl;
cin>>row;
cout<<"Enter Column Index (0, 1, or 2): "<<endl;
cin>>column;
game.Choice_of_Row(row);
game.Choice_of_Column(column);
test=game.Check_Move(game.Pick_Row(), game.Pick_Column());
}
check= game.Check_Board();
}
if (check==1 ||check==1)
{
break;
}

else if (check==3)
{
game.Tic_Tac_Toe_Board();
cout<<"The game is tied. "<<endl;
}
if (player ==1)
{
player==2;
}
else
{
player=1;
}
game.Choice_by_Player(player);
}
game.Tic_Tac_Toe_Board();
cout<<"Player "<<check<<" wins! "<<endl;
return 0;
}



All times are GMT +5.5. The time now is 20:10.