Hangman
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