51

Mora Torres Batalla de Barco Java Reporte

Embed Size (px)

Citation preview

Page 1: Mora Torres Batalla de Barco Java Reporte
Page 2: Mora Torres Batalla de Barco Java Reporte

Introducción.

Campo de Batalla es un juego de estrategia, de ingenio y reflexión, para dos jugadores.

En nuestra versión del Campo de Batalla, el cliente es puesto contra un oponente que puede ser el computador, cualquier otro usuario en red o un jugador en otra computadora.. Cada jugador guarda su propia tabla bidimensional en la que el programa posiciona aleatoriamente un conjunto de naves de varios tamaños. Cada cuadrado de la tabla es una celda. Cada nave ocupa una línea horizontal o vertical de celdas. Por variedad cada barco es de una clase particular (acorazado, portaaviones, bote de remos, etc.), las naves del usuario son puestas en colores diferentes según su clase para ayudar al usuario en el seguimiento de las naves. Cada jugador sabe donde están sus propias naves, pero no tiene información sobre las naves del oponente, el tratar de conocer donde se encuentran es parte del juego.

Una vez las naves han sido situadas, la batalla empieza. El usuario hace clic en una celda del oponente para disparar. El disparo es comunicado al oponente que responde indicando al usuario si el disparo acertó o erró. El oponente tiene una oportunidad entonces para disparar un tiro a las naves del usuario y el usuario responde con el resultado. El juego continúa así, disparos alternos y las contestaciones. Un disparo en la

Última celda de una nave la hunde. El jugador que primero hunde todas las naves del oponente gana.

2

Page 3: Mora Torres Batalla de Barco Java Reporte

Descripción del juego

Mirando el ejemplo de la primera página, el usuario ha disparado en A9, C8, y G2 erróneamente (entre otros) y ha acertado en B5. En su último turno, el usuario ha hundido la nave del oponente que ocupó la línea horizontal A4 a través de A8. El comentario al fondo debe decir el nombre de la nave y el tipo. Mirando las suposiciones de nuestro oponente, ellos no han tenido mucho éxito, hay disparos errados esparcidos a lo largo del gráfico, y un solo golpe en F1.

Los archivos de datos de las naves

La información de las naves esta almacenada en archivos texto. El archivo comienza con el número de clases de naves seguido de la información de cada clase. A continuación esta el número de naves y y la información de cada nave.

El archivo debe estar formateado exactamente como:

Num de Clases: 5 <- Número de clases de barcos

acorazado <- Nombre de esta clase

3

Page 4: Mora Torres Batalla de Barco Java Reporte

4 <- Longitud de las naves de esta clase

Purpura <- Color del gráfico que representa las naves de esta clase

(linea en blanco despues de cada clase)

portaviones información de siguiente clase

5

Verde

... y asi para todas las clases ...

Num de Barcos: 7 <- Número de barcos a continuación

USS Enterprise <- Nombre del barco

Acorazado <- Nombre de la clase del barco

(linea en blanco a continuación de la clase)

Andrómeda información de siguiente barco

portaviones

...y asi para todos los barcos...

Se debe probar el programa con varios archivos de datos, en la disquetera a:, que se deben llamar “DatoNaves1”, “DatoNaves2” y así sucesivamente. Al inicio de cada juego el jugador escoge aleatoriamente el archivo a ser usado. Para escogerlo se debe generar un número desde 1 hasta el número de archivos y este número se lo añade a la cadena “DatoNaves”. Cree sus propios archivos como pruebas.

Una ronda del juego

Una ronda del juego consiste en ambos jugadores tomando el turno. Si el juego es contra el computador, el jugador juega primero.

4

Page 5: Mora Torres Batalla de Barco Java Reporte

Existen 5 posibilidades para un disparo:

1. La celda ya ha sido golpeada (indíquele que perdio un disparo)

2. El disparo erró (indíquele que erró y marque la celda)

3. El disparo acertó (felicítelo y marque la celda)

