3 - Práctica 1: ¡juguemos ahorcado!

Lección 3 del curso Python Nivel Intermedio.

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

  1. La palabra a adivinar se debe seleccionar aleatoriamente del listado disponible en el archivo de texto
  2. El jugador tendrá 5 turnos para adivinar la palabra (independientemente de si en cada jugada tiene un acierto o un fallo)
  3. 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
  4. 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:

  1. Función para escoger aleatoriamente la palabra del listado disponible en el archivo de texto. La llamaremos seleccionar_palabra
  2. Función para recibir la entrada de un letra por parte del jugador desde el teclado. La llamaremos entrada_usuario
  3. 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ón actualizar_jugada
  4. Función para actualizar el alfabeto, que toma el string alfabeto y elimina de éste la letra introducida por el usuario. La llamaremos actualizar_alfabeto
  5. Función para imprimir en pantalla la jugada y el alfabeto actualizados. La llamaremos imprimir_actualización
  6. Función para verificar la jugada, que toma la suposicion hecha por el jugador junto con la palabra a adivinar, las compara y retorna un valor True si las dos coinciden.

Con estas pequeñas funciones tendremos los elementos básicos para implementar el juego, que tendrá este pseudo-código:

  1. Seleccionar aleatoriamente la palabra a adivinar e inicializar alfabeto y la jugada
  2. 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 la jugada (antes de que el usuario introduzca una letra)
    • Solicitar al usuario que introduzca una letra
    • Actualizar la jugada y el alfabeto
    • Imprimir el alfabeto y la jugada 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.

Ver todas las lecciones de este curso