Skip to content

Commit 8d2c749

Browse files
author
DSA Data Ops
committed
Update Version 3
1 parent afdd96d commit 8d2c749

15 files changed

+7627
-0
lines changed

Cap06/Lab03/forca_v2.py

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# Hangman Game (Jogo da Forca)
2+
# Programação Orientada a Objetos
3+
4+
# Import
5+
import random
6+
7+
# Board (tabuleiro)
8+
board = ['''
9+
10+
>>>>>>>>>>Hangman<<<<<<<<<<
11+
12+
+---+
13+
| |
14+
|
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+
=========''', '''
59+
60+
+---+
61+
| |
62+
O |
63+
/|\ |
64+
/ \ |
65+
|
66+
=========''']
67+
68+
69+
# Classe
70+
class Hangman:
71+
72+
# Método Construtor
73+
def __init__(self, word):
74+
self.word = word
75+
self.missed_letters = []
76+
self.guessed_letters = []
77+
78+
# Método para adivinhar a letra
79+
def guess(self, letter):
80+
if letter in self.word and letter not in self.guessed_letters:
81+
self.guessed_letters.append(letter)
82+
elif letter not in self.word and letter not in self.missed_letters:
83+
self.missed_letters.append(letter)
84+
else:
85+
return False
86+
return True
87+
88+
# Método para verificar se o jogo terminou
89+
def hangman_over(self):
90+
return self.hangman_won() or (len(self.missed_letters) == 6)
91+
92+
# Método para verificar se o jogador venceu
93+
def hangman_won(self):
94+
if '_' not in self.hide_word():
95+
return True
96+
return False
97+
98+
# Método para não mostrar a letra no board
99+
def hide_word(self):
100+
rtn = ''
101+
for letter in self.word:
102+
if letter not in self.guessed_letters:
103+
rtn += '_'
104+
else:
105+
rtn += letter
106+
return rtn
107+
108+
# Método para checar o status do game e imprimir o board na tela
109+
def print_game_status(self):
110+
print (board[len(self.missed_letters)])
111+
print ('\nPalavra: ' + self.hide_word())
112+
print ('\nLetras erradas: ',)
113+
for letter in self.missed_letters:
114+
print (letter,)
115+
print ()
116+
print ('Letras corretas: ',)
117+
for letter in self.guessed_letters:
118+
print (letter,)
119+
print ()
120+
121+
# Método para ler uma palavra de forma aleatória do banco de palavras
122+
def rand_word():
123+
with open("palavras.txt", "rt") as f:
124+
bank = f.readlines()
125+
return bank[random.randint(0,len(bank))].strip()
126+
127+
# Método Main - Execução do Programa
128+
def main():
129+
130+
# Objeto
131+
game = Hangman(rand_word())
132+
133+
# Enquanto o jogo não tiver terminado, print do status, solicita uma letra e faz a leitura do caracter
134+
while not game.hangman_over():
135+
game.print_game_status()
136+
user_input = input('\nDigite uma letra: ')
137+
game.guess(user_input)
138+
139+
# Verifica o status do jogo
140+
game.print_game_status()
141+
142+
# De acordo com o status, imprime mensagem na tela para o usuário
143+
if game.hangman_won():
144+
print ('\nParabéns! Você venceu!!')
145+
else:
146+
print ('\nGame over! Você perdeu.')
147+
print ('A palavra era ' + game.word)
148+
149+
print ('\nFoi bom jogar com você! Agora vá estudar!\n')
150+
151+
# Executa o programa
152+
if __name__ == "__main__":
153+
main()
154+

Cap06/Lab03/palavras.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
bola
2+
3+
casa
4+
5+
massa

0 commit comments

Comments
 (0)