Diskuze: Porovnání čísel
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Napsal bych si skript, který lodě seřadí podle zkušeností a vrátí
id lodi o daném pořadí.
Jde to určitě dělat různě. Můžeš třeba využít
ds_grid a funkci ds_grid_sort, nějak
takto:
///get_Nth_sorted(N);
G=ds_grid_create(2,instance_number(lod));
counter=0;
with(lod)
{
ds_grid_set(other.G,0,other.counter,id)
ds_grid_set(other.G,1,other.counter,zkusenosti)
other.counter++
}
ds_grid_sort(G,1,true);
return(ds_grid_get(G,0,argument0));
Jde o ukázku postupu ( Ctrl+C a Ctrl+V nebude fungovat ), před použitím je kód nutné pochopit, odladit a doplnit o testy kritických stavů ( např. co bude vracet, když žádné lodě nebudou ).
Díky moc za inspiraci, ale já jsem s gridama ještě nepracoval, takže jsem si to trochu nastudoval. Tohle jsem vymyslel, pro inspiraci:
(řazení od nejvyššího).....
myscore01 = 100;
myscore02 = 15;
myscore03 = 20;
myscore04 = 40;
list = ds_list_create();
ds_list_add(list,myscore01);
ds_list_add(list,myscore02);
ds_list_add(list,myscore03);
ds_list_add(list,myscore04);
ds_list_sort(list,false);
Co na to říkáš?
To by bylo určitě v pořádku, pokud bys nepotřeboval vědět, která
instance tu nejvyšší hodnotu má. Jinak jde samozřejmě použít některý z
řadicích algoritmů:
http://www.itnetwork.cz/…ritmy/razeni
a pak je celkem jedno, jakou pro ukládání použiješ datovou strukturu.
Taky by asi šlo použít priority frontu s tím, že priorita == zkušenost
lodi.
Nejrychlejší ukládaní dat v GMS je klasické pole A[1]..A[N], ale
řadící skript si pak musíš napsat. Pole žádný autosort nemá. Pokud
máš ale jen pět lodí, tak na rychlosti asi nesejde.
Nicméně je docela slušné cvičení si nějaké to řazení v GML napsat.
Zobrazeno 4 zpráv z 4.