Vous êtes sur la page 1sur 5

Universidad Nacional Experimental de Guayana

Proyecto Ingeniería en Informática


Asignatura: Programación II
Ing. Ronald Pérez

Trabajo Practico II

El DIGGER es un juego clásico de tipo ARCADE. En los años 80 fueron


muchas las versiones presentadas de éste juego y se pueden conseguir aún nuevas
versiones que utilizan la tecnología actual para crear efectos de sonido y video de
mayor calidad.

Con el fin de seguir con la tradición de los juegos ARCADE y para lograr que el
DIGGER sobreviva en el tiempo, se desea que usted desarrolle en el lenguaje de
programación C++ una versión especial del mismo.

Descripción general del juego:

El protagonista del juego es una máquina cavadora llamada DIGGER, la cual es


controlada por el usuario del programa. El objetivo del jugador es cavar a través de un
escenario y recoger todos los diamantes que se encuentran en el mismo. El problema es
que DIGGER será perseguido por varios tipos de máquinas las cuales van a ser más
grandes en número y más inteligentes a medida que se avanza de nivel.

Con el fin de pasar de nivel, es necesario recoger todos los diamantes que se
encuentran en el mismo.

Detalles del juego:

 El juego se desarrollará en un escenario de 40x25 casillas, donde cada casilla puede


ser un montón de tierra, un espacio libre, una piedra, un diamante o la ubicación de
alguna máquina.

Montón de tierra: Este tipo de casilla sólo podrá ser traspasada por alguna máquina
cavadora. Para ubicarse en esta debe existir un pequeño tiempo de espera para
simular el proceso de quitar la tierra (300 ms recomendado). Una vez que se haya
traspasado este tipo de casilla se convertirá en un espacio libre.

Espacio libre: Este tipo de casilla es transitable por cualquier máquina. Algunas
máquinas se van a valer de este tipo de casilla para alcanzar al DIGGER.

Piedra: Las piedras son casillas por las cuales ningún tipo de máquina puede pasar
(incluyendo al DIGGER). Para quitar una piedra del camino es necesario cavar
debajo de la misma. Esto producirá una caída en de la misma hasta llegar al primer
montón de tierra que la soporte. Note que puede haber varias piedras apiladas (una
encima de la otra), por lo que en ese caso todas las piedras deben caerse.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Asignatura: Programación II
Ing. Ronald Pérez
Durante el proceso de caída de una piedra, si se atraviesa algún tipo de máquina
(incluyendo al DIGGER), esta será arrastrada hasta el fondo aplastándose. En el
caso de que esa máquina sea el DIGGER, una vida será restada. De otro modo la
máquina enemiga desaparecerá del nivel.

Diamante: Cada casilla de este tipo contiene un preciado diamante. Un diamante


desaparecerá sólo cuando sea alcanzado por el DIGGER y la casilla se convertirá en
un espacio libre.

 Un nivel es completado cuando DIGGER haya recolectado todos los diamantes del
nivel.

 La cantidad de diamantes en cada nivel es un número aleatorio que se distribuye


uniformemente entre 10 y 20.

 Al inicio del juego, DIGGER cuenta con 4 vidas (la vida actual y tres de reserva).
Cada tres niveles, DIGGER recibirá como recompensa una vida adicional.

Una vida es perdida cuando DIGGER es alcanzado por una máquina enemiga, esto
significa que la máquina se logra colocar sobre la misma casilla del DIGGER.

 En el juego existen dos tipos de máquinas enemigas. Una de ellas es un vehículo


que no puede cavar, por lo que tendrá que seguir alguna ruta libre creada por
DIGGER o por una máquina del tipo 2. Las máquinas de tipo 2 son unas cavadoras
iguales a DIGGER. Ellas podrán crear rutas y perseguir a DIGGER con mayor
facilidad.

 Cuando se inicia el juego existe sólo una máquina enemiga del tipo 1 y otra del
tipo2. Al completar un nivel, se aumentada en uno la cantidad de máquinas
enemigas. El tipo de máquina que será incorporada depende del número del nivel. Si
el nuevo nivel que se jugará es par, entonces será incorporada una máquina del tipo
1, de otro modo de agregará una de tipo 2. El primer nivel del juego es el número 1.
Esto significa que al completarlo será agregada una máquina del tipo 1.

 Cualquier máquina puede moverse hacia arriba, abajo, izquierda o derecha, pero
nunca en diagonal.

 En el caso de que DIGGER sea alcanzado por una máquina enemiga, se le restará
una vida. Este continuará en su posición actual, pero todas las máquinas regresarán
a su posición inicial.

 El objetivo de las máquinas enemigas no es recolectar a los diamantes del escenario.


Es por eso que si alguna de ellas se topa con un diamante no sucederá nada, el
diamante seguirá en su lugar.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Asignatura: Programación II
Ing. Ronald Pérez
Inteligencia de las máquinas enemigas:

En el juego existen dos tipos de máquinas enemigas. Cada una tiene


características distintas y por lo tanto tendrán una inteligencia distinta.

Inteligencia de las máquinas de tipo 1: Este tipo de máquina no tiene la capacidad de


