1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

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