So I'm currently reading Beginning C++ Through Game programming by Michael Dawson. I'm enjoying it quite a bit. However I have a question on his version of hangman. I'll provide the code but would someone be able to tell me why it is not randomly picking a different word each time? When I compile, the word is "guess" every time. Is that because THE_WORD = words[0] ?? If so, why would he do this if it is suppose to be a random word every time. Sorry if this is an obvious question and I'm not quite seeing it. Thank you!
 #include <iostream>
 #include <string>
 #include <algorithm>
 #include <ctime>
 #include <vector>
 #include <cctype>
 using namespace std;
 int main()
 {
   const int MAX_WRONG = 8;//max number of incorrect guesses allowed
   vector<string> words;
   words.push_back("GUESS");
   words.push_back("HANGMAN");
   words.push_back("DIFFICULT");
   srand(static_cast<unsigned int>(time(0)));
   random_shuffle(words.begin(),words.end());
   const string THE_WORD = words[0];           //word to guess
   int wrong = 0;                              //number of incorrect guesses
   string soFar(THE_WORD.size(), '-');         //word guessed so far
   string used;                           //letters already guessed
   cout<<"Welcome to Hangman! Good luck!\n";
   while ((wrong < MAX_WRONG) && (soFar != THE_WORD))
   {
    cout<<"\n\nYou have "<<(MAX_WRONG - wrong);
    cout<<" incorrect guesses left.\n";
    cout<<"\nYou've used the following letters:\n"<< used <<endl;
    cout<<"\nSo far, the word is:\n"<<soFar<<endl;
    char guess;
    cout<<"\n\nEnter your guess: ";
    cin>>guess;
    guess = toupper(guess); //make user can enter lower or uppercase
    while (used.find(guess) !=string::npos)
    {
        cout<<"\nYou've already guessed "<<guess<<endl;
        cout<<"Enter your guess: ";
        cin>>guess;
        guess = toupper(guess);
    }
    used += guess;
    if (THE_WORD.find(guess) != string::npos)
    {
        cout<<"That's right!"<<guess<<" is in the word.\n";
        //update soFar to include newly guessed letter
        for (unsigned int i = 0; i < THE_WORD.length(); i++)
        {
            if (THE_WORD[i] == guess)
            {
                soFar[i] = guess;
            }
        }
    }
    else
    {
        cout<<"Sorry, "<<guess<<" isn't in the word.\n";
        ++wrong;
    }
   }
   if (wrong == MAX_WRONG) {
       cout<<"\nYou've been hanged!";
   }
   else
   {
       cout<<"\nYou guessed it!";
   }
   cout<<"\nThe word was "<<THE_WORD<<endl;
   return 0;
}
 
     
    