3 - Práctica 1: ¡juguemos ahorcado!
Lección 3 del curso Python Nivel Intermedio.
Tabla de contenido
Introducción
En la lección anterior realizamos un tour práctico por la Librería Estándar de Python y en ese caso nos enfocamos en los módulos generalmente más usados.
En esta primera práctica seguiremos usando esta librería, y en particular haremos uso del módulo random
y de funciones para la lectura de archivos para implementar nuestra propia versión del tradicional juego del ahorcado.
Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
El juego del ahorcado
Recordemos que el juego del “ahorcado” (que en algunos lugares se conoce como el “colgado”) se juega con dos personas: una piensa una palabra (llamemos a esta persona “jugador 1”) y la otra debe adivinarla (llamemos a esta persona “jugador 2”).
Y para adivinarla en cada turno “jugador 2” debe sugerir una letra. Si la letra está en la palabra a adivinar, tendrá un acierto y “jugador 1” debe comenzar a completar la palabra. Si la letra no está en la palabra, este error hace que se comience a dibujar una parte de un personaje que, si las cosas no resultan bien, al final terminará colgado de una soga y ahorcado, y allí terminará el juego.
En esta práctica implementaremos una versión similar a este juego del ahorcado, con algunas ligeras variaciones como veremos a continuación.
Nuestra implementación del ahorcado
En nuestro juego las posibles palabras a adivinar provendrán de un listado que previamente estará almacenado en un archivo de texto (formato .txt) y que contendrá palabras correspondientes a frutas y verduras.
Además, en lugar de tener aciertos o fallos, y para simplificar la implementación, implementaremos nuestro juego con un número fijo de turnos: un total de 5.
Teniendo esto en cuenta, veamos cuáles son los requerimientos de nuestro juego.
Requerimientos del juego
- La palabra a adivinar se debe seleccionar aleatoriamente del listado disponible en el archivo de texto
- El jugador tendrá 5 turnos para adivinar la palabra (independientemente de si en cada jugada tiene un acierto o un fallo)
- En cada turno:
- Se debe mostrar al usuario la actualización de la palabra que está intentando adivinar y el alfabeto actualizado (es decir las letras que se encuentran disponibles)
- Se debe preguntar al usuario si desea adivinar la palabra, y de ser así realizar la verificación correspondiente
- El juego termina cuando:
- Se completan los 5 turnos y el jugador no acierta
- El jugador decide adivinar la palabra y acierta
Pseudocódigo
Teniendo definidos los requerimientos, escribamos nuestro pseudo-código. En este caso se sugiere dividir las diferentes tareas en pequeñas funciones, que facilitarán posteriormente la implementación del juego completo.
Estas serán las funciones auxiliares:
- Función para escoger aleatoriamente la palabra del listado disponible en el archivo de texto. La llamaremos
seleccionar_palabra
- Función para recibir la entrada de un letra por parte del jugador desde el teclado. La llamaremos
entrada_usuario
- Función para actualizar la jugada: el usuario introduce una letra, la función busca las posibles coincidencias con la palabra a adivinar y actualiza la variable
jugada
(que contendrá la palabra que el usuario está completando y que intenta adivinar). Llamaremos a esta funciónactualizar_jugada
- Función para actualizar el alfabeto, que toma el string
alfabeto
y elimina de éste la letra introducida por el usuario. La llamaremosactualizar_alfabeto
- Función para imprimir en pantalla la
jugada
y elalfabeto
actualizados. La llamaremosimprimir_actualización
- Función para verificar la jugada, que toma la
suposicion
hecha por el jugador junto con lapalabra
a adivinar, las compara y retorna un valorTrue
si las dos coinciden.
Con estas pequeñas funciones tendremos los elementos básicos para implementar el juego, que tendrá este pseudo-código:
- Seleccionar aleatoriamente la
palabra
a adivinar e inicializaralfabeto
y lajugada
- Realizar 5 iteraciones (usando la [sentencia for]), y en cada iteración:
- Imprimir el turno actual (1, 2, 3, 4 o 5)
- Imprimir el
alfabeto
y lajugada
(antes de que el usuario introduzca una letra) - Solicitar al usuario que introduzca una letra
- Actualizar la
jugada
y elalfabeto
- Imprimir el
alfabeto
y lajugada
actualizados - Preguntar al usuario si desea adivinar la palabra. De ser así verificar si coincide o no con la palabra oculta. Si coincide terminar el juego, de lo contrario continuar
- Y terminar el juego si se completan los 5 turnos
¡Perfecto! ya tenemos el pseudo-código de nuestro juego, así que podemos comenzar con la implementación.
Implementación
Comenzaremos implementando cada una de las funciones mencionadas en la sección anterior, y luego implementaremos el juego. Veamos esto paso a paso:
Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Muy bien, ya hemos logrado implementar nuestra propia versión del juego del “ahorcado” usando algunas funciones y el módulo random
de la librería estándar de Python.
Con esto ya estamos listos para dar inicio a la siguiente sección del curso, en donde hablaremos de dos tipos de datos muy útiles: las listas y las tuplas.
Entonces en la próxima lección veremos en detalle qué son, cuáles son las características y cómo crear listas y tuplas en Python.