Comunidad de diseño web y desarrollo en internet online

Ayuda con Array bidimensional

Citar            
MensajeEscrito el 31 May 2011 08:32 pm
Buenas

Estoy haciendo el ranking de un pequeño juego y de momento la cosa no me va mal del todo.

Estoy usando un Array bidimensional donde tengo por un lado el nombre del jugador y por otro su puntuacion.

El problema lo tengo a la hora de ordenar el array en funcion de las puntuaciones. He estado leyendo y buscando y creo que tengo que utilizar el metodo de ordenamiento de la burbuja, pero la duda me surge al intentar aplicarlo a la segunda columna de mi matriz.

Podeis echarme una mano?

Gracias

Por OSAMA_almeria

20 de clabLevel



 

Almeria

msie
Citar            
MensajeEscrito el 01 Jun 2011 02:11 pm
Si por método de la burbuja te refieres a Bubble Sort, en realidad no es necesario que lo apliques manualmente si tuvieras un array de objetos, porque ya tienes un método sortOn que ordena por una propiedad específica.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:29 pm
Buenas solisarg. En primer lugar gracias por contestar.

He estado investigando sobre el metodo sortOn que me comentas, pero hago algo mal y no se lo que es.

Te cuento.

Por un lado tengo la declaracion del array

Código ActionScript :

var rank_array:Array = new Array();
rank_array.push({nombre: "aaa", puntuacion: 100});
rank_array.push({nombre: "bbb", puntuacion: 90});
rank_array.push({nombre: "ccc", puntuacion: 80});
rank_array.push({nombre: "ddd", puntuacion: 70});
rank_array.push({nombre: "eee", puntuacion: 60});
rank_array.push({nombre: "fff", puntuacion: 50});
rank_array.push({nombre: "ggg", puntuacion: 40});
rank_array.push({nombre: "hhh", puntuacion: 30});
rank_array.push({nombre: "iii", puntuacion: 20});
rank_array.push({nombre: "jjj", puntuacion: 10});
for(i=0; i<10; i++){
    trace(rank_array[i].nombre + ", " + rank_array[i].puntuacion);
   this['nombre' +i +'_txt'].text = rank_array[i].nombre;
   this['puntos' +i +'_txt'].text = rank_array[i].puntuacion;
}

Lo que he hecho es introducir un listado base y luego mostralo en la tabla de resultados (solo muestra los 10 mejores).

Por otro lado, y tras introducir el nombre en un input text (por cierto, no se si es mejor utilizar un input text o un texto dinamico), tengo un boton aceptar en el que al pulsar me añade el nuevo nombre (variable 'entradanombre') con su puntacion (variable 'entradapuntos'), los ordena y muestra en la tabla de resultados los 10 mejores:

Código ActionScript :

on (release) {
   rank_array.push({nombre: entradanombre, puntuacion: entradapuntos});
   rank_array.sortOn("puntuacion", Array.DESCENDING | Array.NUMERIC); 
   for(i=0; i<10; i++){
               trace(rank_array[i].nombre + ", " + rank_array[i].puntuacion);
   this['nombre' +i +'_txt'].text = rank_array[i].nombre;
   this['puntos' +i +'_txt'].text = rank_array[i].puntuacion;
               }
}


Pero no me funciona bien, y no se porque, la verdad

Por OSAMA_almeria

20 de clabLevel



 

Almeria

msie
Citar            
MensajeEscrito el 01 Jun 2011 08:40 pm
¿No funciona bien significa que está ordenando la puntuación como String en vez de como Number?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Jun 2011 12:44 pm
Juer, jurraria que te habia contestado la otra noche.

Te cuento. de raiz tenemos la tabla:

aaa, 100
bbb, 90
ccc, 80
ddd, 70
eee, 60
fff, 50
ggg, 40
hhh, 30
iii, 20
jjj, 10

Pues bien, si meto un nombre (jorge) con una puntuacion de 75 puntos, el resultado que me da la tabla es el siguiente:

jorge, 75
aaa, 100
bbb, 90
ccc, 80
....

Si meto un nombre mas (antonio) con una puntuacion de 200 puntos, la tabla me muestra esto:

bbb, 90
ccc, 80
jorge, 75
ddd, 70
eee, 60
fff, 50
ggg, 40
hhh, 30
antonio, 200
aaa, 100

Asi que no tengo muy claro que criterio usa para ordenar los datos, la verdad.

Por OSAMA_almeria

20 de clabLevel



 

Almeria

msie
Citar            
MensajeEscrito el 04 Jun 2011 12:53 pm
Los está tomando como String, mirate el método Array.map y arma tu propia función de sort

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.