domingo, 2 de agosto de 2015

Juego del ahorcado. Versión 2.

Segunda versión del juego: ahora vamos a obtener las palabras de un fichero de texto.

Abre el fichero y coge la primera palabra, para evitar que se repita siempre, cogeremos cada palabra que ya hayamos utilizado y la colocaremos al final del fichero. Esto vamos a hacerlo a través de un fichero de texto temporal, en el que se colocarán las palabras en el nuevo orden. Después borramos el fichero de texto original y renombramos el nuevo. Este es el aspecto del pequeño fichero que he creado para hacer las pruebas:



Salvo un pequeño cambio en la llamada a la función en Main, sólo se ha tocado la función "Genera_Palabra".

Vamos a ver primero las bibliotecas que se han incluido:

Se ha modificado la llamada a la función "Genera_Palabra", en lugar de devolver ya directamente la palabra, va a devolver una variable del tipo "bool", que nos indicará si ha habido cualquier problema a la hora de abrir los ficheros (por ejemplo si el fichero de palabras no se encuentra en el lugar esperado). Para obtener la palabra que adivinaremos, pasaremos una variable del tipo string como parámetro (se coloca delante el "&" para que se pase la variable por referencia, es decir, los cambios que se realicen dentro de la función, afectarán a la variable de "main" que se le pase de esta forma).


Podemos ver que la llamada ha cambiado y que si el resultado es "false", se muestra un mensaje de error y el programa se detiene.

Vamos ahora a la parte más interesante, la función "Genera_Palabra":




Al trabajar con ficheros hay varias cosas a tener en cuenta, la primera es que es muy común que un fichero no se pueda abrir, ya sea porque no esté donde lo estamos buscando, que otro programa lo esté utilizando y lo tenga bloqueado, etc.... Por eso es importante comprobar primero si se ha abierto correctamente el fichero (función "is_open").
También es muy importante cerrar el fichero cuando terminemos de trabajar con él (función "close").

El resto del código no tiene nada nuevo, aún así, si alguien tiene cualquier duda sobre el código, no dude en comentarlo.

sábado, 1 de agosto de 2015

Juego del ahorcado. Parte IV.

Primeras mejoras sobre la versión original. Esta vez, de nuevo he dejado aparcada la generación de palabras, ya que hay que meterse en la gestión de ficheros y prefiero ir paso a paso.

En general las mejoras han sido en la función Main.







Como podemos ver, el primer cambio y más importante es que hemos modificado la variable "palabraResuelta" de estática a dinámica, es decir, en lugar de tener una constante con el máximo y generar un array fijo con ese valor (independientemente del tamaño de la palabra a resolver), ahora se reserva sólo la memoria necesaria para guardar la palabra que vamos a adivinar. Gracias a eso hemos eliminado unas de las inicializaciones (siempre es bueno inicializar todas las palabras). Debido a este cambio también se ha tenido que modificar la función "Pinta_Tablero" y añadirle como parámetro el valor máximo de la palabra original.

También se ha añadido al "Main" algunos ajustes a la hora de mostrar los datos, pero es simplemente estético.

La función "Pinta_Tablero" quedaría así:




Esta vez no voy a poner capturas de las pantallas porque los cambios son mínimos.

La próxima nos metemos con la generación de palabras más currada.


NOTA IMPORTANTE: Siempre que utilicemos memoria dinámica, es de vital importancia que cuando terminemos de usar esas variables, eliminemos la memoria que se ha reservado con ellas (función "delete").