Le tavole

Le tavole

> Tutorial LeekScript

Sicuramente conosci l'analogia tra le variabili del computer e le scatole: il nome della variabile è sull'etichetta della scatola; quando chiami la variabile, guardi solo cosa c'è nella scatola.

Bene, possiamo fare un'analogia simile tra i quadri e una cassettiera. Una cassettiera è un mobile che contiene diversi cassetti... un tavolo è un'entità che contiene diverse variabili. Schematicamente, questo è tutto.

Inizializza un array

Un array è rappresentato da parentesi quadre. L'esempio seguente crea un array vuoto:

var foo = [];

Riconosciamo la parola chiave var che già usiamo per le variabili. foo è quindi una variabile di tipo array.

var frutto = ["pera", "banana", "mela"];

Qui abbiamo inizializzato l'array con 3 valori. In pratica mettiamo la catenella "pera" nel primo cassetto, "banana" nel secondo e "mela" nel terzo. Se avessimo invertito i primi 2 frutti, avremmo avuto un'immagine diversa.

È bello riordinare, ma bisogna saperlo usare... Bene, è semplice se sai contare da 0 (perché in informatica ci piace contare da zero!)

Il primo cassetto porta il numero 0, il secondo il numero 1 e il terzo il numero 2. Se avessimo una tabella con 100 celle, l'ultimo porterebbe quindi il numero 99. Okay, e adesso? È semplice, per utilizzare una casella basta indicarne il numero tra parentesi quadre:

debug( frutto[1] );

Questo esempio visualizzerà quindi la casella numero 1 (la seconda casella, quindi) della tabella denominata frutti. Qui verrà quindi visualizzata la stringa "banana".

E se volessimo cambiare il valore? Niente di più semplice, facciamo come per le variabili, specificando sempre la casella da modificare:

frutta[1] = "ciliegia"; debug (frutto); // produrrà ["pera", "ciliegia", "mela"]

Semplice, vero?

Cosa succede se chiedo una scatola che non esiste? Gentile nell'esempio precedente, chiedo frutta[3]?

Ben visto! La terza casella è la numero 2, quindi la casella numero 3 non esiste! In questo caso, viene restituito il valore ''null''.

Beh, ho provato la tua cosa con il codice qui sotto e mostra cose strane, sembra che io abbia rotto tutto!

var frutto = ["pera", "banana", "mela"]; debug (frutto); // produrrà ["pera", "banana", "mela"] frutta[3] = "ananas"; debug (frutto); // produrrà ["pera", "banana", "mela", "ananas"] frutta[50] = "ciliegia"; debug (frutto); // produrrà [0:"pera", 1:"banana", 2:"mela", 3:"ananas, 50:"ciliegia"]

Non preoccuparti, giovane Padawan, non hai rotto proprio niente! Poiché le caselle tra l'ultimo elemento dell'array (numero 3) e quello che vuoi aggiungere (numero 50) non esistono, il leekscript ha trasformato il tuo array in un array associativo. Te lo spiegherò alla fine di questo tutorial. Per il momento considerate che si tratta di una normale tabella dove c'è un buco nella numerazione delle celle.

Alcune funzioni di leekwars ci danno direttamente un array. Questo è ad esempio il caso della funzione getAliveEnemies.

Sfoglia una tabella

Tutto molto bene. Ora so come creare tabelle ma come faccio, ad esempio, a visualizzare i nomi di tutti avversari? Non so quanti siano e non ho intenzione di fare tutto a mano!

Effettivamente. La prima idea sarebbe quella di fare

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

Ma se ci sono più di 5 nemici, ci sarà carenza, e se ce ne sono meno, ci saranno linee extra! Per scoprire quanti quadrati ha un array, la funzione è count.

var nbNemici = count(nemici); debug("ci sono " + nbNemici + " nemici ancora vivi.");

Ora, come attraversare il tavolo senza lottare? Ad esempio, se vuoi sapere dove si trovano gli ostacoli sulla mappa, getObstacles fa per te... Ma il tavolo ha un centinaio di scatole... non pratico da fare una per una! È ora che i Cicli rivelano tutto il loro potenziale!

var ostacoli = getObstacles(); var nbOstacoli = conta(ostacoli);

for (var k=0; k<nbOstacoli; k++) { debug("box " + ostacoli[k] + " è un ostacolo."); }

Per maggiore precisione, torna al tutorial su Cicli.

Quindi per il nome dei nemici, l'intera sceneggiatura sarebbe

var nemici = getAliveEnemies(); var nbNemici = count(nemici); for (var k=0; k<nbNemici; k++) { var nomenemico = getNome( nemici[k] ); debug(nomenemico + "è ancora vivo."); }

Aggiunta e rimozione di elementi

Abbiamo già visto come aggiungere un elemento in un array ma non è pratico perché devi farlo costantemente fare appello alla dimensione dell'array.

Per semplificarti la vita, puoi semplicemente usare la funzione push.

var frutto = ["pera", "banana", "mela"]; push (f