Cicli

Cicli

> Tutorial LeekScript

Prima o poi, quando inizi a programmare, dovrai ripetere più volte la stessa istruzione:

var nemico = getNearestEnemy();

useWeapon(nemico); useWeapon(nemico); useWeapon(nemico); useWeapon(nemico);

Questo potrebbe non essere un problema quando si tratta di sparare 3-4 volte, ma quando vuoi fare algoritmi più avanzati, probabilmente dovrai ripetere le istruzioni diverse dozzine di volte, o anche un numero di volte variabile, che poi non può essere fatto in questo modo. È qui che entrano in gioco i loop. Un ciclo è un elemento di codice che permette di ripetere tutte le volte che è necessario una sequenza di istruzioni. Ogni volta che si ripete il codice contenuto in un ciclo si parla di iterazione.

var nemico = getNearestEnemy();

for(var i = 0; i < 4; i++) { useWeapon(nemico); } //è subito più bello :)

A seconda di cosa vuoi fare, ci sono diversi tipi di loop che vedremo di seguito: loop "for", "while", "do while", "foreach". Probabilmente sono molti loop diversi e il loro nome può sembrare barbaro, ma ognuno ha un uso particolare, come vedremo di seguito.

ciclo while

Questo ciclo è il più semplice di tutti. Mentre significa "Finché... Do...", questo ciclo permette quindi di ripetere una sequenza di istruzioni Finché una data condizione è verificata. La condizione e l'istruzione possono essere qualsiasi cosa, ad esempio: parlare mentre ho punti azione, andare avanti mentre ho punti movimento, ...

La sua sintassi è la seguente:

mentre(condizione) { Istruzioni; }

Naturalmente, "condizione" e "istruzioni" dovrebbero essere sostituite con ciò che è necessario.

Ciclo do-while

Questo ciclo è in realtà molto simile al ciclo while visto in precedenza, tranne per il fatto che esegue le istruzioni almeno una volta prima di testare la condizione. Se un ciclo while potesse essere tradotto come "Finché... Do...", il ciclo do-while sarebbe piuttosto tradotto come "Fai... Finché..."

La sua sintassi è abbastanza simile a quella del ciclo while, ma traduce bene le sfumature tra i due:

do {// prima eseguiamo le istruzioni Istruzioni; }while(condition);//poi guardiamo la condizione

per ciclo

Il ciclo for viene utilizzato principalmente per utilizzare un contatore. La sua sintassi è un po' più voluminosa di quella degli altri loop, ma permette di evidenziare le caratteristiche importanti di questo.

La sua sintassi è:

for(inizializzazione; condizione; operazione) { Istruzioni; }

La condizione funziona allo stesso modo della condizione di un ciclo while, ma sono apparsi due nuovi elementi: l'inizializzazione e l'operazione. Questi due elementi permettono poi di creare il contatore del ciclo (in genere si tratta di creare o modificare una variabile), e di aggiornarlo.

Ad esempio, per sparare tre volte, puoi fare:

var nemico = getNearestEnemy();

for(var contatore = 0; contatore < 3; contatore += 1) { useWeapon(nemico); }

Possiamo notare che questo codice può essere creato anche con i cicli precedenti:

var nemico = getNearestEnemy();

var contatore = 0; while(contatore < 3) { contatore += 1; useWeapon(nemico); }

Ma qui il contatore e il suo incremento non sono evidenziati, cosa che la sintassi del ciclo for permette di fare.

ciclo foreach

Questo ciclo è un po' speciale: è specializzato nell'attraversare gli elementi di un array. Invece, significherebbe "Per ogni [elemento dell'array] Do...".

Può essere utilizzato in due modi diversi, a seconda delle esigenze:

for(var valore nell'array) { //ad ogni iterazione del ciclo, value sarà un elemento dell'array. Istruzioni; }

A volte può essere necessario conoscere la posizione dell'elemento studiato, la sintassi appropriata è allora:

for(posizione var: valore var nell'array) { //ad ogni iterazione del ciclo, value sarà un elemento dell'array e posizionerà la sua posizione nell'array, quindi avremo: array[posizione] == valore Istruzioni; }

Ad esempio, per ottenere l'elenco degli effetti che avrà un chip, puoi fare:

for(effetto var in getChipEffects(CHIP_DEVIL_STRIKE)) { if(effetto[0] == EFFETTO_DAMAGE) say("fa male"); }

Nota: le variabili "posizione" e "valore" possono essere create prima del ciclo:

valore var, posizione; for(posizione: valore nell'array) { //ad ogni iterazione del ciclo, value sarà un elemento dell'array. Istruzioni; }

Devi stare attento con questo ciclo: la modifica dell'array durante la sua esecuzione può infatti causare fastidiosi bug nel tuo codice, quindi questo deve essere evitato il più possibile.

Importante A partire dalla versione 1.17 del 31 ottobre 2020, la sintassi for (var key: var @value in array) può essere utilizzata per navigare