c++ help with TicTacToe

sharan93's Avatar, Join Date: Apr 2012
Newbie Member
Hey I want the game board for the first code in my second code, help please, could some tell me in details how do I add this board. and My second displays 1 and 2 instead of x and o , how do I correct that.
first code: human vs human
HTML Code:
#include<iostream>#include<string>#include"110ct.h"using namespace std;class TicTacToe { private: 	ColourController ct;    ColourController cls;     CursorController crs;    char Board[3][3];     int play();     void playermove();     int turn(int);     int check (int, int);     void boardProgress(char x[][3]);     int Winner(char x[][3]);     int player1, player2, draw, player,winner,done;     int row, col;  public:     int y, z, t, s;     void intBoard();     int Statistics(int);      char playAgain(char); }playBall;  int main() {     playBall.y = 0,playBall.z = 0,playBall.t = 0,playBall.s = 0;     int Winner = 0; 	ColourController ct;    ColourController cls;     cls.setForeground(Aqua);        cout << " welcome to TIC TAC TOE" <<endl;      char done = false;      while (!done)         {         ColourController cls;         cls.setForeground(Aqua);        cout << " Good Luck!"<< endl;                                  playBall.intBoard();          done = playBall.playAgain(done); }  cout << "Thank you for my playing my game"<< endl; system ("pause"); return 0; } void TicTacToe::intBoard() {     done = false;     winner = 0;     player = 2;     player1 = 1;     player2 = 2;     draw = 3;     int i,j;     for (j=0;j<3;j++)     {         for (i=0;i<3;i++)         {             Board[j][i]=0;         }     }     play(); }  int TicTacToe::play() {     int done = false;     boardProgress(Board);     while(!done)     {         playermove();         boardProgress(Board);         done = Winner(Board);     }     Statistics(winner);     return 0; } void TicTacToe::playermove() {     int answer = false;     while (answer == false)     {         cout <<"Row: ";         cin >> row;         row--;         cout <<"Column: ";         cin >> col;         col--;         answer = check(row,col);     }     player = turn(player);     if (player == 1)         Board[row][col] = 'X';     else if (player == 2)         Board[row][col] = 'O';     else         cout<< "Failed."; } int TicTacToe::check(int row, int col) {     if(Board[row][col] == 0)     {         return true;     }     else if (Board[row][col] != 0)     {         cout <<"You can't go there"<< endl;         return false;     }     else     {         cout<< "Going through Check";         Winner(Board);     }     return false; }  int TicTacToe::turn(int player) {     switch(player)     {     case 1: player = 2;         {         cout<<"It's Player 1's turn"<< endl;         break;         }     case 2: player = 1;         {         cout<<"It's Player 2's turn"<< endl;         break;         }     }     return player; }  int TicTacToe::Winner(char x[][3]) {     winner = 0;     int count = 0;     int a = row;     int b = col;     for (a=0;a<3;a++)     {         for (b=0;b<3;b++)         {             if (Board[a][b]==0)             {                 count++;             }         }     }     if (count > 0)     {         int row, col, r, c, d, r1, c1, d1;         for (row=0; row<3; row++)         {             r=0;             r1=0;              for (col=0; col<3; col++)             { 			                if(x[row][col]=='X')                     r++;                 if(x[row][col]=='O')                     r1++;                 if (r1==3)                 {                      winner=2;                 }                 if (r==3)                 {                        winner=1;                 }             }         }         for (col=0; col<3; col++)         {             r=0;             r1=0;             for (row=0; row<3; row++)             {                     if(x[row][col]=='X')                     r++;                 if(x[row][col]=='O')                     r1++;                 if (r1==3)                 {                        winner=2;                 }                 if (r==3)                 {                     winner=1;                     }             }         }         if (x[0][0]=='X' && x[1][1]=='X' && x[2][2]=='X')         {             winner=1;         }         else if (x[0][0]=='O' && x[1][1]=='O' && x[2][2]=='O')         {             winner=2;         }         else if (x[2][0]=='X' && x[1][1]=='X' && x[0][2]=='X')         {             winner=1;         }         else if (x[2][0]=='O' && x[1][1]=='O' && x[0][2]=='O')         {             winner=2;         }     }     else if (count == 9)     {         cout << "Its a draw" << endl;         winner = 3;     }        else     {         cout<< "next player's turn"<< endl;     }     if (winner > 0)     {         done = true;     } return done; }  int TicTacToe::Statistics(int winner)     {     playBall.y++;     switch(winner)     {     case 1: z++;         {         break;         }     case 2: t++;         {         break;         }     case 3: s++;         {         break;         }     }     cout<<" Number of games you have played: " << y;     cout<<" Number of games Player 1 has won: " << z << " games.";      cout<<" Number of games Player 2 has won: " << t << " games.";     cout<<" Number have draws you had: " << s << " draws.";     return 0; }  char TicTacToe::playAgain(char done) {     cout <<"Would you like to play again"<< endl;     cout <<"Y/N: " << endl;     cin >> done;     if(done == 'Y' || done == 'y')     {          done = false;     }     else     {         done = true;     }     return done; } void TicTacToe::boardProgress(char x[][3]) {	cls.setForeground(Purple);    cout << "      |     |     \n";     cout << "   " << x[0][0] << "  |  " << x[0][1] << "  |  " << x[0][2] <<"  \n";     cout << " _____|_____|_____\n";     cout << "      |     |     \n";     cout << "   " << x[1][0] << "  |  " << x[1][1] << "  |  " << x[1][2] <<"  \n";     cout << " _____|_____|_____\n";     cout << "      |     |     \n";     cout << "   " << x[2][0] << "  |  " << x[2][1] << "  | " << x[2][2] <<"  \n";     cout << "      |     |     \n"; }
second code: human vs computer:
HTML Code:
#include <string>#include <iostream>#include"110ct.h"//Use standard namespace to eliminate typing of std::using namespace std;/* !-------- Declare Classes Here --------! */class TicTacToe{   private:      int Grid[9];      int Player;      int TurnCounter;      int Players;      int PlayerType[20];   public:      TicTacToe();      void PrintTurn();      int PlayerHuman();      void HumanMove();      void ComputerMove();      void DrawBoard();      int  Winner();      int  FullBoard();      void NextTurn();}; //End of the Class Declaration/* !-------- Develop Methods Here --------! */TicTacToe::TicTacToe(){    srand(time(0)); //Get a Random Number    Player = 1; //Determines who starts first    TurnCounter = 0; //Initializes the turn counter        //Set up New Players when game begins    Players = 2;    PlayerType[1] = 1; //PlayerType[Player] is the Human User(1)    PlayerType[2] = 0; //PlayerType[Player] is the Computer (0)    for (int i = 0; i < 9; i++)    {       Grid[i] = 0;    }}void TicTacToe::DrawBoard(){	ColourController cls;	cls.setForeground(Red);   cout << endl        << Grid[0] << " | " << Grid[1] << " | " << Grid[2]        << "\n---------\n"        << Grid[3] << " | " << Grid[4] << " | " << Grid[5]        << "\n---------\n"        << Grid[6] << " | " << Grid[7] << " | " << Grid[8]        << endl;} //End Drawing the TicTacToe Boardvoid TicTacToe::PrintTurn(){   cout << "\nPlayer " << Player << "'s turn.\n";} //End Printing Turnvoid TicTacToe::NextTurn(){   TurnCounter++;   if (++Player > Players)   {      Player = 1;   }} //End Next Turnint TicTacToe::PlayerHuman(){   return PlayerType[Player];} //End Determination of A Human Playervoid TicTacToe::HumanMove(){	ColourController cls;	cls.setBackground(Blue);	cls.setForeground(Aqua);   cout << " Enter your box number please: ";   int Move;   do   {      cin >> Move;      Move--; // For user to enter 1-9 instead of 0-8   }   while (Move < 0 || Move > 8 || Grid[Move] != 0);   Grid[Move] = Player;} //End the Human Movevoid TicTacToe::ComputerMove(){   int Move;   do   {      Move  = rand() % 9; //Not really a Smart AI, Just picks a random move   }   while (Move < 0 || Move > 8 || Grid[Move] != 0);   Grid[Move] = Player;} //End the Computer Moveint TicTacToe::Winner(){   int i = 0;   int Board[8][3] = {	                	   {0,1,2},       {3,4,5},       {6,7,8},       {0,3,6},       {1,4,7},       {2,5,8},       {0,4,8},       {2,4,6}   }; //List of all possible winning outcomes   for ( i = 0; i < 8; i++) //Loop for all possible winning outcomes   {      if ((Grid[Board[i][0]] == Grid[Board[i][1]]) && (Grid[Board[i][1]] == Grid[Board[i][2]]) && Grid[Board[i][0]] != 0 )      {         cout << "Player " << Grid[Board[i][0]]              <<  " IS THE WINNER!" <<endl;         system("pause");         return 1;  //Returns a true value (1 with the bool data type).      }   }   return 0; //Else a winner has not been found yet, and return a false (0) value} //End Checking the Winnerint TicTacToe::FullBoard(){   if (TurnCounter == 9)   {      cout << "DRAW" <<endl;      return 1;   }   else   {      return 0;   }} //End Checking for a Full Boardint main(void){   TicTacToe game;   ColourController cls;   cls.setForeground(Green);   cout <<"Welcome! Below is the board to play this game, you must press the number on your keyboard to chose your box!" << endl;       cout    << " 1 | 2 | 3 " << endl;    cout    << "-----------" << endl;    cout    << " 4 | 5 | 6 " << endl;    cout    << "-----------" << endl;    cout    << " 7 | 8 | 9 " << endl;           game.DrawBoard();      do   {      game.PrintTurn();      if (game.PlayerHuman()) //If it is the Human turn, allow the human to move      {         game.HumanMove();      }      else //Else if it is not the Human turn, it is the computer's turn      {         game.ComputerMove();      }            game.DrawBoard();      game.NextTurn();    }    while (!game.Winner() && !game.FullBoard()); //Execute the code in the do loop while there is no winner                                                     //And the game board is not full    return 0;}
sharan93's Avatar, Join Date: Apr 2012
Newbie Member
Sorry As I am new to this din't realise how to post a code here they are :
first one
Code:
#include<iostream>
#include<string>
#include"110ct.h"
using namespace std;

