Jogo da Forca - Python 3
Publicado por Phillipe Smith (última atualização em 14/11/2013)
[ Hits: 14.464 ]
Homepage: http://phillipelnx.com
Download 1384287248.JogoDaForca.py (versão 2)
Simples jogo da forca feito em Python 3.
Necessário internet para executá-lo pois o as palavras a serem adivinhadas são obtidas através do endereço:
http://www.ime.usp.br/~pf/algoritmos/dicios/br
Versão 2 - Enviado por Phillipe Smith em 12/11/2013
Changelog: - Melhor apresentação;
- Adicionada contagem de acertos e erros;
- Adicionada opção para sair do jogo.
Download 1384287248.JogoDaForca.py
#!/usr/bin/python3 -tt
# -*- encoding: utf-8 -*-
#
# Author: Phillipe Smith <phillipelnx@gmail.com>
# Description: Simple Python Hangman
#
import os, sys
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
from random import randint
class Hangman:
picture = '''
+-------+
| |
| O
| /|\
| / \
|
===================
'''
doll = [
82, # Right leg
80, # Left leg
65, # Right Arm
63, # Left Arm
64, # Body
50, # Head
]
def __init__(self):
try:
self.wordlist = urlopen('http://www.ime.usp.br/~pf/algoritmos/dicios/br')
except HTTPError as e:
sys.exit('\nO servidor não conseguiu atender a solicitação.\nCódigo do Erro: %d' % e.code)
except URLError as e:
sys.exit('\nFalha ao contactar o servidor.\nCausa: %s' % e.reason)
else:
self.wordlist = self.wordlist.read().decode('iso-8859-1').split()
def play(self):
self.correct = ''
self.wrong = ''
self.sorted_word = self.wordlist[randint(0, len(self.wordlist))]
self.word = ['_'] * (len(self.sorted_word))
while len(self.wrong) <= len(self.doll):
os.system('cls') if sys.platform.find('win') > -1 else os.system('clear')
self.draw()
def kick(self, chars):
kick = input('Chute uma letra: ')
if kick.isalpha() and len(kick) == 1 and kick not in chars:
if kick in self.sorted_word:
self.correct += kick
for i in range(len(self.sorted_word)):
if kick == self.sorted_word[i]:
self.word[i] = kick
else:
self.wrong += kick
return kick
def draw(self):
draw_picture = self.picture
n_wrong = len(self.wrong)
kicks = self.correct + self.wrong
if n_wrong <= len(self.doll):
for i in range(n_wrong):
draw_picture = draw_picture[:self.doll[i]] + ' ' + draw_picture[self.doll[i]+1:]
print(' JOGO DA FORCA\n====================\n%s' % draw_picture)
print('Chutes: %s\nPalavra: %s\n' % (' '.join(kicks), ' '.join(self.word)))
if ''.join(self.word) == self.sorted_word:
print('Você acertou! Parabéns!\n')
self.play() if self.again() else sys.exit()
else:
if n_wrong != len(self.doll):
self.kick(kicks)
else:
print('Você Perdeu... A palavra era: %s\n' % self.sorted_word)
self.play() if self.again() else sys.exit()
def again(self):
play_again = input('Deseja jogar novamente [s ou n]: ')
if play_again and play_again[0].lower() == 's':
print('Aguarde enquanto o jogo é carregado...\n')
return True
else:
print('Obrigado por jogar!\n')
return False
if __name__ == '__main__':
game = Hangman()
game.play()
Gerador de PIS/PASEP em Python
Crivo de Eratóstenes Simples em Python
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Pergunta: Meu teclado não está respondendo direito como e consertar? (1)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)
Secure boot, artigo interessante, nada técnico. (5)









