Adventure never ends

I need this adventure to end after the player has done enough, but it refuses to stop after the end.

#include <iostream>
#include <string>
#include <cctype>
    using namespace std;
    int checkpoint = 0;
void NorthernClearing();
void SouthernClearing();
void CenterClearing();
void WesternClearing();
void EasternPath();
void Awakening();
void Tent();
void FirePit();

int main(void)
{
    Awakening();
    do
    {
        EasternPath();
        
    }
    while (checkpoint == 7);
}
void Awakening()
    {
        int choice1;
        cout << "Flavor text and options" << endl;
        cin >> choice1;
        if (choice1 == 1)
            NorthernClearing();
        else if (choice1 == 2)
            WesternClearing();
        else if (choice1 == 3)
            SouthernClearing();
        else if (choice1 == 4)
            Tent();
        else if (choice1 == 5)
            FirePit();
        else if (choice1 == 6)
            cout << "flavor text" << endl;
        CenterClearing();
       if (checkpoint == 6)
       {
           EasternPath();
       }
        if (choice1 != 1 && choice1 != 2 && choice1 != 3 && choice1 != 4 && choice1 != 5 && choice1 != 6)
            {
            
                cout << "That isn't an option. Look at the available answers and try again." << endl;
            cin >> choice1;
                if (choice1 == 1)
                    NorthernClearing();
                else if (choice1 == 2)
                    WesternClearing();
                else if (choice1 == 3)
                    SouthernClearing();
                else if (choice1 == 4)
                    Tent();
                else if (choice1 == 5)
                    FirePit();
                else if (choice1 == 6)
                    cout << "flavor text" << endl;
                if (checkpoint == 6)
                {
                    EasternPath();
                }

            }
    }
    
void Tent ()
{
    cout << "flavor text" << endl;
    checkpoint += 1;
    CenterClearing();
}

void CenterClearing()
    {
        
        int choice1;
        if (checkpoint == 6)
            {
                EasternPath();
            }
        else
        {
        cout << "Flavor text and options" << endl;
        cin >> choice1;
        if (choice1 == 1)
            NorthernClearing();
        else if (choice1 == 2)
            WesternClearing();
        else if (choice1 == 3)
            SouthernClearing();
        else if (choice1 == 4)
            Tent();
        else if (choice1 == 5)
            FirePit();
        else if (choice1 == 6)
            cout << "flavor text" << endl;
        CenterClearing();
                
        if (choice1 != 1 && choice1 != 2 && choice1 != 3 && choice1 != 4 && choice1 != 5 && choice1 != 6)
            {
                cout << "That isn't an option. Look at the available answers and try again." << endl;
                cin >> choice1;
                if (choice1 == 1)
                    NorthernClearing();
                else if (choice1 == 2)
                    WesternClearing();
                else if (choice1 == 3)
                    SouthernClearing();
                else if (choice1 == 4)
                    Tent();
                else if (choice1 == 5)
                    FirePit();
                else if (choice1 == 6)
                    cout << "flavor text" << endl;
                CenterClearing();
            }
        }
    }

void NorthernClearing()
{
    int choice1;
    cout << "Flavor text and options" << endl;
    cin >> choice1;
    if (choice1 == 1)
        {
            cout << "flavor text" <<  endl;
            CenterClearing();
        }
    else if (choice1 == 2)
        {
            cout << "Flavor text" << endl;
            checkpoint += 1;
            Awakening();
        }
    else if (choice1 == 3)
        {
            cout << "what sign?" << endl;
            NorthernClearing();
        }
}

void WesternClearing()
{
    int choice1;
    cout << "Flavor text and options" << endl;
    cin >> choice1;
    if (choice1 == 1)
        {
            cout << "flavor text" << endl;
            CenterClearing();
        }
    else if (choice1 == 2)
        {
            cout << "Flavor text" << endl;
            checkpoint +=1;
            Awakening();
        }
}

void SouthernClearing()
{
    int choice1;
    cout << "Flavor text and options" << endl;
    cin >> choice1;
    if (choice1 == 1)
        {
            cout << "flavor text" << endl;
            CenterClearing();
        }
    else if (choice1 == 2)
        {
            cout << "Flavor text" << endl;
            checkpoint +=1;
            Awakening();
        }
    else if (choice1 == 3)
        {
            cout << "flavor text" << endl;
            checkpoint +=1;
            SouthernClearing();
        }
}

void EasternPath()
{
    cout << "end text" << endl;
    
}

void FirePit()
{
    cout << "flavor text" << endl;
    checkpoint += 1;
    CenterClearing();
}



Is there something I'm missing here?
Last edited on
Debug it by putting cout<<checkpoint after the awakening function in the main. You will know what's going on
tried it actually, it'd show the checkpoint number and give the endgame message but would then jump to CenterClearing.
Also, should I use the choice1 check loop for the other choice inputs or a different function?
Topic archived. No new replies allowed.