-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhangman.py
117 lines (103 loc) · 2.51 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
#Exercicio do curso de Analise de dados 3.0 da DataScienceAcademy
import random
desenho = ['''
>>>>>>>>>>Forca<<<<<<<<<<
+---+
| |
|
|
|
|
=========''', '''
+---+
| |
| O
|
|
|
=========''', '''
+---+
| |
| O
| |
|
|
=========''', '''
+---+
| |
| O
| |\
|
|
=========''', '''
+---+
| |
| O
| /|\
|
|
=========''', '''
+---+
| |
| O
| /|\
| \
|
=========''',
'''
+---+
| |
| O
| /|\
| / \
|
=========''']
class Forca: #Por convenção, as classes começam com letra maiuscula
def __init__(self, palavra): #Ferramenta para a construção da classe
self.palavra = palavra
self.letra_errada = [] #Lista vazia que vai guardar as tentativas
self.letras_corretas = []
def tentativa(self, letra):
if letra in self.palavra and letra not in self.letras_corretas: #Verifica se a entrada do usuario existe ou não na palavra
self.letras_corretas.append(letra)
elif letra not in self.palavra and letra not in self.letra_errada:
self.letra_errada.append(letra)
else:
return False
return True
def fim_forca(self):
return self.ganhou() or (len(self.letra_errada) == 6) #verifica se o jogo finalizou
def ganhou(self):
if '*' not in self.esconde_palavra():
return True
return False
def esconde_palavra(self):
saida = ''
for letra in self.palavra:
if letra not in self.letras_corretas:
saida += '*'
else:
saida += letra
return saida
def saida_status(self):
print(desenho[len(self.letra_errada)])
print(f"\nPalavra: {self.esconde_palavra()}")
print(f"\nLetras erradas: {self.letra_errada}")
print(f"\nLetras corretas: {self.letras_corretas}")
def escolhe_palavra():
with open('palavra.txt', 'rt') as palavra:
dados = palavra.readlines()
return dados[random.randint(0, len(dados))].strip()
def main():
jogo = Forca(escolhe_palavra())
while not jogo.fim_forca():
jogo.saida_status()
entrada = input(f"\nDigite uma letra: ")
jogo.tentativa(entrada)
jogo.saida_status()
if jogo.ganhou():
print(f"\nParabéns, você ganhou!")
else:
print(f"\nGame Over :( A palavra era: {jogo.palavra}")
if __name__ == '__main__':
main()