class TicTacToe 
{ 
private: 
	ColourController ct;
    ColourController cls; 
    CursorController crs;
    char Board[3][3]; 
    int play(); 
    void playermove(); 
    int turn(int); 
    int check (int, int); 
    void boardProgress(char x[][3]); 
    int Winner(char x[][3]); 
    int player1, player2, draw, player,winner,done; 
    int row, col; 
 
public: 
    int y, z, t, s; 
    void intBoard(); 
    int Statistics(int); 
 
    char playAgain(char); 
}playBall; 
 
int main() 
{ 
    playBall.y = 0,playBall.z = 0,playBall.t = 0,playBall.s = 0; 
    int Winner = 0; 
	ColourController ct;
    ColourController cls; 
    cls.setForeground(Aqua);
        cout << " welcome to TIC TAC TOE" <<endl; 
 
    char done = false; 
 
    while (!done) 
        { 
        ColourController cls; 
        cls.setForeground(Aqua);
        cout << " Good Luck!"<< endl;
                 
 
        
        playBall.intBoard(); 
 
    
    done = playBall.playAgain(done); 
} 
 

cout << "Thank you for my playing my game"<< endl; 
system ("pause"); 
return 0; 
} 
void TicTacToe::intBoard() 
{ 
    done = false; 
    winner = 0; 
    player = 2; 
    player1 = 1; 
    player2 = 2; 
    draw = 3; 
    int i,j; 
    for (j=0;j<3;j++) 
    { 
        for (i=0;i<3;i++) 
        { 
            Board[j][i]=0; 
        } 
    } 
    play(); 
} 
 