4. El disparo hundió la nave (indíquele el nombre, tipo de nave y posición y márquelo como hundido)

5. El disparo hundió la última nave (felicítelo)

Puede a discreción agregarle sonido y cualquier información adicional que mejore el proyecto.

Problemas Encontrados.Problema 1

Debido a que no somos especialistas en la parte grafica encontramos problemas al tratar de generar los botones

Solución:

Creando un frame con la ayuda de un IDE

5

Page 6: Mora Torres Batalla de Barco Java Reporte

MANUAL DE DISEÑOJUEGO CAMPO DE BATALLA

6

Page 7: Mora Torres Batalla de Barco Java Reporte

Diagramas de Casos de Uso

7

Page 8: Mora Torres Batalla de Barco Java Reporte

Diagrama de clases

8

Page 9: Mora Torres Batalla de Barco Java Reporte

Actores:

1. Usuario.2. Computadora.

Diagrama de Casos de Uso:

1. Ingresar al Juego.2. Comenzar Juego nuevo.3. Ingreso Coordenadas.4. Salir del Juego.

Detalle de los Actores:

Actor: 1

Nombre: Usuario

Descripción: Jugador que tiene que ingresar las coordenadas.

Actor: 2

Nombre: Computadora

Descripción: Jugador que tiene que generar el código aleatoriamente y enviar retroalimentación.

9

Page 10: Mora Torres Batalla de Barco Java Reporte

Detalle de los Casos de Uso.

CU: 1

Nombre: Ingresar al Juego.

Descripción: Inicia el Juego Campo de Batalla mostrando una Interfaz sin el tablero

CU: 2

Nombre: Comenzar Juego

Descripción: Comienza el Juego mostrando un Tablero, donde en la parte de abajo se encuentra unos espacios para poner las coordenadas, en el tablero se mostrara la retroalimentación a cada código.

CU: 3

Nombre: Ingreso coordenadas.

Descripción: El Computador de acuerdo al código generado por el

10

Page 11: Mora Torres Batalla de Barco Java Reporte

Usuario la primera vez ingresa una retroalimentación.

CU: 4

Nombre: Generar Código.

Descripción: El computador genera su coordenada aleatoriamente.

CU: 5

Nombre: Salir.

Descripción: Salir del Juego.

Caso de uso 1: Ingresar al Juego.

Escenario 1.1: Ingreso fue exitoso

11

Page 12: Mora Torres Batalla de Barco Java Reporte

Asunciones:

EL código compilo sin problemas.

Resultados:

Aparece la ventana de ingreso, que pide que ingrese un dato.

Escenario 1.2: Hubo un error al ingresar.

12

Page 13: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El código dio errores al compilar.

Resultados:

No se muestra la ventana de inicio

Caso de uso 2: Comenzar Juego.

Escenario 2.1: Comienzo Exitoso

13

Page 14: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El usuario ingreso del numero de archivo, código compilo correctamente.

Resultados:

Se muestra la interfaz que pide el ingreso de un numero.

Escenario 2.2: Hubo un error al comenzar .

14

Page 15: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El usuario no ingreso un número correcto en un rango entre el 1-6.

Resultados:

Muestra un mensaje pidiendo que ingrese un número correcto.

Caso de uso 3: Ingreso de numero de archivo.

Escenario 3.1: Ingreso Correcto.

15

Page 16: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El código compilo sin errores

Resultados:

Muestra mensaje si acertó o no en un barco.

Escenario 3.1: Ingreso Incorrecto

16

Page 17: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El código no compilo

Resultados:

No muestra el tablero

Caso de uso 4: Generación Código.

Escenario 4.1: Generación Correcta.

17

Page 18: Mora Torres Batalla de Barco Java Reporte

Asunciones:

El código compilo sin errores

Resultados:

Muestra la clave generada.

18

Page 19: Mora Torres Batalla de Barco Java Reporte

Escenario 5: Fin del Juego

