Actionscript 3 (AS3) – Mischiare a caso gli elementi di un Array (Shuffle)
Ciao a tutti, scrivo questo post tecnico veloce per segnalarvi una possibile soluzione ad un problema che ho incontrato spesso ultimamente, nell’ambito dello sviluppo in Actionscript3. Come mischiare a caso gli elementi di un array?
Dal lato pratico è una cosa piuttosto comune: basti pensare ad un mazzo di carte e al fatto che in un qualsiasi gioco si debba mischiare. Come fare? Ecco una soluzione.
Il trucco sta nell’usare questa funzione che riporto di seguito:
public function Shuffle(a:Array):Array
{
var r:int;
var res:Array = new Array();
while (a.length > 0)
{
r = Math.floor(Math.random() * a.length);
res.push(a[r]);
a.splice(r, 1);
}
return res;
}
Il codice è semplice da spiegare: viene preso in input come argomento l’array da ordinare. Prendendo un numero a caso da zero alla lunghezza dell’array stesso, si usa questo numero come indice da usare per l’operazione di push nell’array risultante.
Fatto questo n volte, dove n è la grandezza iniziale dell’array, la lunghezza dell’array iniziale è 0, quindi si esce dal ciclo per restituire l’array ordinato in return. Ovviamente non si deve dimenticare l’operazione di Splice, per evitare di rimanere all’infinito nel ciclo.
Buon Lavoro!



