Beispiel #1
0
 def play_game(self):
     ''' Plays one game of Ghost '''
     print
     print '- Game {0} -'.format(self._games_played + 1)
     fragment = ''
     current, opponent = \
         self._prev_loser, self._prev_winner # loser goes first
     # play turns
     while True: 
         letter = self.get_next_letter(current, fragment)
         # just adding a letter
         if letter != '!':
             fragment += letter
             if lexicon.has_word(fragment, Ghost._MIN_WORD_LENGTH):
                 result = Ghost._FORMED_WORD
                 break
         # a challenge was issued
         else:
             word = self.get_word(opponent, fragment)
             if word[:len(fragment)] == fragment and lexicon.has_word(word):
                 result = self.__class__._LOST_CHALLENGE
             else:
                 result = Ghost._WON_CHALLENGE
             break
         current, opponent = opponent, current
     self.process_result(current, opponent, fragment, result)
     self._games_played += 1
Beispiel #2
0
 def get_next_letter(self, fragment):
     # always challenge if fragment is not a prefix
     if not lexicon.has_prefix(fragment):
         return '!'
     # choose a random next letter
     else:
         next_letter = random.choice(lexicon.valid_continuations(fragment))
         # if that next letter completes a word, challenge instead
         # for now, GhostPlayer does not know about Ghost._MIN_WORD_LENGTH
         if lexicon.has_word(fragment + next_letter):
             return '!'
         # otherwise, just play that letter
         else:
             return next_letter
 def get_next_letter(self, fragment):
     # always challenge if fragment is not a prefix
     if not lexicon.has_prefix(fragment):
         return '!'
     # choose a random next letter
     else:
         next_letter = random.choice(lexicon.valid_continuations(fragment))
         # if that next letter completes a word, challenge instead
         # for now, GhostPlayer does not know about Ghost._MIN_WORD_LENGTH
         if lexicon.has_word(fragment + next_letter): 
             return '!'
         # otherwise, just play that letter
         else:
             return next_letter
Beispiel #4
0
 def get_word(self, fragment):
     # return any word with fragment as a prefix
     while not lexicon.has_word(fragment):
         next_letter = random.choice(lexicon.valid_continuations(fragment))
         fragment += next_letter
     return fragment
 def get_word(self, fragment):
     # return any word with fragment as a prefix
     while not lexicon.has_word(fragment):
         next_letter = random.choice(lexicon.valid_continuations(fragment))
         fragment += next_letter
     return fragment