Hangman

Tags: terminal, game

Future Publishing: The Python Book 2021, 32

Todo

write description

Todo

Add GUI version

hangman.py
  1#!/usr/bin/env python2
  2
  3from random import *
  4
  5player_score = 0
  6computer_score = 0
  7
  8
  9def hangedman(hangman): # {{{
 10    graphic = [ # {{{
 11            # 0 {{{
 12            """
 13            +-------+
 14            |        
 15            |              
 16            |              
 17            |              
 18            |              
 19         ===============
 20            """,
 21            # }}}
 22            # 1 {{{
 23            """
 24            +-------+
 25            |       |
 26            |              
 27            |              
 28            |              
 29            |              
 30         ===============
 31            """,
 32            # }}}
 33            # 2 {{{
 34            """
 35            +-------+
 36            |       |
 37            |       O      
 38            |              
 39            |              
 40            |              
 41         ===============
 42            """,
 43            # }}}
 44            # 3 {{{
 45            """
 46            +-------+
 47            |       |
 48            |       O      
 49            |       |      
 50            |              
 51            |              
 52         ===============
 53            """,
 54            # }}}
 55            # 4 {{{
 56            """
 57            +-------+
 58            |       |
 59            |       O      
 60            |       |-     
 61            |              
 62            |              
 63         ===============
 64            """,
 65            # }}}
 66            # 5 {{{
 67            """
 68            +-------+
 69            |       |
 70            |       O      
 71            |      -|-     
 72            |              
 73            |              
 74         ===============
 75            """,
 76            # }}}
 77            # 6 {{{
 78            """
 79            +-------+
 80            |       |
 81            |       O      
 82            |      -|-     
 83            |      /       
 84            |              
 85         ===============
 86            """,
 87            # }}}
 88            # 7 {{{
 89            """
 90            +-------+
 91            |       |
 92            |       O      
 93            |      -|-     
 94            |      / \     
 95            |              
 96         ===============
 97            """,
 98            # }}}
 99
100
101            ] # }}}
102    print graphic[hangman]
103# }}}
104def start(): # {{{
105    print "Let's play a game of Hangman"
106    while game():
107        pass
108    scores()
109# }}}
110def game(): # {{{
111    # SETUP {{{
112    dictionary = [ # {{{
113            "gnu",
114            "kernel",
115            "linux",
116            "penguin",
117            "ubuntu",
118            ] # }}}
119    word = choice(dictionary)
120    word_length = len(word)
121    clue = word_length * ["_"]
122    tries = 6
123    letters_tried = ""
124    guesses = 0
125    letters_right = 0
126    letters_wrong = 0
127    global computer_score, player_score
128
129    # }}}
130    # ROUND {{{
131    while (letters_wrong != tries) and ("".join(clue) != word):
132        letter = guess_letter()
133        print 16*"-"
134        print letters_tried
135        print letter
136        print 16*"-"
137        if len(letter)==1 and letter.isalpha():
138            if letters_tried.find(letter) != -1:
139                print "You've already picked", letter
140            else:
141                letters_tried += letter
142                first_index = word.find(letter)
143                if first_index == -1:
144                    letters_wrong += 1
145                    print "Sorry,", letter, "isn't what we're looking"
146                else:
147                    print "Congratulation", letter, "is correct"
148                    for i in range(word_length):
149                        if letter == word[i]:
150                            clue[i] = letter
151        else:
152            print "Choose another."
153
154        # ROUND_RESULTS {{{
155        hangedman(letters_wrong)
156        print " ".join(clue)
157        print "Guesses: ", letters_tried
158
159        if letters_wrong == tries:
160            print "Game Over"
161            print "The word was", word
162            computer_score += 1
163            break
164        if "".join(clue) == word:
165            print "You win"
166            print "The word was", word
167            player_score += 1
168            break
169        # }}}
170    # }}}
171    return play_again()
172# }}}
173def guess_letter(): # {{{
174    print
175    letter = raw_input("Take a guess at our mystery word >>> ")
176    letter.strip()
177    letter.lower()
178    print
179    return letter
180# }}}
181def play_again(): # {{{
182    answer = raw_input("Would you like to play again? y/n >>>  ")
183    if answer in ("y", "Y"):
184        return True
185    else:
186        print "Thank you very much for playing our game. See you next time!"
187# }}}
188def scores(): # {{{
189    global player_score, computer_score
190    print "HIGH SCORES"
191    print "Player: ", player_score
192    print "Computer: ", computer_score
193# }}}
194
195if __name__ == '__main__':
196    start()
197