Keresés

Új hozzászólás Aktív témák

  • vanek

    tag

    válasz axioma #8775 üzenetére

    Köszönöm szépen! Hogy ezt nem vettem észre.. :W

    Természetesen így már tökéletesen működik a program..

    Köszi! :R :R

  • vanek

    tag

    Üdv!

    Szeretnék készíteni egy flash-játékot: http://ingyenesjatek.hu/globs.html

    El is jutottam addig, hogy be tudom színezni olyan színűre az első összefüggő területet amilyenre akarom, de onnantól kezdve mindig csak ugyan azt a területet színezi át. Nem halad tovább a "terjeszkedéssel".

    A kód lényege, hogy mindig a bal felső sarokból kezdem a bejárást és megkeresem az összes azonos színű szomszédját, majd átszínezem őket a választott színre.

    A kód pedig így néz ki:

    X = 10; // a pálya mérete
    Y = 10; //
    var tabla:Array = []; // tabla tomb tartalmazza a i,j pozición levő MC-t
    darab = 0; // hány bogyó ment már ki
    var lepesek;
    meretx = 25; // a bogyók mérete
    merety = 25;
    init();

    function init() {
    lepesek=0;
    var i, j;
    for ( i = 0; i < X; i++ ) {// minden oszlopra
    tabla[i]= []; // tabla tömb oszlopai is mind tömbök
    for ( j = 0;j < Y; j++) {// minden sorra
    _root.attachMovie("pont", "b"+darab, darab );
    var b:MovieClip = eval("b"+darab++);
    tabla[i][j] = b; // au új MC az i,j pozicióra kerül
    b.szin = Math.floor((Math.random() * 5)+1); //színkód
    b.x = i; // minden bogyo tudja, hogy ő hanyadik oszlopban van
    b.y = j; // és h. hanyadik sorban
    b._x = kepx(i); // pozicionálás a képernyőn
    b._y = kepy(j); // y irányban is
    b.gotoAndStop(b.szin); // mutassa a megfelelő színét

    }
    }
    }


    function klikk(szam)
    {

    var db=0;
    var i,j;
    var list:Array = []; // a feldolgozandó szomszédok listája
    var szomszed:Array = []; // a feldolgozott szomszédok
    var sx=[-1,1, 0,0]; // a 4 szomszéd relatív x koord
    var sy=[0 ,0,-1,1]; // ill. y


    for ( i = 0; i < X; i++ )// a bejárás kezdőállapotának beállítása
    for ( j = 0;j < Y; j++ )
    tabla[i][j].bejar = false; // kezdetben egyetlen bogyót sem látogattunk meg

    list.push(tabla[0][0]);
    tabla[0][0].bejar=true;

    while( list.length > 0 ) { // amig van feldolgozandó szomszed
    var a = list.pop(); // vegyünk ki egyet
    szomszed.push(a); // tegyük át a véglegesbe
    for( i = 0; i < 4; i++ ) { // mind a négy szomszédjára
    var b = tabla[a.x+sx[i]][a.y+sy[i]]; // b az akttuális elem (a) szomszédja
    if ( b.szin == tabla[0][0].szin && b.bejar == false ) { // ha ugyanolyan színű mint az eredeti és még nem jártuk be
    list.push(b); // vegyük fel a feldolgozandók listajára
    b.bejar = true; // jegyezzük fel, hogy itt már jártunk
    }
    }
    }

    while( szomszed.length > 0 ) {
    var a:MovieClip = eval("b"+db++);
    a = szomszed.pop();// vegyük ki az MC-ket
    tabla[a.x][a.y]=a;
    a.gotoAndStop(szam);
    }
    lepesek=lepesek+1;

    }




    // segéd függvények a képernyő kezeléséhez
    function kepx(oszlop) {
    return oszlop*meretx + meretx/2;
    }
    function kepy(sor) {
    return sor*merety + merety/2;
    }

    A gombok pedig a klikk függvényt hívják meg egy színnel.

    Köszi

Új hozzászólás Aktív témák