int TicTacToe::play() 
{ 
    int done = false; 
    boardProgress(Board); 
    while(!done) 
    { 
        playermove(); 
        boardProgress(Board); 
        done = Winner(Board); 
    } 
    Statistics(winner); 
    return 0; 
} 
void TicTacToe::playermove() 
{ 
    int answer = false; 
    while (answer == false) 
    { 
        cout <<"Row: "; 
        cin >> row; 
        row--; 
        cout <<"Column: "; 
        cin >> col; 
        col--; 
        answer = check(row,col); 
    } 
    player = turn(player); 
    if (player == 1) 
        Board[row][col] = 'X'; 
    else if (player == 2) 
        Board[row][col] = 'O'; 
    else 
        cout<< "Failed."; 
} 
int TicTacToe::check(int row, int col) 
{ 
    if(Board[row][col] == 0) 
    { 
        return true; 
    } 
    else if (Board[row][col] != 0) 
    { 
        cout <<"You can't go there"<< endl; 
        return false; 
    } 
    else 
    { 
        cout<< "Going through Check"; 
        Winner(Board); 
    } 
    return false; 
} 
 
int TicTacToe::turn(int player) 
{ 
    switch(player) 
    { 
    case 1: player = 2; 
        { 
        cout<<"It's Player 1's turn"<< endl; 
        break; 
        } 
    case 2: player = 1; 
        { 
        cout<<"It's Player 2's turn"<< endl; 
        break; 
        } 
    } 
    return player; 
} 
 
