Java - Array - Error en el juego hundir la flota

 
Vista:

Array - Error en el juego hundir la flota

Publicado por David (7 intervenciones) el 23/05/2017 11:24:31
Buenos días:

Estoy haciendo un ejercicio de hundir la flota, y no se porque me genera error en algunas lineas del código, os pongo en negrita y subrayadas las lineas que me generan error.

Si alguien pudiera ayudarme, muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package main;
 
import java.util.Scanner;
 
public class JuegoHundirLaFlota extends Juego {
 
    private int[][] matriz;
    private static final int NUM_CASILLAS = 3;
 
    private int contadorAciertos;
 
    public int[][] getMatriz() {
        return matriz;
    }
 
    public void setMatriz(int[][] matriz) {
        this.matriz = matriz;
    }
 
    public int getContadorAciertos() {
        return contadorAciertos;
    }
 
    public void setContadorAciertos(int contadorAciertos) {
        this.contadorAciertos = contadorAciertos;
    }
 
    public JuegoHundirLaFlota(String nombre, int vidas, int[][] matriz) {
 
        super(nombre, vidas);
 
        this.matriz = matriz;
 
    }
 
    public int leerInt() {
 
        return new java.util.Scanner(System.in).nextInt();
 
    }
 
       @Override
 
    public int juega() {
 
        mostrarCabeceraJuego();
 
        boolean completo;
 
        contadorAciertos = 0;
 
        do {
 
            int[][] posicion = solicitarPosicion();
 
            completo = evaluarAcierto(posicion);
 
        } while (!completo && getVidas() > 0);
 
        actualizarRecord();
 
        return getVidas();
 
    }
 
    private void mostrarCabeceraJuego() {
 
        System.out.println("El juego de Hundir la flota\n" + "Inserta coordenadas: ");
 
    }
 
    private int[][] solicitarPosicion() {
 
        

int[][] posicion = new int[][];

 
        System.out.println("Introduce fila");
 
        

posicion[0] = leerInt();

 
        System.out.println("Introduce columna");
 
        

posicion[1] = leerInt();

 
        return posicion;
 
    }
 
    private boolean evaluarAcierto(int[][] posicion) {
 
        

if (matriz[posicion[0], posicion[1]] == 1){

 
             contadorAciertos++;
 
              setVidas(getVidas() + 1);
 
              System.out.println("Tocado");
 
        } if (getVidas() == 0) {
 
            System.out.println("No te quedan más vidas");
 
        }
           else {
 
            setVidas(getVidas() - 1);
 
            System.out.println("Agua, te quedan " + getVidas() + " vidas");
 
        }
 
        return contadorAciertos == NUM_CASILLAS;
 
     }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Array - Error en el juego hundir la flota

Publicado por Tom (1831 intervenciones) el 23/05/2017 14:27:51
Muy bien y ¿ qué error ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 358
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Array - Error en el juego hundir la flota

Publicado por Nicolas (137 intervenciones) el 23/05/2017 18:36:34
Hola David.
Uno de los errores que tienes es cuando dimensionas el array para la posición, por ejemplo en la linea 74. Deberías darle el tamaño correspondiente.
El otro error no es al leer el numero de fila o columna sino cuando se lo quieres asignar a la posición, es un array de n-dimensión y tu se lo quieres hacer a un vector.
Espero que te aclare un poco el panorama.
Abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array - Error en el juego hundir la flota

Publicado por David (7 intervenciones) el 24/05/2017 13:19:49
Gracias por la respuesta ya he encontrado los errores que cometía.

El primero es que en el do, ponia esto int[][] posicion = solicitarPosicion(); cuando tenia que poner esto int[] posicion = solicitarPosicion();
entonces en solicitar posisicon() ya solo tenia que hacer un int[] posicion = new int[4]; y ya salía,no se porque queria poner 2. Y el último error que tenía era que puse una coma que no tenía que poner en el if cambiando antes tambien esto private boolean evaluarAcierto(int[] posicion) { if (matriz[posicion[0]] [posicion[1]] == 1){ ....

Luego he modificado alguna cosilla más para que cuando termine ponga Hundido con otro if. if(contadorAciertos==3){System.out.println("y Hundido");}

y Listo.

Muchas gracias por todo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar