-
Notifications
You must be signed in to change notification settings - Fork 2
/
jogo_da_forca.py
153 lines (118 loc) · 4.61 KB
/
jogo_da_forca.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
import random
class jogo_da_forca:
def inicializa_jogo(self):
imprime_bem_vindo()
palavra_secreta = leitura_do_arquivo()
letras_acertadas = ["_" for i in palavra_secreta] #Para a quantidade de letras acrescenta um underline
print(letras_acertadas)
loop_de_jogadas(palavra_secreta, letras_acertadas)
def imprime_bem_vindo(self):
print("*=" * 11)
print("*=*=JOGO DA FORCA=*=*=*")
print("*=" * 11)
def leitura_do_arquivo(self):
arquivo = open("palavras_forca.txt", "r")
palavras = []
for linha in arquivo:
palavras.append(linha.strip()) #Adiciona numa lista as palavras do arquivo e tira os espaços a mais
arquivo.close() #fecha o arquivo
numero = random.randrange(0, len(palavras)) # Sorteia de 0 ao tamanho do arquivo
palavra_secreta = palavras[numero].upper() # Deixa maiuscula a palavra e escolhe uma palavra sorteada do arquivo
return palavra_secreta
def marca_chute_correto(self, letra, letras_acertadas,palavra_secreta):
posicao = 0 # Orienta em qual posição esta cada palavra
for chute in palavra_secreta:
if chute == letra:
letras_acertadas[posicao] = letra # Aloca a letra acertada na posição em que ela se encontra
posicao += 1 # Feito para se ocorrer letras repetidas
def loop_de_jogadas(self, palavra_secreta, letras_acertadas):
enforcou = False
acertou = False
erros = 0
while not enforcou and not acertou:
letra = str(input("Digite a Letra: ")).strip().upper() # Deixa maiusculo e tira os espaços em branco no inicio eno fim
if(letra in palavra_secreta):
marca_chute_correto(letra, letras_acertadas, palavra_secreta)
else:
erros += 1 # Conta os erros do usuario
desenha_forca(erros)
enforcou = erros == 7 # Usa esse por causa do valor logico de resposta, se não estiver contido satisfaz a condição, logo a resposta logica e True
acertou = "_" not in letras_acertadas # Usa esse por causa do valor logico de resposta, se não estiver contido satisfaz a condição, logo a resposta logica e True
print(letras_acertadas) # Letras que foram acertas
if acertou:
ganhou()
else:
perdeu(palavra_secreta)
print("FIM DE JOGO")
def ganhou(self):
print("Parabéns, você ganhou!")
print(" ___________ ")
print(" '._==_==_=_.' ")
print(" .-\\: /-. ")
print(" | (|:. |) | ")
print(" '-|:. |-' ")
print(" \\::. / ")
print(" '::. .' ")
print(" ) ( ")
print(" _.' '._ ")
print(" '-------' ")
def perdeu(self, palavra_secreta):
print("Puxa, você foi enforcado!")
print("A palavra era {}".format(palavra_secreta))
print(" _______________ ")
print(" / \ ")
print(" / \ ")
print("// \/\ ")
print("\| XXXX XXXX | / ")
print(" | XXXX XXXX |/ ")
print(" | XXX XXX | ")
print(" | | ")
print(" \__ XXX __/ ")
print(" |\ XXX /| ")
print(" | | | | ")
print(" | I I I I I I I | ")
print(" | I I I I I I | ")
print(" \_ _/ ")
print(" \_ _/ ")
print(" \_______/ ")
def desenha_forca(self, rros):
print(" _______ ")
print(" |/ | ")
if erros == 1:
print(" | (_) ")
print(" | ")
print(" | ")
print(" | ")
if erros == 2:
print(" | (_) ")
print(" | \ ")
print(" | ")
print(" | ")
if erros == 3:
print(" | (_) ")
print(" | \| ")
print(" | ")
print(" | ")
if erros == 4:
print(" | (_) ")
print(" | \|/ ")
print(" | ")
print(" | ")
if erros == 5:
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | ")
if erros == 6:
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / ")
if erros == 7:
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / \ ")
print(" | ")
print("_|___ ")
print()