-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhangman.py
154 lines (127 loc) · 2.78 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
145
146
147
148
149
150
151
152
153
# Hangman Game (Jogo da Forca)
# Programação Orientada a Objetos
# Import
import random
# Board (tabuleiro)
board = ['''
>>>>>>>>>>Hangman<<<<<<<<<<
+---+
| |
|
|
|
|
=========''', '''
+---+
| |
O |
|
|
|
=========''', '''
+---+
| |
O |
| |
|
|
=========''', '''
+---+
| |
O |
/| |
|
|
=========''', '''
+---+
| |
O |
/|\ |
|
|
=========''', '''
+---+
| |
O |
/|\ |
/ |
|
=========''', '''
+---+
| |
O |
/|\ |
/ \ |
|
=========''']
# Classe
class Hangman:
# Método Construtor
def __init__(self, word):
self.word = word
self.missed_letters = []
self.guessed_letters = []
# Método para adivinhar a letra
def guess(self, letter):
if letter in self.word and letter not in self.guessed_letters:
self.guessed_letters.append(letter)
elif letter not in self.word and letter not in self.missed_letters:
self.missed_letters.append(letter)
else:
return False
return True
# Método para verificar se o jogo terminou
def hangman_over(self):
return self.hangman_won() or (len(self.missed_letters) == 6)
# Método para verificar se o jogador venceu
def hangman_won(self):
if '_' not in self.hide_word():
return True
return False
# Método para não mostrar a letra no board
def hide_word(self):
rtn = ''
for letter in self.word:
if letter not in self.guessed_letters:
rtn += '_'
else:
rtn += letter
return rtn
# Método para checar o status do game e imprimir o board na tela
def print_game_status(self):
print (board[len(self.missed_letters)])
print ('\nPalavra: ' + self.hide_word())
print ('\nLetras erradas: ',)
for letter in self.missed_letters:
print (letter,)
print ()
print ('Letras corretas: ',)
for letter in self.guessed_letters:
print (letter,)
print ()
# Método para ler uma palavra de forma aleatória do banco de palavras
def rand_word():
with open("word bank.txt", "rt") as f:
bank = f.readlines()
return bank[random.randint(0,len(bank)-1)].strip()
# Método Main - Execução do Programa
def main():
# Objeto
game = Hangman(rand_word())
# Enquanto o jogo não tiver terminado, print do status, solicita uma letra e faz a leitura do caracter
while not game.hangman_over():
game.print_game_status()
user_input = input('\nDigite uma letra: ')
game.guess(user_input)
# Verifica o status do jogo
game.print_game_status()
# De acordo com o status, imprime mensagem na tela para o usuário
if game.hangman_won():
print ('\nParabéns! Você venceu!!')
else:
print ('\nGame over! Você perdeu.')
print ('A palavra era ' + game.word)
print ('\nFoi bom jogar com você! Agora vá estudar!\n')
# Executa o programa
if __name__ == "__main__":
main()