int TicTacToe::Winner(char x[][3]) 
{ 
    winner = 0; 
    int count = 0; 
    int a = row; 
    int b = col; 
    for (a=0;a<3;a++) 
    { 
        for (b=0;b<3;b++) 
        { 
            if (Board[a][b]==0) 
            { 
                count++; 
            } 
        } 
    } 
    if (count > 0) 
    { 
        int row, col, r, c, d, r1, c1, d1; 
        for (row=0; row<3; row++) 
        { 
            r=0; 
            r1=0; 
 
            for (col=0; col<3; col++) 
            { 
			
                if(x[row][col]=='X') 
                    r++; 
                if(x[row][col]=='O') 
                    r1++; 
                if (r1==3) 
                {  
                    winner=2; 
                } 
                if (r==3) 
                {    
                    winner=1; 
                } 
            } 
        } 
        for (col=0; col<3; col++) 
        { 
            r=0; 
            r1=0; 
            for (row=0; row<3; row++) 
            { 
                    if(x[row][col]=='X') 
                    r++; 
                if(x[row][col]=='O') 
                    r1++; 
                if (r1==3) 
                {    
                    winner=2; 
                } 
                if (r==3) 
                { 
                    winner=1; 
                    } 
            } 
        } 
        if (x[0][0]=='X' && x[1][1]=='X' && x[2][2]=='X') 
        { 
            winner=1; 
        } 
        else if (x[0][0]=='O' && x[1][1]=='O' && x[2][2]=='O') 
        { 
            winner=2; 
        } 
        else if (x[2][0]=='X' && x[1][1]=='X' && x[0][2]=='X') 
        { 
            winner=1; 
        } 
        else if (x[2][0]=='O' && x[1][1]=='O' && x[0][2]=='O') 
        { 
            winner=2; 
        } 
    } 
    else if (count == 9) 
    { 
        cout << "Its a draw" << endl; 
        winner = 3; 
    }    
    else 
    { 
        cout<< "next player's turn"<< endl; 
    } 
    if (winner > 0) 
    { 
        done = true; 
    } 
return done; 
} 
 
int TicTacToe::Statistics(int winner)     
{ 
    playBall.y++; 
    switch(winner) 
    { 
    case 1: z++; 
        { 
        break; 
        } 
    case 2: t++; 
        { 
        break; 
        } 
    case 3: s++; 
        { 
        break; 
        } 
    } 
    cout<<" Number of games you have played: " << y; 
    cout<<" Number of games Player 1 has won: " << z << " games.";  
    cout<<" Number of games Player 2 has won: " << t << " games."; 
    cout<<" Number have draws you had: " << s << " draws."; 
    return 0; 
} 
 
char TicTacToe::playAgain(char done) 
{ 
    cout <<"Would you like to play again"<< endl; 
    cout <<"Y/N: " << endl; 
    cin >> done; 
    if(done == 'Y' || done == 'y') 
    { 
         done = false; 
    } 
    else 
    { 
        done = true; 
    } 
    return done; 
} 
void TicTacToe::boardProgress(char x[][3]) 

{
	cls.setForeground(Purple);

    cout << "      |     |     \n"; 
    cout << "   " << x[0][0] << "  |  " << x[0][1] << "  |  " << x[0][2] <<"  \n"; 
    cout << " _____|_____|_____\n"; 
    cout << "      |     |     \n"; 
    cout << "   " << x[1][0] << "  |  " << x[1][1] << "  |  " << x[1][2] <<"  \n"; 
    cout << " _____|_____|_____\n"; 
    cout << "      |     |     \n"; 
    cout << "   " << x[2][0] << "  |  " << x[2][1] << "  | " << x[2][2] <<"  \n"; 
    cout << "      |     |     \n"; 
}
second one
Code:
#include <string>
#include <iostream>
#include"110ct.h"
//Use standard namespace to eliminate typing of std::
using namespace std;

/* !-------- Declare Classes Here --------! */

class TicTacToe
{
   private:
      int Grid[9];
      int Player;
      int TurnCounter;
      int Players;
      int PlayerType[20];
   public:
      TicTacToe();
      void PrintTurn();
      int PlayerHuman();
      void HumanMove();
      void ComputerMove();
      void DrawBoard();
      int  Winner();
      int  FullBoard();
      void NextTurn();
}; //End of the Class Declaration

