Imprimir
Categoría: Prácticas de C / C++
Visitas: 8822

Para la implementación de este programa se han usado diversas estructuras dinámica de almacenamiento. En concreto, una lista lineal simplemente enlazada, y una cola, ambas implementadas mediante plantillas. Así como un árbol binario de turistas, y un grafo formado por un vector y una matriz de tamaño fijo.

El juego se basa en una serie de visitas turísticas que puede realizar el jugador en la ciudad de Mérida. La partida comienza mostrando un gráfico en el que se muestran los distintos monumentos que se pueden visitar, así como las calles que unen los monumentos, en el caso de que existan calles entre ellos. El turista comenzará su visita siempre desde la oficina de turismo de la ciudad, y deberá elegir mediante el uso del ratón cual de los monumentos desea visitar ...

En el caso de que no exista una calle que una el lugar donde se encuentra con el monumento deseado, se mostrará un mensaje de advertencia por pantalla y se retornará al gráfico para que el usuario elija otro monumento para visitar. En todo momento se mostrará en la parte superior de la pantalla el monumento en el que se encuentra el turista actualmente.

Una vez seleccionada la ruta para llegar al monumento deseado, se cargarán la calle y el vehículo, y el visitante deberá completar el camino sorteando multitud de obstáculos, y recogiendo el mayor número de bonificaciones posibles. Durante el trayecto deberán esquivarse baches (representados por cuadrados) y accidentes (representados por rectángulos), y recogerse estatuas (representadas por circunferencias) y vasijas (representadas por elipses si cerrar), para mover el coche el jugador deberá usar las flechas de dirección del teclado.

Se ha usado una lista lineal simplemente enlazada, y una cola, ambas implementadas mediante plantillas. Así como un árbol binario de turistas, y un grafo formado por un vector y una matriz de tamaño fijo.

En primer lugar abordaremos el uso de la lista, la cual hemos utilizado para almacenar datos cuya cantidad era variable, es decir que almacenaremos una cantidad distinta de elementos cada vez que la usemos, por lo que no es óptimo el uso de una estructura de tamaño fijo, como podría ser un vector. Además necesitábamos acceder a la información repetidas veces, por lo que una cola por ejemplo no nos hubiese servido, ya que al desencolar perderíamos los elementos.

Se optó por implementar la lista mediante plantillas para poder reutilizarla con distintas clases, así por ejemplo, se ha utilizado una lista para almacenar los objetos de cada segmento, otra para almacenar los segmentos que forman la carretera, la cual debe ser recorrida constantemente para poder moverlos de posición, otra lista para almacenar aquellas bonificaciones que vaya recogiendo el coche durante la carrera, y otra para almacenar los monumentos visitados por un turista.

Para almacenar los segmentos mientras se iban creando, conforme se iba leyendo la información del fichero, se optó por usar una cola, ya que sólo se usaría una vez, para posteriormente almacenar los segmentos en una lista y poder trabajar con ellos. Además el primer elemento leído del fichero debía ser el primero insertado en la lista, así que una cola era la estructura perfecta, ya que el primer elemento en entrar es el primero en salir.

El grafo resultaba ser la estructura más eficiente para almacenar los distintos caminos que comunicaban los monumentos, debido a que los monumentos eran un número constante, pudimos usar una estructura fija. De este modo el grafo se compuso de un vector de seis posiciones de punteros a cadenas de caracteres, en las que se almacenarán los nombres de los monumentos leídos de los ficheros, además de una matriz de seis por seis posiciones en cuyas celdas se almacenarán las calles que unen los distintos monumentos y la longitud que tienen. Para ello se definieron las celdas como estructuras que contenían un puntero a la cadena con el nombre de la calle, y un entero con el tamaño de la calle.

Para almacenar a los turistas de forma ordenada, se utilizó otra estructura de tipo dinámico, un árbol de búsqueda binario, en el que las ramas de cada nodo están ordenadas de modo que si es menor que el nodo raíz, se sitúa en el subárbol izquierdo y si es mayor en el subárbol derecho, facilitándose así la tarea de encontrar a los turistas. Cada nodo se forma pues, por un puntero de tipo turista y dos punteros de tipo nodo (uno para la raíz del subárbol izquierdo y otro para la del subárbol derecho).

 

DESCARGAR