Sunteți pe pagina 1din 8

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.

S-ar putea să vă placă și