Documentos de Académico
Documentos de Profesional
Documentos de Cultura
*****
.....
Programación – Informática I
Grupo 15
Antonio Medarde Payeras
2. Introducción
La práctica del curso 2022-23 de la asignatura programación consiste en realizar un
“WORDLE”.
El juego WORDLE tiene como objetivo descubrir una palabra oculta en 6 intentos de
entre 1 y 23 letras. Para descubrir la palabra oculta se irán introduciendo palabras y
después el juego mostrará un resultado en función de la palabra introducida. Este
resultado será útil para ir descubriendo las letras que tiene la palabra y así descubrir cuál
es.
----------------------------------------------------------------------------------------------------------
En la posición 4:
Letra a: 2 palabras
Letra b: 0 palabras
…
En la posición 5:
Letra a: 10 palabras
Letra b: 3 palabras
3. Diseño
Para realizar esta práctica he hecho un programa de un total de 358 líneas. Ahora
procederé a explicar cómo he realizado el WORDLE. Iré explicando desde el principio
del main y si hay algún subprograma saltaré a este para explicarlo.
Lo primero que hago en el programa es preguntarle al usuario con cuantas letras quiere
jugar al WORDLE y declaro en una variable TAM_PALABRA el tamaño de esta. Acto
seguido lo que hago es abrir el diccionario que contiene las palabras con tamaño de 1 a
23 letras. Después de abrir el archivo, si todo sale correctamente, se irá avanzando línea
a línea del documento de texto (en cada línea hay una palabra) y si la palabra de la línea
tiene un tamaño igual al de TAM_PALABRA, la palabra se guardará en un vector de
strings mediante el método push_back().
Cuando se llega al final del documento, el vector será el diccionario con el que se
comprobará si las palabras introducidas existen. Después de completar el diccionario, se
obtendrá una palabra aleatoria y será la palabra oculta, así cada vez que se juegue nadie
sabrá qué palabra es la oculta. Para obtener la palabra oculta ha sido necesaria la librería
“random”. Con esta, hacemos que saque un numero aleatorio entre 0 y el tamaño del
vector después declaramos un string con la posición del numero aleatorio del vector,
que será una palabra.
Después de esto empieza un bucle for muy extenso donde se iran evaluando las
palabras. Este bucle se inicializa con la variable intento = 6 y en el avance se le quita
uno; si intento llega a 0 entonces el usuario pierde y mostraría la palabra oculta y el
programa acabaría.
Lo primero que se hace en el bucle es pedir al usuario que introduzca por teclado la
palabra del intento y esta se evaluará. Si es @salir, el programa acaba; si es @rendición
se muestra la palabra oculta y acaba el programa, si la palabra es igual a la palabra
oculta, se muestra un mensaje de enhorabuena y acaba el programa; si la palabra es
@ayuda, se da una explicación breve del juego y sus ayudas y si la palabra es
@acertadas se mostrara el resultado de todas las letras acertadas.
Si la palabra es @pista, el programa deberá seguir un for donde para cada posición de la
palabra, si en @acertadas es ‘*’ , se meterá en el subprograma pista. Allí, primeramente
se declara un vector donde se guardaran todas la palabras que tienen las letras ya
acertadas por el usuario y gracias a la librería “map”, se podrá evaluar fácilmente para
cada letra cuantas posible palabras hay. El subprograma deberá mostrar por pantalla
cuantas palabras posibles hay con cada letra, aunque sea 0. Para que muestre 0 primero,
he tenido que inicializar cada letra a 0 para que después con iteradores muestre todo el
contenido del map.
Tras mostrar por pantalla el resultado, se mirarán las letras acertadas. Esto se hace ahora
para que se actualicen las letras acertadas después de introducir cada palabra.
Al final del programa cerraremos el fichero de las palabras para liberar la memoria.
4. Juegos de prueba
Funcionamiento de @acertadas:
Funcionamiento de @pista, con @acertadas de **nta:
Funcionamiento de algunas ayudas:
Lo más tedioso de esta practica no ha sido tener la idea de cómo hacerla, sino comó
trasladar la idea a lenguaje de programación. En mi opinión lo más difícil ha sido la
pista, ya que no entendía cómo se debía usar la clase “map”.