Programación Orientada a Objetos 1º de Ingeniería de Telecomunicación Universidad Autónoma de Madrid Curso 2004-2005 Segunda Práctica: (80%) El propósito de esta práctica es el implementar el juego de Batalla naval pero de manera simplificada, al que se denominaremos “Cazasubmarinos”. El juego se desarrolla en una rejilla de N x N donde existen dos jugadores, (el ordenador y el usuario). El ordenador que es nuestro enemigo, ubica de manera aleatoria su flota (un grupo de submarinos) horizontal o verticalmente en cualquier parte de la rejilla. El ordenador no tiene armas y por ello no podrá disparar contra el usuario. El juego se simplifica haciendo que solo el usuario pueda disparar contra su enemigo cuantas veces sea necesario para destruir todos los submarinos. Para hacer las cosas más sencillas, imagine que el tablero es de forma toroidal (cerrado circularmente en sus dos direcciones). Adicionalmente podrán compartir una o mas posiciones un submarino con otro (superposición) Para iniciar el juego, se deben dar un conjunto de opciones (menú) al usuario para interactuar con el programa: 1. Configuración de la partida a. Dimensión de la rejilla, b. Número de submarinos c. longitud máxima de los navíos 2. Iniciar partida a. Disparar (coordenadas x,y) Informar si se hecho blanco a uno o varios navíos Informar si se ha hundido a uno o varios navíos Informar cuantos navíos quedan por derribar b. Terminar partida 3. Salir Se pide: 1. Escribir el juego descrito anteriormente en código Java donde se utilice en su implementación las siguientes cuatro clases así: Clase Rejilla Clase Casillas Clase Submarino Clase Cazasubmarinos, el cual contendrá el método main() (10%) Modificar el programa anterior para que se exista un proceso que puntué al jugador de acuerdo al número de aciertos en el menor número de intentos (10%) Modificar el programa anterior para que se exista un proceso para almacenar y recuperar los mejores puntajes con el nombre del jugador y sean mostrados al iniciar la partida. AYUDA: 1. Utilizar la clase “ArrayList”, en lugar de los clásicos “arrays”, para almacenar colecciones de objetos: 2. Utilizar del paquete java.lang.Math el método random para generar un número aleatorio. ************************************************************************************************************* Las calificaciones se realizarán de acuerdo a los porcentajes especificados en cada apartado. ************************************************************************************************************* Para cada problema se deberán construir los ficheros “.java” correspondientes y un fichero “.bat” de compilación y ejecución. Todos estos ficheros, se deberán introducir en un fichero comprimido zip. La entrega se realizará en http://www.ii.uam.es/esp/alumnos/practicas/envio_practicas.php3 (asignatura POO de 1º de Telecomunicación) antes de las 20:00 horas día 21 de abril de 2005. El nombre del fichero zip deberá comenzar por p1- seguido de los dos apellidos de cada uno de los miembros del grupo según el orden alfabético del primer apellido, por ejemplo: p1-lopez-sanchez&martinez-fernandez.zip Cada grupo deberá entregar una memoria de la práctica incluyendo el diseño del gráfico de diagrama de clases - UML . Las características que debe tener la memoria están publicadas en la página Web. No se aceptarán como entregada la práctica sin su respectivo informe o su respectivo código. Los alumnos deberán mostrar durante la primera sesión de la práctica siguiente el funcionamiento de los programas (descomprimiendo el fichero zip enviado y ejecutando los correspondientes ficheros bat en el explorador de Windows, es decir haciendo “doble clic” sobre los ficheros bat). Las notas serán publicadas durante las próximas dos semanas después de la entrega de la práctica por parte de los alumnos.