Jogo da Forca - Python 3
Publicado por Phillipe Smith (última atualização em 14/11/2013)
[ Hits: 14.441 ]
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 números para Mega-Sena
Veja a versão das principais distrubuições.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









