-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhangman.py
144 lines (127 loc) · 4.07 KB
/
hangman.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import random
HANGMAN = [
" _______",
" | |",
" | O",
" | /|\\",
" | / \\",
"__|__"
]
WORDS = ["apple", "banana", "cherry", "durian", "raspberry", "fig", "grape"]
class Hangman:
def __init__(self, word):
self.word = word
self.guesses = []
self.max_guesses = 6
def display(self):
# Display the current state of the game
revealed_word = ""
for letter in self.word:
if letter in self.guesses:
revealed_word += letter + " "
else:
revealed_word += "_"
print("Word: " + revealed_word)
# print("# of Guesses left: " + str(self.max_guesses))
if self.max_guesses == 6:
print(" _______")
print(" | |")
print(" | ")
print(" | ")
print(" | ")
print("__|__")
elif self.max_guesses == 5:
print(" _______")
print(" | |")
print(" | O")
print(" | ")
print(" | ")
print("__|__")
elif self.max_guesses == 4:
print(" _______")
print(" | |")
print(" | O")
print(" | |")
print(" | ")
print("__|__")
elif self.max_guesses == 3:
print(" _______")
print(" | |")
print(" | O")
print(" | /|")
print(" | ")
print("__|__")
elif self.max_guesses == 2:
print(" _______")
print(" | |")
print(" | O")
print(" | /|\\")
print(" | ")
print("__|__")
elif self.max_guesses == 1:
print(" _______")
print(" | |")
print(" | O")
print(" | /|\\")
print(" | / ")
print("__|__")
else:
print(" _______")
print(" | |")
print(" | O")
print(" | /|\\")
print(" | / \\")
print("__|__")
def update(self, letter):
if letter in self.word:
self.guesses.append(letter)
print("Good guess! '"+ letter +"' is in the word.")
else:
self.max_guesses -= 1
print("Bad guess...'" + letter +"' is not in the word.")
def is_game_over(self):
# Check if the game has ended
if all(letter in self.guesses for letter in self.word):
print(f"Congratulations! You correctly guessed the word {self.word}!")
return True
elif self.max_guesses == 0:
print(f"Sorry, you ran out of guesses. The word was {self.word}.")
return True
else:
return False
def play(self):
player = Player()
print("Welcome to Lauron's Hangman!")
# player.set_name()
while not self.is_game_over():
self.display()
guess = player.guess()
self.update(guess)
print("Game over.")
self.display()
return all(letter in self.guesses for letter in self.word)
def tryAgain(self):
prompt = input('\nWould you like to play again? (Y/N) ')
if (prompt == 'Y'):
return True
elif (prompt == 'N'):
print("Thanks for playing!")
return False
else:
exit
class Player:
def __init__(self):
# self.name = ""
self.score = 0
# def set_name(self):
# self.name = input("Enter your name: ")
def guess(self):
user_input = input('\nPlease type a letter: ')
return user_input
if __name__ == '__main__':
while True:
word = random.choice(WORDS)
hangman = Hangman(word)
won_game = hangman.play()
if not hangman.tryAgain():
break