/* !-------- Develop Methods Here --------! */

TicTacToe::TicTacToe()
{
    srand(time(0)); //Get a Random Number
    Player = 1; //Determines who starts first
    TurnCounter = 0; //Initializes the turn counter
        
//Set up New Players when game begins
    Players = 2;
    PlayerType[1] = 1; //PlayerType[Player] is the Human User(1)
    PlayerType[2] = 0; //PlayerType[Player] is the Computer (0)

    for (int i = 0; i < 9; i++)
    {
       Grid[i] = 0;
    }
}

void TicTacToe::DrawBoard()
{
	ColourController cls;
	cls.setForeground(Red);
   cout << endl
        << Grid[0] << " | " << Grid[1] << " | " << Grid[2]
        << "\n---------\n"
        << Grid[3] << " | " << Grid[4] << " | " << Grid[5]
        << "\n---------\n"
        << Grid[6] << " | " << Grid[7] << " | " << Grid[8]
        << endl;
} //End Drawing the TicTacToe Board

void TicTacToe::PrintTurn()
{
   cout << "\nPlayer " << Player << "'s turn.\n";
} //End Printing Turn

void TicTacToe::NextTurn()
{
   TurnCounter++;

   if (++Player > Players)
   {
      Player = 1;
   }
} //End Next Turn

int TicTacToe::PlayerHuman()
{
   return PlayerType[Player];
} //End Determination of A Human Player

void TicTacToe::HumanMove()
{
	ColourController cls;
	cls.setBackground(Blue);
	cls.setForeground(Aqua);
   cout << " Enter your box number please: ";
   int Move;

   do
   {
      cin >> Move;
      Move--; // For user to enter 1-9 instead of 0-8
   }
   while (Move < 0 || Move > 8 || Grid[Move] != 0);
   Grid[Move] = Player;
} //End the Human Move

void TicTacToe::ComputerMove()
{
   int Move;

   do
   {
      Move  = rand() % 9; //Not really a Smart AI, Just picks a random move
   }
   while (Move < 0 || Move > 8 || Grid[Move] != 0);
   Grid[Move] = Player;
} //End the Computer Move

int TicTacToe::Winner()
{
   int i = 0;
   int Board[8][3] = {
	                
	   {0,1,2},
       {3,4,5},
       {6,7,8},
       {0,3,6},
       {1,4,7},
       {2,5,8},
       {0,4,8},
       {2,4,6}
   }; //List of all possible winning outcomes

   for ( i = 0; i < 8; i++) //Loop for all possible winning outcomes
   {
      if ((Grid[Board[i][0]] == Grid[Board[i][1]]) && (Grid[Board[i][1]] == Grid[Board[i][2]]) && Grid[Board[i][0]] != 0 )
      {
         cout << "Player " << Grid[Board[i][0]]
              <<  " IS THE WINNER!" <<endl;

         system("pause");
         return 1;  //Returns a true value (1 with the bool data type).
      }
   }
   return 0; //Else a winner has not been found yet, and return a false (0) value
} //End Checking the Winner

int TicTacToe::FullBoard()
{
   if (TurnCounter == 9)
   {
      cout << "DRAW" <<endl;
      return 1;
   }
   else
   {
      return 0;
   }
} //End Checking for a Full Board

int main(void)
{

   TicTacToe game;
   ColourController cls;
   cls.setForeground(Green);
   cout <<"Welcome! Below is the board to play this game, you must press the number on your keyboard to chose your box!" << endl;
   
    cout    << " 1 | 2 | 3 " << endl;
    cout    << "-----------" << endl;
    cout    << " 4 | 5 | 6 " << endl;
    cout    << "-----------" << endl;
    cout    << " 7 | 8 | 9 " << endl;
        
   game.DrawBoard();
   
   do
   {
      game.PrintTurn();
      if (game.PlayerHuman()) //If it is the Human turn, allow the human to move
      {
         game.HumanMove();
      }
      else //Else if it is not the Human turn, it is the computer's turn
      {
         game.ComputerMove();
      }
      
      game.DrawBoard();
      game.NextTurn();
    }
    while (!game.Winner() && !game.FullBoard()); //Execute the code in the do loop while there is no winner
                                                     //And the game board is not full
    return 0;
}