Bordene

Bordene

> LeekScript-veiledning

Du kjenner sikkert til analogien mellom datavariabler og bokser: Navnet på variabelen står på eskens etikett; når du kaller variabelen, ser du bare på hva som er i boksen.

Vel, vi kan lage en lignende analogi mellom malerier og en kommode. En kommode er et møbel som inneholder flere skuffer... et bord er en enhet som inneholder flere variabler. Skjematisk er det alt.

Initialiser en matrise

En matrise er representert med firkantede parenteser. Eksemplet nedenfor lager en tom matrise:

var foo = [];

Vi gjenkjenner søkeordet var som vi allerede bruker for variabler. foo er derfor en matrisetypevariabel.

var frukt = ["løk", "banan", "eple"];

Her har vi initialisert matrisen med 3 verdier. I utgangspunktet legger vi kjeden "løk" i den første skuffen, "banan" i den andre og "eple" i den tredje. Hvis vi hadde snudd de første 2 fruktene, ville vi hatt et annet bilde.

Det er fint å rydde opp, men du må vite hvordan du bruker det... Vel, det er enkelt hvis du vet hvordan du teller fra 0 (fordi i databehandling liker vi å telle fra null!)

Den første skuffen bærer tallet 0, den andre tallet 1 og den tredje tallet 2. Hvis vi hadde en tabell med 100 celler, ville den siste derfor bære tallet 99. Ok, hva nå? Det er enkelt å bruke en boks, bare angi nummeret mellom firkantede parenteser:

debug( frukt[1] );

Dette eksemplet vil derfor vise boks nummer 1 (den andre boksen, derfor) i tabellen kalt frukt. Her vil den derfor vise strengen "banan".

Hva om vi vil endre verdien? Ingenting kan være enklere, vi gjør som for variablene, og spesifiserer alltid boksen som skal endres:

frukt[1] = "kirsebær"; debug( frukt ); // vil gi ut ["løk", "kirsebær", "eple"]

Enkelt, ikke sant?

Hva om jeg ber om en boks som ikke finnes? I det forrige eksemplet spør jeg frukt[3]?

Godt sett! Den tredje boksen er nummer 2, så boks nummer 3 finnes ikke! I dette tilfellet returneres verdien ''null''.

Vel, jeg prøvde deg med koden nedenfor, og den viser rare ting, ser ut som jeg har ødelagt alt!

var frukt = ["løk", "banan", "eple"]; debug( frukt ); // vil gi ut ["løk", "banan", "eple"] frukt[3] = "ananas"; debug( frukt ); // vil gi ut ["løk", "banan", "eple", "ananas"] frukt[50] = "kirsebær"; debug( frukt ); // vil gi ut [0:"løk", 1:"banan", 2:"eple", 3:"ananas, 50:"kirsebær"]

Ikke bekymre deg, unge Padawan, du har ikke ødelagt noe i det hele tatt! Siden boksene mellom det siste elementet i arrayen (nummer 3) og det du vil legge til (nummer 50) ikke eksisterer, vil leekscriptet gjorde arrayen din til en assosiativ array. Jeg skal forklare deg det på slutten av denne opplæringen. Tenk for øyeblikket på at det er en normal tabell der det er et hull i nummereringen av cellene.

Noen leewars-funksjoner gir oss direkte en rekke. Dette er for eksempel tilfellet med funksjonen getAliveEnemies.

Bla gjennom en tabell

motstandere? Jeg vet ikke hvor mange det er og jeg kommer ikke til å gjøre alt for hånd!*

Effektivt. Den første ideen ville være å gjøre

var enemies = getAliveEnemies(); debug( getName(enemies[0])); debug( getName(enemies[1])); debug( getName(enemies[2])); debug( getName(enemies[3])); debug( getName(enemies[4]));

Men hvis det er mer enn 5 fiender, vil det være mangel, og hvis det er færre, er det ekstra linjer! For å finne ut hvor mange kvadrater en matrise har, er funksjonen antall.

var nbEnemies = count(enemies); debug("det er " + nbEnemies + " fiender fortsatt i live.");

Nå, hvordan krysse bordet uten å slite? Hvis du for eksempel vil vite hvor hindringene er på kartet, er getObstacles noe for deg... Men bordet har omtrent hundre bokser... ikke praktisk å gjøre en etter en! Det er nå Les Boucles avslører sitt fulle potensial!

var obstacles = getObstacles(); var nbObstacles = count(hindringer);

for (var k=0; k<nbhindringer; k++) { debug("boks " + hindringer[k] + " er en hindring."); }

For mer presisjon, gå tilbake til opplæringen om The Loops.

Så for navnet på fiendene, ville hele manuset være

var enemies = getAliveEnemies(); var nbEnemies = count(enemies); for (var k=0; k<nbEnemies; k++) { var fiendenavn = getName( fiender[k] ); debug( fiendenavn + " er fortsatt i live."); }

Legge til og fjerne elementer

Vi har allerede sett hvordan du legger til et element i en matrise, men det er ikke praktisk fordi du må gjøre det hele tiden appellerer til størrelsen på matrisen.

For å gjøre livet enklere, kan du ganske enkelt bruke push-funksjonen.

var frukt = ["løk", "banan", "eple"]; push(f