Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    problema array indicizzato random

    buongiorno a tutti. Cerco di sintetizzare al massimo il problema con Actionscript2.
    Ho 18 numeri (1-18) divisi in 3 variabili da 6. Ad ogni run un numero uscito dallo script deve essere tolto dalla variabile dove è presente.
    così funziona:

    var linea1:Array = (1,2,3,4,5,6);
    var linea2:Array = (7,8,9,10,11,12);
    var linea3:Array = (13,14,15,16,17,18);

    function getArrayIndex(src:Array, value:Object):Number
    {
    var item_count:Number = src.length;
    for(var i:Number = 0; i < item_count; i++)
    {
    if(src[i] == value)
    {
    return i;
    }
    }

    return -1;
    }
    if (getArrayIndex(linea1, numero) >= 0) {
    linea1.splice (getArrayIndex(linea1, numero),1);
    }
    if (getArrayIndex(linea2, numero) >= 0) {
    linea2.splice (getArrayIndex(linea2, numero),1);
    }
    if (getArrayIndex(linea3, numero) >= 0) {
    linea3.splice (getArrayIndex(linea3, numero),1);
    }
    Se invece, come a me servirebbe. le tre variabili le riempio in modo random con il seguente script:
    numeri=new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 );
    var uscite:Array = new Array();
    for(m=0;m<19;m++){
    if (numeri.length>0){
    uscite.push(numeri.splice(random(numeri.length),1) )
    }
    }
    var linea1:Array = new Array();
    var linea2:Array = new Array();
    var linea3:Array = new Array();
    for ( f=0;f<6;f++)
    {
    linea1.push (uscite[f]);
    }
    for ( f=6;f<12;f++)
    {
    linea2.push (uscite[f]);
    }
    for ( f=12;f<18;f++)
    {
    linea3.push (uscite[f]);
    }
    non funziona e mi restituisce sempre valore -1 nonostante trace mi dia correttamente tre linee da sei numeri corrispondenti alla matrice random "uscite". PERCHE'?
    Sto diventando scemo, spero quindi in un aiuto del quale rigrazio anticipatamente.
    Ovviamente se esiste altro modo per ottenere la cosa (linee random da cui togliere il numero presente in esse) va bene lo stesso

  2. #2
    risolto in questo modo:

    for ( f=0;f<6;f++)
    {
    linea1.push (String(uscite[f]));
    }
    for ( f=6;f<12;f++)
    {
    linea2.push (String(uscite[f]));
    }
    for ( f=12;f<18;f++)
    {
    linea3.push (String(uscite[f]));
    }
    Array.prototype.getIndex = function(value:Object):Number
    {
    var item_count:Number = this.length;
    for(var i:Number = 0; i < item_count; i++)
    {
    if(this[i] == value)
    {
    return i;
    }
    }

    return -1;
    }
    la cosa strana è che il numero mandato dallo script non era stringa ..mah...mistero.
    Un grazie comunque a chi si è interessato.
    Ciao a tutti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.