Vous êtes sur la page 1sur 6

# -*- coding: utf-8 -*-

###########################

# Ahorcado

# Versi?n: 0.3

# Autor: Amorhin

# Email: amorhin_r@hotmail.com

###########################

# Importaci?n de bibliotecas.

import random

import string

import pickle

# FUNCIONES.

# -------------------------------------------------------------------

# crea una lista con la longitud de la palabra

def ocultar(cadena):

ocultada = []

for i in cadena:

ocultada += "_"

return ocultada

# Convierte la cadena en una lista.


def listar(cadena):

listada = []

for letra in cadena:

listada += letra

return listada

# Devuelve -1 si no encuentra un caracter en una lista.

def buscar(lista, caracter):

for i in lista:

if i == caracter:

return 1

return -1

# sustituye la letra dada en la palabra oculta si existe en palabra.

def sustituir(palabra, oculta, letra):

n=0

while n < len(palabra):

if palabra[n] == letra:

oculta[n] = letra

n += 1

# Quita el ?ltimo caracter de una lista de palabras.

def quitarultimo(lista):

n=0

lista2 = range(len(lista))

while n < len(lista):


palabra = lista[n]

lista2[n] = palabra[:-1]

n += 1

return lista2

# Convierte una letra en minusculas.

def convminusculas(letra):

mayusculas = "ABCDEFGHIJKLMN?OPQRSTUVWXYZ"

minusculas = "abcdefghijklmn?opqrstuvwxyz"

n=0

while n < len(mayusculas):

if mayusculas[n] == letra:

letra = minusculas[n]

n += 1

return letra

# -------------------------------------------------------------------

# Mu?eco en ASCII.

muneco = ["\n"*6 + " -----",\

" |\n"*6 + " -----",\

" ______\n" + " |\n"*6 + " -----",\

" ______\n" + " | |\n" + " |\n"*5 \

+" -----",\

" ______\n" + " | |\n" + " O |\n" \

+" |\n"*4 + " -----",\


" ______\n" + " | |\n" + " O |\n" \

+ " =[:]= |\n" + " |\n"*3 + " -----",\

" ______\n" + " | |\n" + " O |\n" \

+ " =[:]= |\n" + " / \ |\n" + " |\n"*2 \

+" -----"]

# Lista de Palabras de archivos.

f = open("palabras.txt", "r")

lista1 = f.readlines()

lista = quitarultimo(lista1)

# Asignaci?n de palabra aleatoria y ocultar

palabra = lista[random.randint(0, len(lista)-1)]

listada = listar(palabra)

oculta = ocultar(palabra)

# Asignaci?n de vidas.

vidas = 7

nivel = 0

# Presentaci?n.

print "-"*20

print "?EL AHORCADO!"

print "-"*20

print "Tienes 7 vidas para adivinar la palabra\n"


# Bucle del juego.

while vidas > 0:

print "\nTe quedan", vidas, "vidas"

print muneco[nivel]

print oculta

letra = raw_input("Escribe una letra: ")

letra = convminusculas(letra)

if string.find(palabra, letra) == -1:

vidas -= 1

nivel += 1

else:

sustituir(listada, oculta, letra)

if buscar(oculta, "_") == -1:

print oculta

break

# Fin del juego.

if vidas > 0:

print "\nS?, has ganado, la palabra era", palabra, "\n"

resultado = 1

else:

print "\nLo siento, perdiste, la palabra era", palabra, "\n"

resultado = 0

# Estad?sticas.

try:
archivo = open("ahorcado.dat", "r")

jugadas = pickle.load(archivo)

ganadas = pickle.load(archivo)

perdidas = pickle.load(archivo)

archivo.close()

except:

archivo = open("ahorcado.dat", "w")

jugadas = 0

ganadas = 0

perdidas = 0

archivo.close()

jugadas += 1

if resultado == 1:

ganadas += 1

else:

perdidas += 1

archivo = open("ahorcado.dat", "w")

pickle.dump(jugadas, archivo)

pickle.dump(ganadas, archivo)

pickle.dump(perdidas, archivo)

archivo.close()

print "Partidas jugadas:", jugadas

print "Ganadas:", ganadas

print "Perdidas:", perdidas