Asunciones:

El código compilo sin errores

Resultados:

Fin del Juego Batalla de barcos.

19

Page 20: Mora Torres Batalla de Barco Java Reporte

MANUAL DE USUARIOJUEGO CAMPO DE BATALLA

20

Page 21: Mora Torres Batalla de Barco Java Reporte

Introducción.

El software realizado es una variante del Juego del juego campo de batalla, el cual consiste en que un Jugador debe ingresar un número, el cual representad el archivo que él elige, otro jugador (computador) ingresa otro número, el cual representa al archivo que éste elige. Cada archivo contiene información de los barcos a ser cargados en el tablero. Ambos jugadores ingresan coordenadas del tablero para derribar poco a poco los barcos hasta que uno de los dos gana.

Requisitos

NetBeans IDE 6.9 o versiones posteriores.

21

Page 22: Mora Torres Batalla de Barco Java Reporte

Como ejecutar el Proyecto.Primero copiamos el archivo del proyecto en cualquier directorio, luego abrimos Netbeans 6.9 o superiores, seguimos los siguientes pasos:

1. Dar click Archivo -> Abrir Proyecto y buscamos la carpeta del proyecto en el directorio que lo guardamos.

22

Page 23: Mora Torres Batalla de Barco Java Reporte

2. En la parte derecha tiene que estar el nombre del proyecto, para poder ejecutar el proyecto, el nombre de este debe estar en negritas, sino dar click derecho y click en Establecer como proyecto Principal.

5.- Luego en la barra de herramientas dar click en ejecutar.

23

Page 24: Mora Torres Batalla de Barco Java Reporte

Inicio Campo de Batalla.La primera pantalla que nos aparecerá es la siguiente:

24

Page 25: Mora Torres Batalla de Barco Java Reporte

En esta ventana debemos ingresar el número de archivo que queremos escoger. En el archivo se encuentran los barcos

Luego aparece la ventana del tablero donde se pone las coordenadas en letra y números que son las coordenadas del tablero del computador

Si le acertaste a algún barco se mara inmediatamente la celda donde le diste y sale un mensaje que dice:

25

Page 26: Mora Torres Batalla de Barco Java Reporte

Tanto para el jugador como para la computadora.

26

Page 27: Mora Torres Batalla de Barco Java Reporte

Si no le acertaste sale un mensaje diciendo:

Tanto para el jugador como para la computadora.

Los colores que aparecen an una esquina de la ventana donde está el panel representan a los diferentes barcos

27

Page 28: Mora Torres Batalla de Barco Java Reporte

PROGRAMA FUENTEJUEGO CAMPO DE BATALLA

28

Page 29: Mora Torres Batalla de Barco Java Reporte

Barco.java

package model;

