Jogo da Forca - Python 3

Publicado por Phillipe Smith (última atualização em 14/11/2013)

[ Hits: 14.163 ]

Homepage: http://phillipelnx.com

Download JogoDaForca.py

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ões atualizadas deste script

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


Esconder código-fonte

#!/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()

Scripts recomendados

Adição de chaves a repositórios

Crivo de Eratóstenes Simples em Python

Afinador de Violão/guitarra em python e gtk.

Unescape de caracteres especiais ISO-8859-1

Gerenciador de senhas


  

Comentários
[1] Comentário enviado por removido em 06/11/2013 - 00:22h

rsrs

Legal!

[2] Comentário enviado por Smithux em 06/11/2013 - 00:25h

Rsrsr... Valeu Izaias.
Só pra frescar mesmo...

Python learning in process....

[3] Comentário enviado por removido em 06/11/2013 - 00:29h

Caraca, Phillipe! Agora que eu vi que o script é seu. rs

Coisas simples nos divertem mais.
Legal mesmo!

[4] Comentário enviado por eli.marques em 12/11/2013 - 17:05h

hehe...Massa, vou baixar.....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts