Universidad de San Carlos de Guatemala
Facultad de Ingeniera
Escuela de Ciencias y Sistemas
Introduccin a la Programacin y Computacin 1
Seccin E
Ingeniero Neftal de Jess Caldern Mndez
Auxiliares Jorge Antonio Rompiche, Luis Ramrez
Primer Semestre 2017
Prctica 1
Battleship
Objetivos
Generales
1. Introducir a los estudiantes a la programacin con el lenguaje Java.
2. Que los estudiantes construyan e implementen algoritmos para solucionar el
problema planteado.
3. Aplicar la imaginacin del estudiante.
Especficos
1. Utilizar sentencias de control, ciclos y arreglos para la implementacin de la
solucin.
2. Implementar funciones y procedimientos para construir la solucin.
3. Construir una aplicacin funcional en consola.
Descripcin
Se requiere que construyan el juego de Battleship en consola, utilizando el lenguaje de
programacin Java. A continuacin se describe la lgica, componentes y funcionamiento del
juego.
Componentes del juego
Tablero de m x m posiciones
Para m 10
Barcos
Portaaviones (4 x 1) (1 x 4).
Submarino (3 x 1) (1 x 3).
Destructor (2x1) (1x2).
Buque (1x1).
Lgica del Juego
Construccin del tablero
Se deben de utilizar los barcos disponibles (portaaviones, submarino, destructor, buque).
Como usuario se podr seleccionar la posicin en la que se colocar cada uno de los
barcos siempre que cumpla con las restricciones del tablero y sin colocar un barco encima
de otro. Como Mquina se colocarn de forma aleatoria dentro del tablero siempre
cumpliendo las restricciones del tablero y no podr colocar un barco encima de otro.
1
Para un tablero de 10x10 se debe de utilizar los barcos de la siguiente forma:
1 Portaaviones
2 Submarinos
3 Destructores
4 Buques
Para un tablero de dimensiones m 20 y m > 10 ser el doble de barcos que un tablero
de 10 x 10.
2 Portaaviones
4 Submarinos
6 Destructores
8 Buques
Para seleccionar el nmero de barcos para un tablero de dimensin m se aplicar la
(m1)
siguiente frmula: B(m) = 10 + 1 (utilizando slo la parte entera, es decir sin aplicar
decimales) por el nmero de barcos en un tablero de 10 x 10.
Ejemplo para un tablero de dimensin m = 24
(241) 23
B(24) = 10 +1= 10 + 1 = 2 + 1 = 3.
Los barcos a utilizar para un tablero de dimensin m = 24 sern:
3 Portaaviones
6 Submarinos
9 Destructores
12 Buques
Se deben imprimir los dos tableros en juego (principal y secundario). En el mapa principal
se mostrarn los barcos ubicados inicialmente, as como los disparos recibidos por el
adversario. En el mapa secundario se desplegarn los disparos fallidos y acertados hacia el
oponente. En ambos casos (mapa principal y secundario) deben de mostrarse el nmero
correspondiente a cada fila y columna. Queda a discrecin del estudiante la simbologa a
utilizar para un disparo y el lmite del tablero.
Lgica del disparo
Al inicio del juego se debe de escoger de forma aleatoria el turno de cada jugador, se debe
de pedir las coordenadas (x, y) de cada disparo, y repintar el mapa por jugador. hasta que
sea el fin del juego. Si en caso el jugador es la mquina cuando este realice el disparo, las
coordenadas deben de ser aleatorias dentro del rango del tablero, para la mquina no se
mostrar sus tableros(principal y secundario).
2
Cada disparo solo puede abarcar una casilla o una coordenada.
Un barco quedar destruido cuando acierten los disparos en cada una de las
posiciones del l dentro del tablero.
Si el disparo acierta deber notificar al jugador en curso
El juego terminar cuando cuando alguno de los dos jugadores se quede sin barcos.
Si las coordenadas no existen dentro del tablero en juego se debe de notificar al
jugador en curso.
Descripcin de la solucin requerida
Construir el juego Battleship en consola
Modalidades del juego
Jugador vs Jugador
Jugador vs Mquina
Lo primero que debe de mostrar el programa es un Men de opciones.
Men
1. Jugador vs Jugador
Comenzar una partida modalidad multijugador.
Se pedir a los jugadores el ingreso del tamao tablero a construir
A cada jugador se pedir su nombre
El men de construccin queda a discrecin del estudiante
2. Jugador vs Mquina
Comenzar una partida modalidad un jugador contra la mquina
Se pedir al jugador el ingreso del tamao tablero a construir
Se pedir su nombre
El men de construccin queda a discrecin del estudiante
3. Scores
La aplicacin podr llevar registro de un nmero mximo de 5 jugadores.
Abrir el siguiente men:
3.1. Descendente
Mostrar una lista de los jugadores con su respectivo nmero de partidas
ganadas ordenados de manera descendente segn el nmero de partidas
ganadas.
3
3.2. Ascendente
Mostrar una lista de los jugadores con su respectivo nmero de partidas
ganadas ordenados de manera ascendente segn el nmero de partidas
ganadas.
4. Eliminar Jugador
Con esta opcin se podr eliminar el registro de algn jugador.
5. Salir
Cerrar la aplicacin
Partidas
Para identificar las naves se utilizarn distintos caracteres de la siguiente forma:
Nave Dimensiones Caracter
Portaaviones 4x1 @
Submarino 3x1 #
Destructor 2x1 &
Buque 1x1 *
4
Ejemplo tablero 10 x 10
@ @ @ @ & &
&
# * &
# *
# # #
& &
En la modalidad jugador vs mquina, los disparos de la mquina se deben generar
aleatoriamente.
Al iniciar una partida el programa deber solicitar al usuario:
1. El nombre de los jugadores.
a. En el caso de la modalidad de un solo jugador se solicitar solamente el
nombre del jugador.
b. En caso de que se ingrese un nuevo jugador y el registro de estos est lleno,
se deber indicar al usuario que ingrese un jugador existente, es decir un
nombre de jugador vlido.
2. Las dimensiones del tablero.
a. Las dimensiones deben ser mayores o iguales a 10 x 10
5
Durante la partida el programa deber:
1. Imprimir el estado actual del tablero
a. El tablero se debe de mostrar el tablero principal y secundario indicando al
Jugador en curso:
2. Solicitar el movimiento del jugador en turno
a. En el caso del turno de la mquina se deber mostrar en pantalla el siguiente
mensaje Turno de la mquina.
b. En caso de que el movimiento sea invlido se deber notificar al usuario y se
volver a pedir que ingrese de nuevo su movimiento.
c. Si el disparo acierta a un barco deber notificarlo
En este caso el Jugador 1 decide realizar el movimiento (3,4).
3. Repetir los pasos anteriores hasta que se no exista barcos enemigos o barcos
propios.
6
Al finalizar la partida el programa deber:
1. Mostrar los resultados de ambos jugadores, es decir el nmero de barcos destruidos
por jugador y que barcos fueron.
2. Aumentar el registro de partidas ganadas del jugador que gan la partida,
exceptuando el caso de que la mquina ganara.
a. Los jugadores se identificarn por su nombre.
3. Preguntar si se desea comenzar una partida con la configuracin ya establecida o si
se desea regresar al men principal.
Restricciones
La aplicacin debe desarrollarse en el lenguaje de programacin Java
Aplicacin exclusiva en consola
Para la lgica del juego debe implementarse arreglos. No es permitido utilizar las
estructuras que implementa Java (ArrayList, LinkedList, etc.).
El IDE a utilizar queda a discrecin del estudiante.
Copias parciales o totales tendrn nota de 0 y reporte a la escuela de Ciencias y
Sistemas.
Detalles de entrega
Fecha de entrega 2 de Marzo de 2017 antes de las 23:59 horas.
Entregables: cdigo fuente de la aplicacin y el archivo .jar (ejecutable de la
aplicacin).
Modalidad de entrega: crear una carpeta con el nombre [IPC1]Practica1_carnet,
comprimirla y subirla a la carpeta de Google Drive que se les compartir el da de la
entrega.