proyecto 1 1415

11
Universidad Metropolitana. Departamento de Procesos y Sistemas. Estructura de Datos. Trimestre 1415-2 Proyecto 1 En esta oportunidad usted ha sido seleccionado para diseñar y desarrollar el juego Batalla Naval Unimet en Java, siguiendo el paradigma de Programación Orientada a Objetos. NOTA: Batalla Naval Unimet, está basado en el famoso juego de mesa Battleship, sin embargo presenta algunas características 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 automáticamente. 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 planificación 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 carácter).

Upload: juan-enmanuel-benavides

Post on 18-Dec-2015

225 views

Category:

Documents


1 download

DESCRIPTION

proyectos de estructuras de datos

TRANSCRIPT

  • 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).