Beispiel #1
0
void PlayGame () {

   //////testing phrase generation
   if(mPharseTestOn){
      DictionaryTester::MakePhrases(myDict);
   }

   /////////////end test

   //local variables/objects
   PhraseGame::Guess nextGuess;

   //use dictionary to make phrase
   string phrase;
   int numWords = swansonUtil::GetRandomInRange( MIN_WORDS , MAX_WORDS );
   for ( int i = 0 ; i < numWords ; ++i ) {
      phrase += myDict.GetRandomWord() + " ";
   }
   phrase.erase( phrase.length() - 1 , 1 ); //remove extra space

   //testing line wrap
   //phrase = "this is my big dumb very long long long string to bge guessed lets see how it goes it is much longer than it should be";

   //instance a new game object
   PhraseGame myGame( myDict.GetSet() , phrase , MAX_GUESSES );

   //initialize game state and display welcome screen
   display( MAX_GUESSES , myGame.GetRevealPhrase() , STARTGAME_MESSAGE ,
         myGame.GuessesMade() );
   //help text for debug
   if ( mDebugOn ) DebugDisplay(myGame.GetSecretPhrase());

   do {
      //get a guess from user
      nextGuess = myGame.NextGuess();

      //display results
      display( nextGuess.guesesRemaining , nextGuess.revealedPhrase ,
            nextGuess.message , myGame.GuessesMade() );
      //help text for debug
      if ( mDebugOn ) DebugDisplay(myGame.GetSecretPhrase());

      //keep guessing if not solved, or remaining guesses
   } while ( nextGuess.revealedPhrase != myGame.GetSecretPhrase()
         && nextGuess.guesesRemaining > 0 );

   //output final results
   if ( myGame.GetRevealPhrase() == myGame.GetSecretPhrase() ) {
      display( nextGuess.guesesRemaining , nextGuess.revealedPhrase , WON_GAME ,
            myGame.GuessesMade() );
   } else {
      display( nextGuess.guesesRemaining , nextGuess.revealedPhrase ,
            LOST_GAME , myGame.GuessesMade() );
      EndGameDisplay( phrase , myGame.GuessesMade() );
   }

}