cavar la tierra, por lo que sólo podrá moverse en los espacios libres. El procedimiento
para decidir en que dirección se moverá esta máquina es el siguiente:

 En una casilla existen a lo sumo 4 direcciones a tomar (arriba, abajo, izquierda,


derecha). De las cuatro direcciones, siempre existe una que es la más prometedora,
la cual será tomada con probabilidad p. El resto de las alternativas serán tomadas
con probabilidad (1-p)/3.

La dirección más prometedora se obtendrá dependiendo de la posición relativa del


DIGGER a la máquina enemiga. Esta se describe a continuación:

Enemiga

- Si el DIGGER se encuentra al norte, al noroeste 1 o al noreste 1, entonces la


dirección más prometedora es “Arriba”.
- Si el DIGGER se encuentra al sur, al suroeste 1 o al sureste 1, entonces la
dirección más prometedora es “Abajo”.
- Si el DIGGER se encuentra al oeste, al noroeste 2 o al suroeste 2, entonces la
dirección más prometedora es “Izquierda”.
- Si el DIGGER se encuentra al este, al noreste 2 o al sureste 2, entonces la
dirección más prometedora es “Derecha”.

En caso que la alternativa seleccionada no pueda ser tomada porque está bloqueada
por una piedra o un montón tierra, entonces se seleccionará la dirección transitable
que minimice la distancia entre DIGGER y la máquina enemiga. En caso de que
ocurra esto, la máquina enemiga deberá continuar en esa dirección hasta que se
encuentre con una piedra o un montón de tierra. Esto se hace para evitar que estas
máquinas se queden estancadas en algunos tipos de camino.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Asignatura: Programación II
Ing. Ronald Pérez
 Al inicio del juego, la probabilidad de que una máquina enemiga tome la alternativa
más prometedora es p=0.6. Cada nivel, se incrementará esta probabilidad en 0.05 y
podrá llegar hasta 0.85.

 Al comenzar cada nivel, este tipo de máquina debe estar separada del DIGGER por
al menos 10 casillas libres. Debe existir siempre al menos un camino para llegar de
la máquina al DIGGER.

Inteligencia de las máquinas de tipo 2: El objetivo de esta máquina es acercarse lo


más rápido posible a DIGGER a lo largo del juego. Para determinar cuál es la siguiente
casilla a la cual se moverá debe realizarse el siguiente procedimiento:

o Calcular la distancia entre la máquina enemiga y el DIGGER para el caso en


que se mueva hacia arriba, abajo, izquierda y derecha.
o Escoger la dirección que minimice la distancia entre el DIGGER y la
máquina enemiga.
o Realizar un ensayo de Bernoulli. Si se obtiene un éxito, entonces se toma esa
dirección, de lo contrario se escoge aleatoriamente cualquier otra.

Nota: Debe tomar en cuenta que algunas veces no es posible seleccionar una dirección,
ya sea porque se sale del escenario o por existe una piedra en esa dirección.

El grado de inteligencia de este tipo de máquina comienza en 0.65 (probabilidad de


éxito) y por cada nivel se aumenta en 0.075 hasta llegar a 1.0.

Detalles sobre la interfaz y diseño de los niveles:

Usted debe desarrollar una interfaz con ambiente de juego, por lo que se deja a gusto
propio el desarrollo de la misma, siempre y cuando cumpla los siguientes lineamientos:

 Debe ser mostrado en todo momento el nivel en que se encuentra el jugador, así
como también la cantidad de diamantes que se ha recogido DIGGER en el nivel y la
cantidad de vidas extras disponibles.

 El paso de DIGGER de una casilla a otra debe ser mostrado con suavidad, por lo
que será necesario simular el movimiento del mismo con varios pasos intermedios.

 El diseño de las casillas de tierra, los diamantes, las piedras, la máquina que
representa al DIGGER, las máquinas enemigas y todo tipo de detalle queda a gusto
propio.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Asignatura: Programación II
Ing. Ronald Pérez
 El diseño del escenario de cada nivel puede ser creado según sus gustos, siempre y
cuando se mantenga consistente las dimensiones del mismo. Usted puede inclusive
generar un nivel aleatoriamente.

Detalles Generales:
 Es necesario refrescar sus conocimientos de probabilidades, especialmente la
generación de variables aleatorias.
 Diseñe y utilice efectos de sonido en el juego.
 Diseñe cada escenario de manera tal que pueda ser visualizado completamente
en la pantalla. Utilice la resolución de 800x600 para hacer las pruebas.

Se debe entregar:
Informe:
1) Un esquema global (representación gráfica) de las clases de los MODELOS en
el que se muestren las distintas relaciones presentes en cada uno de los
escenarios.
2) Código fuente documentado de las clases implementadas.
3) Comentarios adicionales:
4) Decisiones de diseño más relevantes
5) Comentarios a cerca de la reutilización y extensibilidad
6) Tiempo dedicado a la realización de la práctica.
Fuentes:
Código fuente, cada clase debe ser implementada en un único archivo.

Se valorará:
MODELO: diseño de las jerarquías de clases, relaciones entre las clases,
distribución de responsabilidades, ligadura dinámica, uso del lenguaje.
CONTROL: ausencia de la lógica de la aplicación en la capa de interfaz.
VISTA: “amigable”, ordenada y que proporcione fácil acceso a la
información.
CALIDAD: atención a la extensibilidad y reutilización.

Vous aimerez peut-être aussi