public class barco { // clase que representa a los barcos

public String tipo; // si es acorazado, normal, guerra, buque, portaviones

public int longitud;//número de casillas que ocupará en el tablero

public String color;//color con el cual será identificado según su tipo

public String nombre;//nombre del barco

public int estado;

public int pos_ini;

public int pos_fin;

public barco(String t, int l, String c, String n, int est, int pi, int pf )

{

tipo = t;

longitud = l;

color = c;

nombre = n;

estado = est;

pos_ini = pi;

pos_fin = pf;

29

Page 30: Mora Torres Batalla de Barco Java Reporte

}

public barco()

{

tipo = new String();

longitud = 0;

color = new String();

nombre = new String();

estado = 0;

pos_ini = 0;

pos_fin = 0;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public int getEstado() {

return estado;

}

public void setEstado(int estado) {

this.estado = estado;

}

public int getPos_fin() {

return pos_fin;

}

public void setPos_fin(int pos_fin) {

30

Page 31: Mora Torres Batalla de Barco Java Reporte

this.pos_fin = pos_fin;

}

public int getPos_ini() {

return pos_ini;

}

public void setPos_ini(int pos_ini) {

this.pos_ini = pos_ini;

}

public int getLongitud() {

return longitud;

}

public void setLongitud(int longitud) {

this.longitud = longitud;

}

public String getNombre() {

return nombre;

}

public void setNombre(String nombre) {

this.nombre = nombre;

}

public String getTipo() {

return tipo;

}

public void setTipo(String tipo) {

this.tipo = tipo;

}

}

31

Page 32: Mora Torres Batalla de Barco Java Reporte

Tablero

package model;

import java.awt.*;

public class tablero extends Panel {

public Btn t [][];

public tablero()

{

this.setLayout(new GridLayout(10,11));

//this.setSize(40,40);

t = new Btn[10][11];

for(int i=0;i<10;i++)

for(int j=0;j<11;j++)

{

t[i][j] = new Btn();

//t[i][j].setSize(0,0);

this.add(t[i][j]);

}

}

public Btn[][] getT() {

return t;

}

public void Panel(Btn[][] t) {

this.t = t;

}

public Btn get_panel(int x , int y)

{

return t[x][y];

32

Page 33: Mora Torres Batalla de Barco Java Reporte

}

}

Ventana de inicio

package view;

import java.io.*;

import java.util.Random;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

public class inicio extends javax.swing.JFrame {

fr princ;

Integer num_comp;

/** Creates new form inicio */

public inicio() { // Ventana de bienvenida, en el cual se ingresa el número de archivo

initComponents();

princ= new fr();

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

33

Page 34: Mora Torres Batalla de Barco Java Reporte

private void initComponents() {//function diseñadora de la ventana

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jButton2 = new javax.swing.JButton();

jButton1 = new javax.swing.JButton();

jTextField1 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

jLabel1.setText("Batalla de barcos");

jLabel2.setText("Ingrese un número del 1 al 6");

jButton2.setText("Salir");

jButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt);

}

});

jButton1.setText("Comenzar");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});

jTextField1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jTextField1ActionPerformed(evt);

34

Page 35: Mora Torres Batalla de Barco Java Reporte

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(53, 53, 53)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

.addGroup(layout.createSequentialGroup()

.addComponent(jButton1)

.addGap(64, 64, 64)

.addComponent(jButton2))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel2)

.addGap(18, 18, 18)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(143, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addContainerGap(162, Short.MAX_VALUE)

.addComponent(jLabel1)

.addGap(156, 156, 156))

);

layout.setVerticalGroup(

35

Page 36: Mora Torres Batalla de Barco Java Reporte

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(31, 31, 31)

.addComponent(jLabel1)

.addGap(49, 49, 49)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel2)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(60, 60, 60)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jButton1)

.addComponent(jButton2))

.addContainerGap(103, Short.MAX_VALUE))

);

pack();

}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //evento que valida lo ingresado e inicia el juego

// TODO add your handling code here:

if(this.valida_inicio())

