Java - Ayuda matriz

   
Vista:

Ayuda matriz

Publicado por Lorenzo (3 intervenciones) el 29/05/2015 17:08:23
Hola amigos, soy nuevo en el foro y busco un poco de ayuda, quisiera que me ayudaran pues estoy tratando de llenar una matriz con valores en posiciones al azar(no numeros al azar) para hacer una especie de juego de memoria, donde debes allar las parejas y se iran volviendo visibles, pero estoy intentando lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static int [][] llenamatriz(int[][] matriz, int fil, int col){
	Random al = new Random();
		int m = 0;	int p = 5;
	for(int i = 0;i < fil;i++){
		for(int j = 0;j < col;j++){
			while(m<2){
			matriz[al.nextInt(5)][al.nextInt(4)] = p ;
			m++;
			}
			p++;
		}
	}
	return matriz;
}

y de hecho funciona me pone el valor 5 únicamente 2 veces, y lo pone en posiciones aleatorias de la matriz pero, cuando , realiza esta accion mas veces me llena con numeros la matriz que supongo son aleatorios en los parametros que le puce al random, pero no entiendo por que si lo puse dentro de la posicion de la matriz, o quizas no sea esta la forma adecuada de hacerlo, soy algo nuevo en esto, y espero que me puedan ayudar con esto..

Gracias de antemano
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

Ayuda matriz

Publicado por Andrés (231 intervenciones) el 02/06/2015 17:16:13
La matriz que pases, inicializala con todos los elementos iguales a -1, es decir: int[][] matriz = {{-1,-1},{-1,-1},{-1,-1}};

El método modificalo así:

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
public static int[][] llenamatriz(int[][] matriz) {
        final int NO_OCUPADO = -1;
        Random al = new Random();
 
        int filas = matriz.length;
        int columnas = matriz[0].length;
 
        int m = 0;
        int p = 5;
 
        for (int i = 0; i < filas; i++) {
            m = 0;
            for (int j = 0; j < columnas; j++) {
 
                int nextFila = al.nextInt(filas);
                int nextColumna = al.nextInt(columnas);
 
                while (m < 2) {
 
                    if (NO_OCUPADO == matriz[nextFila][nextColumna]) {
                        matriz[nextFila][nextColumna] = p;
                        m++;
                    } else {
                        nextFila = al.nextInt(filas);
                        nextColumna = al.nextInt(columnas);
                    }
 
                }
 
                p++;
 
            }
 
        }
 
        return matriz;
 
    }
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