Hangman

Log | Files | Refs | README

hangman.py (2117B)


      1 """
      2 Simple hangman game
      3 Author: William Lindholm
      4 """
      5 
      6 from eng_dict import *
      7 
      8 DICTIONARY_PATH = "dictionary.txt" #path to dictionary
      9 
     10 def main():
     11     dict = eng_dictionary(DICTIONARY_PATH)
     12     rand_word = dict.getRandomWord()
     13     rand_word = string_to_list(rand_word)
     14     greeting()
     15     #enter gameloop
     16     gameloop(rand_word)
     17 
     18 
     19 def gameloop(rand_word):
     20     guessed_letters = set()
     21     running = True
     22     tries_left = 8
     23     while running and tries_left > 0:
     24         print("You have: ", tries_left, " more guesses")
     25 
     26 
     27         guessed_letter = input("letter: ")
     28         if guessed_letter in rand_word:
     29             print(guessed_letter, " Is correct")
     30             guessed_letters.add(guessed_letter[0])
     31         elif guessed_letter in guessed_letters:
     32            print("You have already guessed: ", guessed_letter)
     33            guessed_letters.add(guessed_letter[0])
     34         else:
     35             tries_left -= 1
     36             guessed_letters.add(guessed_letter[0])
     37 
     38         printProgress(guessed_letters, rand_word)
     39 
     40         #win condition
     41         if has_won(guessed_letters, rand_word):
     42             print("Congratulations, you have won")
     43             return
     44 
     45     print("You lost\nThe correct word was: ")
     46     printStream = ""
     47     for letter in rand_word:
     48         printStream += letter
     49 
     50     print(printStream)
     51 
     52 
     53 
     54 
     55 def greeting():
     56     print("Computer has now generated a random word.\nStart guessing by typing a letter and then pressing enter.\n")
     57 
     58 def printProgress(guessed_letters, rand_word):
     59     printStream = ""
     60     for i in range(len(rand_word)):
     61         printStream += " "
     62         if rand_word[i] not in guessed_letters:
     63             printStream += "_"
     64         else:
     65             printStream += rand_word[i]
     66     
     67     print(printStream)
     68 
     69 
     70 def has_won(guessed_letters, rand_word):
     71     for letter in rand_word:
     72         if letter not in guessed_letters:
     73             return False
     74     return True
     75 
     76 
     77 def string_to_list(string):
     78     string_list = []
     79     string_list[:0] = string.rstrip()
     80     return string_list
     81 
     82 
     83 if __name__ == "__main__":
     84     main()