1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Tic-tac-toe in c++ using classes

Discussion in 'C' started by fattydq, Nov 8, 2010.

  1. fattydq

    fattydq New Member

    Joined:
    Nov 8, 2010
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    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:
    // 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;
    }
     
    
     

Share This Page