· 9 years ago · Sep 18, 2016, 04:06 PM
1import random
2HANGMANPICS = ["""
3
4 +---+
5 | |
6 |
7 |
8 |
9 |
10=========""", """
11
12 +---+
13 | |
14 O |
15 |
16 |
17 |
18=========""", """
19
20 +---+
21 | |
22 O |
23 | |
24 |
25 |
26=========""", """
27
28 +---+
29 | |
30 O |
31 /| |
32 |
33 |
34=========""", """
35
36 +---+
37 | |
38 O |
39 /|\ |
40 |
41 |
42=========""", """
43
44 +---+
45 | |
46 [O |
47 /|\ |
48 / |
49 |
50=========""", """
51
52 +---+
53 | |
54 [O] |
55 /|\ |
56 / \ |
57 |
58========="""]
59words = {"Colors": "red orange yellow green blue indigo violet white black brown".split(),
60"Shapes": "square triangle rectangle circle ellipse rhombus trapezoid chevron pentagon hexagon septagon octagon".split(),
61"Fruits": "apple orange lemon lime pear watermelon grape grapefruit cherry banana cantaloupe mango strawberry tomato".split(),
62"Animals": "ant baboon badger bat bear beaver camel cat clam cobra cougar coyote crow deer dog donkey duck eagle ferret fox frog goat goose hawk lion lizard llama mole monkey moose mouse mule newt otter owl panda parrot pigeon python rabbit ram rat raven rhino salmon seal shark sheep skunk sloth snake spider stork swan tiger toad trout turkey turtle weasel whale wolf wombat zebra".split()}
63
64def getRandomWord(wordDict):
65 wordKey = random.choice(list(wordDict.keys()))
66 wordIndex = random.randint(0, len(wordDict[wordKey]) -1)
67 return [wordDict[wordKey], wordKey]
68
69def displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord):
70 print(HANGMANPICS[len(missedLetters)])
71 print
72
73 print("Missed letters:"),
74 for letter in missedLetters:
75 print(letter),
76 print
77
78 blanks = "_" * len(secretWord)
79
80 for i in range(len(secretWord)):
81 if secretWord[i] in correctLetters:
82 blanks = blanks[:i] + secretWord[i] + blanks[i+1:]
83
84 for letter in blanks:
85 print(letter),
86 print
87
88def getGuess(alreadyGuessed):
89 while True:
90 print("Guess a letter.")
91 guess = raw_input()
92 guess = guess.lower()
93
94 if len(guess) != 1:
95 print("Please enter a single letter.")
96 elif guess in alreadyGuessed:
97 print("You have already guessed that letter. Choose again.")
98 elif guess not in "abcdefghijklmnopqrstuvwxyz":
99 print("Please enter a LETTER.")
100 else:
101 return guess
102
103def playAgain():
104 print("Do you want to play again? (yes or no)")
105 return raw_input().lower().startswith("y")
106
107print("H A NG M A N")
108missedLetters = " "
109correctLetters = " "
110secretWord, secretKey = getRandomWord(words)
111gameIsDone = False
112
113while True:
114 print("The secret word is in the set: " + secretKey)
115 displayBoard(HANGMANPICS,missedLetters,correctLetters,secretWord)
116 guess = getGuess(missedLetters+correctLetters)
117
118 if guess in secretWord:
119 correctLetters = correctLetters + guess
120 foundAllLetters = True
121
122 for i in range(len(secretWord)):
123 if secretWord[i] not in correctLetters:
124 foundAllLetters = False
125 break
126
127 if foundAllLetters:
128 print("Yes! Secret word is '" + secretWord + "'! You have won")
129 gameIsDone = True
130 else:
131 missedLetters = missedLetters + guess
132
133 if len(missedLetters) == len(HANGMANPICS) -1:
134 displayBoard(HANGMANPICS,missedLetters,correctLetters,secretWord)
135 print("You have run out of guesses! After " + str(len(missedLetters)) + " missed guesses and " + str(len(correctLetters)) + " correct guesses, the word was '" + secretWord + "'")
136 gameIsDone = True
137
138 if gameIsDone:
139 if playAgain():
140 missedLetters = " "
141 correctLetters = " "
142 gameIsDone = False
143 secretWord, secretKey = getRandomWord(words)
144 else:
145 break