{

Random r = new Random();

this.setVisible(false);

this.dispose();

36

Page 37: Mora Torres Batalla de Barco Java Reporte

princ.setVisible(true);

num_comp = r.nextInt(3)+1;

try {

princ.play(this.jTextField1.getText(), num_comp.toString());

} catch (FileNotFoundException ex) {

Logger.getLogger(inicio.class.getName()).log(Level.SEVERE, null, ex);

} catch (IOException ex) {

Logger.getLogger(inicio.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { //evento que cancela toda acción de la ventana y acaba el juego

// TODO add your handling code here:

this.setVisible(false);

this.dispose();

}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

}

/* public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new inicio().setVisible(true);

37

Page 38: Mora Torres Batalla de Barco Java Reporte

}

});

}*/

public static void main(String a[])

{//main del proyecto

inicio in;

in = new inicio();

in.setVisible(true);

}

public boolean valida_inicio() {//valida los datos ingresados

if (!isNumeric(this.jTextField1.getText()) ) { // valida si el usuario no ingreso basura

JOptionPane.showMessageDialog(null, "Por favor, ingrese numeros y no letras", "alerta", JOptionPane.WARNING_MESSAGE);

this.jTextField1.setText(null);

return false;

}

if(Integer.parseInt(this.jTextField1.getText())<0 || Integer.parseInt(this.jTextField1.getText())>6)

{

JOptionPane.showMessageDialog(null, "Por favor, ingrese numeros entre 1 y 3", "alerta", JOptionPane.WARNING_MESSAGE);

this.jTextField1.setText(null);

return false;

}

return true;

}

private static boolean isNumeric(String cadena) { //funcion para validar strings y enteros

try {

38

Page 39: Mora Torres Batalla de Barco Java Reporte

Integer.parseInt(cadena);

return true;

} catch (NumberFormatException nfe) {

return false;

}

}

// Variables declaration - do not modify

public javax.swing.JButton jButton1;

public javax.swing.JButton jButton2;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

public javax.swing.JTextField jTextField1;

// End of variables declaration

}

public class fr extends javax.swing.JFrame { // Ventana que contiene los tableros

barco bj[];

barco bc[];

//inicio in;

Random r;

int band_turno;

LinkedList eleg_list_jug;

LinkedList eleg_list_comp;

/** Creates new form fr */

public fr() {

initComponents();//inicializa components visuales

39

Page 40: Mora Torres Batalla de Barco Java Reporte

bj = new barco[4]; //cada jugador tendrá 4 barcos

for(int i=0;i<4;i++)

bj[i] = new barco();

bc= new barco[4];

for(int i=0;i<4;i++)

bc[i]= new barco();

r = new Random();

band_turno = 1;

eleg_list_jug = new LinkedList();//lista de celdas que va a ocupar los barcos del jugador

eleg_list_comp = new LinkedList();//lista de celdas que va a ocupar los barcos del computador

//in = new inicio();

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //evento que ejecuta la acción de derribar una celda de un barco

// TODO add your handling code here:

Btn abj, abc;

String let_comp = null;

Integer num_comp;

int suerte;

if(this.valida_inicio())

{

abj = but_ac(this.cx.getText(),Integer.parseInt(this.cy.getText()),2);

if(abj.estado==1)

{

abj.setLabel("X");

abj.estado=2;

40

Page 41: Mora Torres Batalla de Barco Java Reporte

JOptionPane.showMessageDialog(null, "Le diste a un barco del computador", "Turno del jugador", JOptionPane.INFORMATION_MESSAGE);

if(ganador(eleg_list_comp)==true)

{

JOptionPane.showMessageDialog(null,"Felicitaciones, le ganaste al computador");

this.dispose();

return;

}

}

else if(abj.estado == 0)

{

JOptionPane.showMessageDialog(null, "Celda vacía, perdiste el turno", "Turno del jugador", JOptionPane.INFORMATION_MESSAGE);

}

else if(abj.estado == 2)

{

JOptionPane.showMessageDialog(null, "ya le diste a esa celda", "Turno del jugador", JOptionPane.INFORMATION_MESSAGE);

}

//---------------------------------------------------------------------------------------

suerte = r.nextInt(10)+1;

if(suerte==1)

let_comp="A";

else if(suerte==2)

let_comp="B";

41

Page 42: Mora Torres Batalla de Barco Java Reporte

else if(suerte==3)

let_comp="C";

else if(suerte==4)

let_comp="D";

else if(suerte==5)

let_comp="E";

else if(suerte==6)

let_comp="F";

else if(suerte==7)

let_comp="G";

else if(suerte==8)

let_comp="H";

else if(suerte==9)

let_comp="I";

else if(suerte==10)

let_comp="J";

num_comp = r.nextInt(11)+1;

abc = but_ac(let_comp,num_comp,1);

if(abc.estado==1)

{

abc.setLabel("X");

abc.estado=2;

JOptionPane.showMessageDialog(null, "El computador te dió en un barco ("+let_comp+","+num_comp.toString()+")", "Turno del computador", JOptionPane.INFORMATION_MESSAGE);

if(ganador(eleg_list_jug)==true)

{

42

Page 43: Mora Torres Batalla de Barco Java Reporte

JOptionPane.showMessageDialog(null,"Lo siento, el computador ganó");

this.dispose();

return;

}

}

else if(abc.estado == 0)

{

JOptionPane.showMessageDialog(null, "Celda vacía, el computador perdió el turno ("+let_comp+","+num_comp.toString()+")", "Turno del computador", JOptionPane.INFORMATION_MESSAGE);

}

else if (abc.estado == 2)

{

JOptionPane.showMessageDialog(null, "El computador ya le había dado a la celda, perdió el turno ("+let_comp+","+num_comp.toString()+")", "Turno del computador", JOptionPane.INFORMATION_MESSAGE);

}

}

public boolean ganador(LinkedList gan)//function que determina si hay un ganador

{

LinkedList l_btn;

Btn aux;

int contador_1=0;

int contador_2=0;

for(int i=0;i<gan.size();i++)

{

43

Page 44: Mora Torres Batalla de Barco Java Reporte

l_btn = (LinkedList) gan.get(i);

contador_1=0;

for(int j=0;j<l_btn.size();j++)

{

aux = (Btn) l_btn.get(j);

if(aux.estado==2)

contador_1++;

}

if(contador_1==l_btn.size())

contador_2++;

}

if(contador_2==gan.size())

return true;

else

return false;

}

public void play(String arch, String arch2) throws FileNotFoundException, IOException//function qwue inicia el juego

{

//this.jPanel2.setVisible(false);

inicializa_barcos(bj,"datosnaves"+arch+".txt","clasesnaves.txt");

inicializa_barcos(bc,"datosnaves"+arch2+".txt","clasesnaves.txt");

ubica_barcos(bj,1,eleg_list_jug);//1 para el jugador

44

Page 45: Mora Torres Batalla de Barco Java Reporte

ubica_barcos(bc,2,eleg_list_comp);//2 para el computador

}

public void inicializa_barcos( barco b[] , String archivo1, String archivo2) throws FileNotFoundException, IOException, EOFException//function que carga los barcos desde los archivos

{

String arch, arch2;

File ar;

int cont_lin = 0;

int cont_barcos =0;

//ar = new File("C:\\datosnaves1.txt");

BufferedReader bf = new BufferedReader(new FileReader(archivo1));

BufferedReader bf2 = new BufferedReader(new FileReader(archivo2));

//try

//{

while(bf.read()!=-1)

{

arch = bf.readLine();

if(cont_lin !=0)

{

if(!arch.isEmpty() )

{

if(arch.equals("portaviones") || arch.equals("acorazado")|| arch.equals("buque") || arch.equals("normal") || arch.equals("guerra"))

{

b[cont_barcos].setTipo(arch);

}

45

Page 46: Mora Torres Batalla de Barco Java Reporte

else

{

b[cont_barcos].setNombre(arch);

}

if(!b[cont_barcos].getNombre().isEmpty() && !b[cont_barcos].getTipo().isEmpty())

{

cont_barcos++;

}

}

}

cont_lin++;

}

for( int i=0; i<b.length; i++)

{

if(b[i].tipo.equals("portaviones"))

{

b[i].setColor("verde");

b[i].setLongitud(5);

}

if(b[i].tipo.equals("acorazado"))

{

b[i].setColor("blanco");

b[i].setLongitud(4);

}

46

Page 47: Mora Torres Batalla de Barco Java Reporte

if(b[i].tipo.equals("buque"))

{

b[i].setColor("amarillo");

b[i].setLongitud(3);

}

if(b[i].tipo.equals("normal"))

{

b[i].setColor("azul");

b[i].setLongitud(2);

}

if(b[i].tipo.equals("guerra"))

{

b[i].setColor("rojo");

b[i].setLongitud(6);

}

}

}

47