proyecto 1 1415
DESCRIPTION
proyectos de estructuras de datosTRANSCRIPT
-
Universidad Metropolitana.
Departamento de Procesos y Sistemas.
Estructura de Datos.
Trimestre 1415-2
Proyecto 1
En esta oportunidad usted ha sido seleccionado para disear y
desarrollar el juego Batalla Naval Unimet en Java, siguiendo el
paradigma de Programacin Orientada a Objetos.
NOTA: Batalla Naval Unimet, est basado en el famoso juego de mesa
Battleship, sin embargo presenta algunas caractersticas diferentes.
Entorno del juego:
El juego estar hecho para que lo ejecute 1 jugador (JUGADOR)
contra el sistema inteligente (BOT), el cual debe hacer las jugadas
automticamente. De los jugadores se conoce el nombre.
Cada uno (JUGADOR y BOT) cuenta con dos tableros (secretos
entre ellos, es decir, en pantalla no se ven los tableros del BOT), uno
llamado MAR, donde ubicar toda su flota al iniciar el juego, y otro
llamado ESTRATEGIA, en el cual se ubicaran los resultados de cada
jugada para ir armando el MAR del rival y hacer una mejor planificacin
de ataque (se inicializa vacio). Cada tablero est representado por una
matriz de 10x10.
La flota est conformada por 1 porta-aviones, 2 buques y 2
lanchas. El porta-aviones est formado por 5 partes iguales
consecutivas, cada buque tiene 2 partes iguales consecutivas y cada
lancha est en una pieza. Cada parte tiene un color distinto dependiendo
del elemento del que forma parte (puede ser indicado con un carcter).
-
La inicializacin del MAR de BOT debe ser a travs de un archivo
de texto llamado MARBOT.txt, donde en la primera lnea se indica las
posiciones del porta-aviones, en la segunda y tercera lnea se indica las
posiciones del primero y segundo buque, en la cuarta y quinta lnea se
indica las posiciones de la primera y la segunda lancha. (Recuerde que
son posiciones contiguas).
Por otro lado, la inicializacin del MAR de JUGADOR, puede ser a
travs de la misma manera que BOT (archivo de texto llamado
MARJUGADOR.txt), o puede ser manualmente indicando posiciones
contiguas y elemento o parte de flota (el estudiante decide la forma y el
proceso que utilizar).
Descripcin del juego:
El jugador de turno le indica al sistema la posicin (x, y) donde desea
dispararle al rival (en el caso de BOT puede hacerse mediante algn
mtodo RANDOM), y ocurrir alguna de las siguientes posibilidades:
- El disparo no es acertado en ningn elemento de la flota rival,
entonces el sistema muestra AGUA, y se debera actualizar el
tablero ESTRATEGIA automticamente con un smbolo * en la
posicin disparada, y se pierde el turno, adems se actualiza el
MAR del rival con el mismo smbolo * en la posicin disparada.
- El disparo acierta en una de las partes de uno de los elementos de
la flota rival, y pueden ocurrir dos cosas: si aun no est destruido
en su totalidad el elemento rival el sistema muestra GOLPEADO,
si es destruido con el disparo el sistema debe mostrar HUNDIDO y
se debera actualizar el tablero ESTRATEGIA con un smbolo X en
la posicin disparada, y sigue en turno, adems se actualiza el
MAR del rival con el mismo smbolo X en la posicin disparada.
-
El sistema debe indicar cuando uno de los jugadores elimine toda la
flota rival, resultando el Ganador del Juego. El usuario puede volver a
jugar si as lo desea.
BONO: crear un archivo de texto llamado RECORD.txt, en el cual se
registren los ganadores de las partidas jugadas, indicando nombre y
nmero de turnos para ganar.
Ejemplo del Juego:
- Archivo MARBOT.txt:
(5,3)(5,4)(5,5)(5,6)(5,7)
(1,1)(2,1) (9,6)(9,7)
(3,9)
(7,2)
Se genera el siguiente MAR para el BOT:
0 1 2 3 4 5 6 7 8 9
0
1 B
2 B
3 L
4
5 P P P P P
6
7 L
8
9 B B
IMPORTANTE: En el ejemplo se mostrar los tableros de BOT, sin
embargo, recuerde que no debe ser visualizado en pantalla.
-
- Archivo MARJUGADOR.txt:
(9,4)(9,5)(9,6)(9,7)(9,8)
(4,1)(4,2)
(6,3)(7,3) (0,8)
(9,0)
Se genera el siguiente MAR para el JUGADOR (Jose):
0 1 2 3 4 5 6 7 8 9
0 L
1
2
3
4 B B P
5 P
6 B P
7 B P
8 P
9 L
-
Turno JUGADOR: dispara al (0,9), se muestra AGUA y se actualiza
ESTRATEGIA del JUGADOR y el MAR del BOT, y pierde el turno:
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 L 0 *
1 1
2 2
3 3
4 B B P 4
5 P 5
6 B P 6
7 B P 7
8 P 8
9 L 9
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0
1 B 1
2 B 2
3 L 3
4 4
5 P P P P P 5
6 6
7 L 7
8 8
9 B B 9
-
Turno de BOT: genera la posicin (4,1), se muestra GOLPEADO y se
actualiza ESTRATEGIA del BOT y el MAR del JUGADOR:
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0
1 B 1
2 B 2
3 L 3
4 4 X
5 P P P P P 5
6 6
7 L 7
8 8
9 B B 9
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 L 0 *
1 1
2 2
3 3
4 X B P 4
5 P 5
6 B P 6
7 B P 7
8 P 8
9 L 9
-
Turno de BOT: con inteligencia se genera la posicin (4,2), se muestra
HUNDIDO y se actualiza ESTRATEGIA del BOT y el MAR del JUGADOR:
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0
1 B 1
2 B 2
3 L 3
4 4 X X
5 P P P P P 5
6 6
7 L 7
8 8
9 B B 9
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 L 0 *
1 1
2 2
3 3
4 X X P 4
5 P 5
6 B P 6
7 B P 7
8 P 8
9 L 9
-
Turno de BOT: genera la posicin (0,0), se muestra AGUA y se
actualiza ESTRATEGIA del BOT y el MAR del JUGADOR, y pierde el
turno:
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0 *
1 B 1
2 B 2
3 L 3
4 4 X X
5 P P P P P 5
6 6
7 L 7
8 8
9 B B 9
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * L 0 *
1 1
2 2
3 3
4 X X P 4
5 P 5
6 B P 6
7 B P 7
8 P 8
9 L 9
-
Turno JUGADOR: dispara al (7,2), se muestra HUNDIDO y se actualiza
ESTRATEGIA del JUGADOR y el MAR del BOT:
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * L 0 *
1 1
2 2
3 3
4 X X P 4
5 P 5
6 B P 6
7 B P 7 X
8 P 8
9 L 9
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0 *
1 B 1
2 B 2
3 L 3
4 4 X X
5 P P P P P 5
6 6
7 X 7
8 8
9 B B 9
-
Y as sucesivamente, hasta que por ejemplo JUGADOR elimina toda la
flota de BOT, resultando ganador JUGADOR (Jose en 15 intentos):
JUGADOR:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * X 0 *
1 1 X
2 * * 2 X *
3 * 3 X
4 X X P 4
5 P 5 X X X X X
6 X P 6
7 X P 7 X
8 * P 8 *
9 L 9 * X X
BOT:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 * 0 * X
1 X 1
2 X * 2 * *
3 X 3 *
4 4 X X
5 X X X X X 5
6 6 X
7 X 7 X
8 * 8 *
9 * X X 9
-
- Archivo RECORD.txt:
Jose , 15
Entregar (bajo las normas para entrega de proyectos):
- Diagrama de Clases completo.
- Programa desarrollado y documentacin del cdigo.
Reglas del proyecto:
- Se debe seguir el paradigma de Programacin Orientado a Objetos, de
no hacerlo no se corregir el proyecto y tendr valoracin de 0.
- Una de las principales novedades de este proyecto es que se debe
manejar EXCEPCIONES.
- Importante, realizar el diseo antes del desarrollo, es decir, el diagrama
de clases debera estar validado por su profesor y/o preparador para
continuar con la programacin (no es obligatorio pero es lo ms
recomendable).
- El diseo del proyecto debe coincidir con el desarrollo entregado.
- La correccin del proyecto estar sujeta a la aprobacin del quiz de
proyecto que se realizar el da de la entrega. En el caso de reprobar el
quiz de proyecto, la nota ser utilizada como nota del proyecto.
- El bono tendr un valor de 3 puntos.
- Se debe seguir las convenciones de programacin en Java, publicadas
en la pgina creada para el curso (dropbox:
https://www.dropbox.com/sh/15c5jsmjpj4mrsw/AACOXDgLTK_tEcpjmGvJuY01a?d
l=0).
- Se deben seguir las normas de entrega de proyecto, que se encuentran
en el archivo de Cronograma de Actividades, publicado en la pgina
creada para el curso (dropbox:
https://www.dropbox.com/sh/15c5jsmjpj4mrsw/AACOXDgLTK_tEcpjmGvJuY01a?d
l=0).