Saltar a contenido

Trabajo Práctico 1 — Wordle#

Contenidos requeridos#

Para resolver este trabajo práctico, se requiere haber visto en clase los siguientes temas:

  • Tipos de datos simples. Variables.
  • Operadores aritméticos y de comparación. Funciones built-in. f-strings.
  • Estructuras condicionales: if, elif, else.
  • Secuencias: cadenas, tuplas y listas. Indexing y slicing.
  • Ciclos while y for. Sentencias break y continue.
  • Funciones. Scoping. Modularización.
  • Números aleatorios con el módulo random.

Introducción#

Una plataforma de juegos le encarga a usted programar su propia versión del popular juego de palabras Wordle. En este juego, un jugador debe adivinar una palabra secreta en una cantidad limitada de intentos, recibiendo pistas sobre qué tan cerca estuvo cada intento de la palabra correcta.

Reglas del juego#

Al comenzar una partida se elige, al azar, una palabra secreta de longitud fija a partir de una lista de palabras posibles. El jugador dispone de 6 intentos para adivinarla.

En cada intento, el jugador ingresa una palabra:

  • Si la palabra ingresada no tiene la misma cantidad de letras que la palabra secreta, se le informa el error y se le vuelve a pedir un intento, sin descontar el intento fallido.
  • Si la longitud es correcta, se compara letra por letra contra la palabra secreta, y a cada letra del intento se le asigna uno de los siguientes tres estados:

    • 🟩 verde: la letra ingresada coincide con la letra de la palabra secreta en esa misma posición.
    • 🟨 amarillo: la letra ingresada no está en esa posición, pero aparece en algún lugar de la palabra secreta.
    • gris: la letra ingresada no aparece en la palabra secreta.

Simplificación

A diferencia del Wordle original, no es necesario tener en cuenta la cantidad de veces que se repite una letra dentro de la palabra secreta: alcanza con verificar si la letra pertenece o no a la palabra.

El jugador gana la partida si en algún intento todas las letras quedan marcadas en verde. Si se agotan los 6 intentos sin lograrlo, la partida se pierde y se le revela al jugador cuál era la palabra secreta.

Al finalizar cada partida, se le pregunta al jugador si quiere jugar otra. El programa debe permitir jugar tantas partidas consecutivas como el jugador desee (eligiendo, en cada una, una nueva palabra secreta al azar), y al terminar la sesión debe mostrar un resumen con la cantidad de partidas jugadas y la cantidad de partidas ganadas.

Desarrollo#

Se te pide que escribas un programa, utilizando el lenguaje de programación Python, que implemente el juego descrito arriba. Se espera que la salida del programa sea un texto legible, claro y bien formateado.

Para representar la lista de palabras posibles, se puede usar una lista de al menos 10 palabras de 5 letras, en minúscula y sin tildes ni la letra ñ.

Para cada intento, luego de evaluarlo, se debe imprimir en la terminal:

  • Una fila con un cuadrado de color por cada letra del intento, según su estado: 🟩 para verde, 🟨 para amarillo y ⬜ para gris.
  • Una fila con las letras ingresadas, en el mismo orden.
Elecciones aleatorias

Para elegir un índice al azar dentro de un rango se puede usar random.randint(a, b) del módulo random, que devuelve un entero aleatorio entre a y b (ambos incluidos).

import random

palabras = ["tigre", "mango", "suiza"]
indice = random.randint(0, len(palabras) - 1)
print(palabras[indice])

Ejemplos de ejecución del programa

Intento 1/6 - Ingresá una palabra de 5 letras: tigre
🟩🟨⬜⬜🟨
t i g r e 
Intento 2/6 - Ingresá una palabra de 5 letras: tenis
🟩🟩🟩🟩🟩
t e n i s 
¡Ganaste en 2 intento(s)!

¿Querés jugar otra partida? (si/no): no

--- Resumen de la sesión ---
Partidas jugadas: 1
Partidas ganadas: 1
Intento 1/6 - Ingresá una palabra de 5 letras: japon
⬜⬜⬜⬜⬜
j a p o n 
Intento 2/6 - Ingresá una palabra de 5 letras: lobos
⬜⬜⬜⬜⬜
l o b o s 
Intento 3/6 - Ingresá una palabra de 5 letras: nieve
⬜🟩🟨⬜🟩
n i e v e 
Intento 4/6 - Ingresá una palabra de 5 letras: libre
⬜🟩⬜🟩🟩
l i b r e 
Intento 5/6 - Ingresá una palabra de 5 letras: tonto
🟩⬜⬜🟨⬜
t o n t o 
Intento 6/6 - Ingresá una palabra de 5 letras: risas
🟨🟩⬜⬜⬜
r i s a s 
Se acabaron los intentos. La palabra secreta era tigre.

¿Querés jugar otra partida? (si/no): no

--- Resumen de la sesión ---
Partidas jugadas: 1
Partidas ganadas: 0
Intento 1/6 - Ingresá una palabra de 5 letras: sol
La palabra debe tener exactamente 5 letras. No se descuenta el intento.
Intento 1/6 - Ingresá una palabra de 5 letras: nieves
La palabra debe tener exactamente 5 letras. No se descuenta el intento.
Intento 1/6 - Ingresá una palabra de 5 letras: campo
⬜🟨⬜⬜⬜
c a m p o 

Importante

Recordá validar la longitud del intento antes de compararlo con la palabra secreta, y no descontar el intento cuando la longitud es incorrecta.

Entrega#

El trabajo es individual. Se debe entregar el archivo de Python generado a través de la tarea creada en el campus del curso. La fecha de entrega se encuentra en la misma tarea y en el calendario del curso.

El nombre del archivo debe ser:

  • tp1_apellido.py

El código debe estar implementado utilizando únicamente herramientas vistas en clase hasta el momento. No se permite usar librerías además de las mencionadas en el enunciado.

Se recuerda a los estudiantes que las entregas deben ser un producto original de cada estudiante, por lo que se les pide revisar la sección 6 del programa de la materia y el Código de Honor y Ética.