Académique Documents
Professionnel Documents
Culture Documents
Trabajo Practico II
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.
Con el fin de pasar de nivel, es necesario recoger todos los diamantes que se
encuentran en el mismo.
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.
Un nivel es completado cuando DIGGER haya recolectado todos los diamantes del
nivel.
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.
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.
Enemiga
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.
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.
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.