Java - insertar elementos en una matriz en posiciones aleatorias

   
Vista:

insertar elementos en una matriz en posiciones aleatorias

Publicado por David (2 intervenciones) el 29/12/2014 13:48:33
Hola buenas, estoy desarrollando el juego de "hundir la flota" o "batalla naval" en java swing y quiero hacer que aparezcan los barcos aleatoriamente en el tablero, en este caso es un panel gridLayout de 8 filas y 8 columnas que contiene botones, el tema es que intento asignar un índice aleatorio pero al hacerlo se seleccionan varios índices, mi código para ello es el siguiente:

1
2
3
4
5
for(int ri=new Random().nextInt(8);ri<b1.length;ri++){
                      for(int rj=new Random().nextInt(8);rj<b1.length;rj++){
                         b1[ri][rj].setIcon(barco);
                 }
        }

Donde b1 es la matriz y barco es una imagen que le añado al botón para que se vea que es un barco

Al ejecutarlo el resultado no es el esperado, ya que me selecciona muchos botones como barcos y solo quiero añadir un botón como barco.

Para ello he probado lo siguiente:

1
2
3
4
5
for(int ri=new Random().nextInt(8);ri<b1.length;ri++){
            for(int rj=new Random().nextInt(8);rj<b1.length;rj++){
                b1[new Random().nextInt(1)][new Random().nextInt(1)].setIcon(barco);
            }
        }

Y de esta manera si me coloca un solo barco, pero siempre me lo coloca en la posición b1[0][0].

Espero que podáis ayudarme un poco.

Muchas gracias y un saludo! :D
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

insertar elementos en una matriz en posiciones aleatorias

Publicado por Pedro (81 intervenciones) el 30/12/2014 21:30:31
Buenas,

Con ese fragmento de código es difícil ayudarte. Lo que sí te puedo decir es que ese trozo de código puede machacar posiciones en el array ya que aleatoriamente se puede dar dos veces la posicion 1,2 por ejemplo.
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
Imágen de perfil de juan esteban

insertar elementos en una matriz en posiciones aleatorias

Publicado por juan esteban (21 intervenciones) el 30/12/2014 21:46:20
hola ..lo que dice Pedro es verdad aunq seria algo asi como una loteria q cayeran los mismos datos en las dos posisciones ...

ensaya esto

1
2
3
4
5
6
7
for(int ri=new Random().nextInt(8);ri<b1.length;ri++){
            for(int rj=new Random().nextInt(8);rj<b1.length;rj++){
 
                b1[new Random().nextInt(8)][new Random().nextInt(8)].setIcon(barco);
 
            }
        }

suponiendo que la Matriz sea de 9x9
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