PROGRAMACION I (0416202) PROYECTO JUEGO Desarrollar el juego llamado Tower Defense, que puede conseguir en el siguiente enlace http://www.minijuegos.com/juegos/jugar.php?id=5791 Valor: 35 Pts. Donde: 5 Pts (revisión antes de entrega) y 30 Pts. (Defensa del proyecto) Condiciones del proyecto 1. Deben entregar el proyecto en un CD al profesor correspondiente, con un instalador. En el CD debe haber un manual de usuario o el juego debe tener una ayuda que se indique las reglas, como se juega, derechos de autor y cualquier información que usted crea importante acotar. 2. Todas las clases deben tener una documentación (JAVADOC). 3. Máximo dos personas. 4. Fecha de entrega: el lunes 22 de marzo de 2010 a las 8:00 am. Para todas las secciones en el Departamento de Informática. Entregar el CD debidamente marcado a la secretaria del departamento. 5. Realizar una exposición de 10 minutos, donde se tendrá que defender el proyecto entregado. La misma será evaluada por los cuatro profesores. 6. Las fechas de la exposición estarán comprendidas entre el jueves 25 y el viernes 26 de marzo, en bloques de 15 minutos. 7. Equipo que no esté 20 minutos antes de la fecha y hora acordada para la exposición, tendrá una penalización de 20 puntos, y la fecha y hora de la misma, quedará a disposición de los profesores. 8. La selección de la fecha y hora de las exposiciones será coordinada por la profesora Valero. Se les enviará un correo con la información de su día y hora. Para ello, deben enviar a su profesor el grupo que han formado antes del lunes 08 de marzo.

Consideraciones Importantes: Especificaciones del Juego:



El juego debe tener la capacidad de jugarse como se muestra en el enlace.



Debe tener 1 nivel.



Debe poderse guardar el juego. Si un jugador quiere retirarse a la mitad del juego, el programa debe darle la capacidad de guardarlo. Esto indica que el programa también debe permitir cargar un juego guardado en cualquier momento.



Debe solicitar el nombre del jugador.



Debe mostrarse en pantalla el dinero que tiene cada jugador. Se debe mostrar también una tabla de posiciones con los 10 mejores jugadores. El mejor jugador será aquel que recolecte mas dinero durante el juego.



El juego debe poseer todas las características del link enviado. Aunque debe usar su creatividad, puede cambiar los personajes y formas, pero la ciencia del juego debe ser la misma.



Debe tener sonido.



Todo lo demás que desee colocar “adicional” será tomado en cuenta.

Especificaciones Técnicas •

Se le permitirá usar cualquier herramienta de programación que conozca o investigue, pero la interfaz gráfica debe ser hecha por código



Debe ser totalmente desarrollado en JAVA (Puede utilizar Netbeans o Eclipse)

Los Profesores

EXPLICACIÓN DEL JUEGO Tower Defense o TD es un subgénero de los videojuegos de estrategia en tiempo real. El objetivo es lograr que las unidades enemigas no lleguen a cruzar el mapa, para lograrlo se debe construir torres que las atacan al pasar. Tanto los enemigos como las torres tienen diferentes habilidades (Ver Figura 1). La elección apropiada de torres y su ubicación es la estrategia esencial del género. Muchos juegos empiezan con un laberinto que será atravesado por los enemigos, al cual se le construyen torres a los lados del camino. Otros comienzan como un mapa libre para que el usuario coloque torres. En éste último caso, las unidades enemigas deben contar con cierta inteligencia para encontrar el camino hasta el final del escenario.

Figura 1. Ejemplo de escenario de Tower Defense

Existen múltiples versiones de este juego, con diferentes niveles de complejidad, tu tarea es desarrollar una versión de Tower Defense para Programación I. El juego debe ser desarrollado en Java, con interfaz grafica de usuario y debe cumplir las siguientes condiciones: 1. El juego al iniciar presentará opciones para: Nuevo juego, Guardar Juego, Cargar Juego, Tabla de Posiciones, Ayuda, Créditos y Salir. 2. El juego debe tener al menos 4 tipos de armas que se diferencian por su potencia de tiro y por el perímetro que cubre, ver figura 2. En el ejemplo de la figura 2, el arma 1 puede disparar arriba, abajo y a los lados y su alcance es de una celda; el arma 2 solo dispara arriba y a la derecha y su alcance también es de una celda. Tome en cuenta que un arma dispara a un enemigo solo cuando éste entra en su rango de alcance o perímetro. Cabe mencionar que se podrán colocar hasta n unidades de

cada tipo de arma dependiendo de la cantidad de dinero que posea el jugador para comprarlas.

Figura 2. Ejemplo de tipo armas

3. Cada arma tiene un precio, que aparecerá reflejado en la pantalla. Este precio depende de la potencia y el alcance de cada arma. 4. También debe tener 2 tipos de enemigos que se diferencian por su fortaleza, por ejemplo uno de ellos resiste 2 impactos antes de morir y el otro resiste solo 1 impacto. Deben aparecer n enemigos de cada tipo a lo que inicia una ronda. n es un numero aleatorio para cada ronda. 5. Al principio del juego, el jugador comienza con una cantidad de dinero determinada, y a medida que compra armas éste va disminuyendo. El jugador obtiene dinero cada vez que dispara a un enemigo, si el enemigo se muere de un disparo recibe 1BsF, si se muere con 2 disparos, por cada disparo recibe 2BsF. Si mata a todos los enemigos de una ronda recibe un bono de 100BsF. 6. Al principio del juego, el jugador tiene una cantidad de vidas determinadas, que van disminuyendo en 1 por cada enemigo que logre salir del mapa. 7. El jugador pierde cuando se queda sin vidas. 8. Al comenzar el juego, es decir cuando el usuario selecciona la opción Nuevo Juego, el usuario deberá colocar las unidades defensivas (armas) en el mapa, dependiendo del dinero que tenga para comprar, éstas armas no podrán ser colocadas obstruyendo el camino de los enemigos. El juego inicia cuando el jugador haga clic en el botón de Iniciar Ronda, en ese momento aparecerán aleatoriamente n enemigos de cada tipo, los cuales deben desplazarse desde su punto de entrada hasta la salida del mapa y las unidades ó armas deben impedir mediante disparos dicho avance, tomando en cuanto que las armas tienen un perímetro y ellas disparan exclusivamente cuando un enemigo entra a este perímetro o también llamado

alcance. Todo esto debe ser realizado de manera automática por el juego sin la intervención del jugador. 9. El tamaño del mapa debe ser predeterminado o fijo y lo elige el programador pero mínimo debe ser de 20x20. 10. Durante el desarrollo del juego se deben mostrar las siguientes estadísticas: Número de rondas, cantidad de dinero, cantidad de vidas y enemigos destruidos de cada tipo. 11. El juego debe permitir al jugador poder guardar el juego y poder cargarlo en cualquier momento. 12. El usuario puede jugar cuantas veces desee, si durante una ronda quiere salir de la misma sin que ésta haya terminado, debe presionar la tecla ESC y debe aparecer la pantalla inicial con el menú principal. 13. Si el usuario selecciona Salir, debe mostrarse por pantalla antes de finalizar el programa: Total de rondas jugadas, total de enemigos destruidos durante todas las rondas, total de rondas ganadas, total de rondas perdidas. La ronda se gana si se matan a todos los enemigos, se pierde si algún enemigo logra salir del mapa. 14. Si selecciona Ayuda, debe mostrarse una breve explicación del juego desarrollado. 15. Si selecciona Créditos, debe mostrarse los autores ó desarrolladores del juego. 16. Si el usuario selecciona Tabla de Posiciones se debe mostrar el dinero obtenido por los mejores 10 jugadores. 17. Se evaluará creatividad, cumplimiento de los requerimientos mínimos, validaciones de las opciones del juego y funcionalidad del mismo. 18. El desarrollo de un nivel extra será evaluado con un bono de 5 puntos adicionales. La complejidad de un segundo nivel viene dada por la velocidad de los enemigos, habilidades de los enemigos y complejidad del laberinto.

Baremo de Corrección: A B C D E F

H I J K L M N O P

Q

Dibujo del Mapa Opciones del juego Disposición de armas por parte del usuario Manejo de rondas Disposición de N enemigos aleatorios (2 tipos de enemigos) Juego Avance de enemigos hacia la salida Disparo de armas hacia el enemigo dentro de su alcance Manejo del dinero y de las vidas Enemigos destruidos de cada tipo Validación de fin de juego (pierde si se queda sin vidas) Validación tecla ESC y volver a Menú Principal Validación de jugar varias veces sin salir del programa Guardar el juego Cargar el juego Java Doc Ayuda y Créditos Tabla de posiciones Al Salir Total de rondas jugadas, ganadas y perdidas Total de enemigos destruidos durante todas las rondas Sonido Total

1 1 1 2 1 0 2 3 2 1 1 1 1 2 2 1 1 3 0 2 1 1 30