+ Reply to Thread
Results 1 to 2 of 2

Thread: tic tac toe in C++

  1. #1
    Junior Member
    Join Date
    Jun 2012
    Posts
    2

    tic tac toe in C++

    I am a first year student doing my AI degree, and the first coursework given to me is to write a tic tac toe game! i have no idea where to start
    can anyone help? i need to learn so i am not asking for ready code to submit, if i don't understand it i will be in trouble
    no GUI is needed just console app
    thanks

  2. #2
    Junior Member
    Join Date
    Jun 2012
    Posts
    2
    here you go,
    first declare the squares (3x3) 9 of them

    Code:
    char square[10] = {'o','1','2','3','4','5','6','7','8','9'}; //we need a function to check if someone won, just delcare it for now
    int checkwin();
    //another one to handle the board drawing
    void board();
    
    // Your main, this is a console application as you said you don't want any gui
    
    int main()
    {
        int player = 1,i,choice;
        char mark;
        
        do
        {
            board();
            player=(player%2)?1:2;
            cout << "Player " << player << ", enter a number:  ";
            cin >> choice;
            mark=(player == 1) ? 'T' : 'F';
            if (choice == 1 && square[1] == '1')
                square[1] = mark;
            else if (choice == 2 && square[2] == '2')
                square[2] = mark;
            else if (choice == 3 && square[3] == '3')
                square[3] = mark;
            else if (choice == 4 && square[4] == '4')
                square[4] = mark;
            else if (choice == 5 && square[5] == '5')
                square[5] = mark;
            else if (choice == 6 && square[6] == '6')
                square[6] = mark;
            else if (choice == 7 && square[7] == '7')
                square[7] = mark;
            else if (choice == 8 && square[8] == '8')
                square[8] = mark;
            else if (choice == 9 && square[9] == '9')
                square[9] = mark;
            else
            {
                cout<<"Invalid move ";
                player--;
                getch();
            }
            i=checkwin();
            player++;
        }while(i==-1);
        board();
        if(i==1)
            cout<<"==>\aPlayer "<<--player<<" win ";
        else
            cout<<"==>\aGame draw";
        getch();
        return 0;
    }
    /*checkwin will constantly check if 3 numbers in a row to declare a winner
    will return 1 if game is over with a winner
    -1 game is still in progress
    0 game over but no winner*/
    
    int checkwin()
    {
        if (square[1] == square[2] && square[2] == square[3])
            return 1;
        else if (square[4] == square[5] && square[5] == square[6])
            return 1;
        else if (square[7] == square[8] && square[8] == square[9])
            return 1;
        else if (square[1] == square[4] && square[4] == square[7])
            return 1;
        else if (square[2] == square[5] && square[5] == square[8])
            return 1;
        else if (square[3] == square[6] && square[6] == square[9])
            return 1;
        else if (square[1] == square[5] && square[5] == square[9])
            return 1;
        else if (square[3] == square[5] && square[5] == square[7])
            return 1;
        else if (square[1] != '1' && square[2] != '2' && square[3] != '3' && square[4] != '4' && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square[9] != '9')
            return 0;
        else
            return -1;
    }
    
    
    
    //then this function just to draw the board
    void board()
    {
        
        cout << "\n\n\tTic Tac Toe\n\n";
        cout << "Player 1 (T)  -  Player 2 (F)" << endl << endl;
        cout << endl;
        cout << "     |     |     " << endl;
        cout << "  " << square[1] << "  |  " << square[2] << "  |  " << square[3] << endl;
        cout << "_____|_____|_____" << endl;
        cout << "     |     |     " << endl;
        cout << "  " << square[4] << "  |  " << square[5] << "  |  " << square[6] << endl;
        cout << "_____|_____|_____" << endl;
        cout << "     |     |     " << endl;
        cout << "  " << square[7] << "  |  " << square[8] << "  |  " << square[9] << endl;
        cout << "     |     |     " << endl << endl;
    }
    hope this helps

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts