Juego en python: el ahorcado (part 1)
Juego del ahorcado en Python |
En esta entrega vamos a realizar un juego muy conocido, el ahorcado. Como vengo diciendo en los capítulos anteriores, esta entrega pretende ser una traducción al español y a la versión 2.7 del libro: http://inventwithpython.com.
Una ves terminado el juego, publicare su diagrama de flujo con dos fines: el primero, entender mejor la idea del juego y segundo, aprender a realizar diagramas de flujo.
También decir que el juego puede que sufra modificaciones si lo veo conveniente o según sus sugerencias.
Los temas tratados en este juego:
- Métodos
- El método de las listas append()
- Los métodos de las cadenas: lower() y upper()
- El método de la lista reverse()
- El método de cadena split()
- La función range()
- La función list()
- El bucle for in
- Declaración elif
- Los métodos de cadena startswhit() y endswhit()
- El tipo de dato diccionario
- Asignación de variables múltiples, ej: a, b, c = [1, 2, 3]
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
AHORCADO = ['''
+---+
| |
|
|
|
|
=========''', '''
+---+
| |
O |
|
|
|
=========''', '''
+---+
| |
O |
| |
|
|
=========''', '''
+---+
| |
O |
/| |
|
|
=========''', '''
+---+
| |
O |
/| |
|
|
=========''', '''
+---+
| |
O |
/| |
/ |
|
=========''', '''
+---+
| |
O |
/| |
/ |
|
=========''']
palabras = 'sombra animal django oveja aprender ejercicios caballo perro vaca computadora python abeja diente conejo mantel mesa basura escritorio ubuntu gorro parque amuleto cama cuarto descargar curso diario pythondiario vaso cuadro foto revista esdrujula parlantes radio tutorial banana naranja manzana celular casco ventana silla pileta juegos televisor heladera modulos cocina timbre lavarropas estufa enchufe futbol pelota pizarron cargador factura papel impresora telefono remedio planta vegetal aves luna electricidad copa fernet google lenguaje internet esposa jarra microondas manual sarten cortina musica pato'.split()
def buscarPalabraAleat(listaPalabras):
# Esta funcion retorna una palabra aleatoria.
palabraAleatoria = random.randint(0, len(listaPalabras) - 1)
return listaPalabras[palabraAleatoria]
def displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta):
print(AHORCADO[len(letraIncorrecta)])
print ""
fin = " "
print 'Letras incorrectas:', fin
for letra in letraIncorrecta:
print (letra, fin)
print ""
espacio = '_' * len(palabraSecreta)
for i in range(len(palabraSecreta)): # Remplaza los espacios en blanco por la letra bien escrita
if palabraSecreta[i] in letraCorrecta:
espacio = espacio[:i] + palabraSecreta[i] + espacio[i+1:]
for letra in espacio: # Mostrará la palabra secreta con espacios entre letras
print (letra, fin)
print ""
def elijeLetra(algunaLetra):
# Devuelve la letra que el jugador ingreso. Esta función hace que el jugador ingrese una letra y no cualquier otra cosa
while True:
print 'Adivina una letra:'
letra = raw_input()
letra = letra.lower()
if len(letra) != 1:
print 'Introduce una sola letra.'
elif letra in algunaLetra:
print 'Ya has elegido esa letra, elige otra.'
elif letra not in 'abcdefghijklmnopqrstuvwxyz':
print 'Elije una letra.'
else:
return letra
def empezar():
# Esta funcion devuelve True si el jugador quiere volver a jugar, de lo contrario devuelve False
print 'Quieres jugar de nuevo? (Si o No)'
return raw_input().lower().startswith('s')
print 'A H O R C A D O'
letraIncorrecta = ""
letraCorrecta = ""
palabraSecreta = buscarPalabraAleat(palabras)
finJuego = False
while True:
displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta)
# El usuairo elije una letra.
letra = elijeLetra(letraIncorrecta + letraCorrecta)
if letra in palabraSecreta:
letraCorrecta = letraCorrecta + letra
# Se fija si el jugador gano
letrasEncontradas = True
for i in range(len(palabraSecreta)):
if palabraSecreta[i] not in letraCorrecta:
letrasEncontradas = False
break
if letrasEncontradas:
print ('Si! La palabra secreta es "' + palabraSecreta + '"! Has ganado!')
finJuego = True
else:
letraIncorrecta = letraIncorrecta + letra
# Comprueba la cantidad de letras que ha ingresado el jugador y si perdió
if len(letraIncorrecta) == len(AHORCADO) - 1:
displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta)
print ('Se ha quedado sin letras!nDespues de ' + str(len(letraIncorrecta)) + ' letras erroneas y ' + str(len(letraCorrecta)) + ' letras correctas, la palabra era "' + palabraSecreta + '"')
finJuego = True
# Pregunta al jugador si quiere jugar de nuevo
if finJuego:
if empezar():
letraIncorrecta = ""
letraCorrecta = ""
finJuego = False
palabraSecreta = buscarPalabraAleat(palabras)
else:
break
En los próximos capítulos seguiré con el análisis del juego. Los invito a comentar por sugerencias, dudas o lo que se les ocurra...
Segunda parte del juego el ahorcado
-
estaría padre que en futuros juegos explicaras cuál debe ser el resultado al ejecutar el juego para que los lectores y aprendices intenten crearlo por si mismos
-
Muy buena tu propuesta. Lo único que los juegos me parecen medios largos para los que recién se están iniciando y eso puede complicar un poco su desarrollo. Saludos
-
hi 🙂
-
vaya pta mierda de juego
-
-
debería ser uno grafico
-
Dentro de poco empezare a realizar juegos gráficos en python. Saludos
-
sta muy buen pura vida
-
hola!!!.... gracias el tuyo esta muy completo y sin utilizar graficos ... eres muy bueno.... jjajaa mi examen final es programar un juego, el de la ranita que pasaba la calle sin ser atropellada por los autos !!!... estare muy agadecida si me ayudas
-
Este comentario ha sido eliminado por el autor.
-
Recién estoy empezando en Python 2.7, podrías enseñar a crear matrices, triángulos, cuadrados con puros 1,0 usando listas,funciones,decisiones,etc que sea entendible por alguien que recien esta empezando.
-
E we, esa tarea te la dejó Cedano?
-
a cabron no esta mal, quizas te la rifaste al hacer un ahorcado tan perro, muchas gracias , real hasta la muerte brrrrrrrrrrrrrrrrr.
Deja una respuesta
Este comentario ha sido eliminado por el autor.