Keresés

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

  • andriscs

    aktív tag

    válasz Kr1xX #40 üzenetére

    Hi!

    Kicsit átírtam a kódot, hogy világosabb legyen, tettem bele megjegyzéseket. Természtesen értem, ogy mit csinála kód, a látszólagos kuszasága ellenére eléggé szimpla kód, csak sokat ismétlődik, apróbb változásokkal. Szóval a koncepció az, hogy minden kattintás után a függvény végigfut a tömbelemeken, ls megvizsgálja, hogy van-e valamelyik irányban 4 egyforma jel. A lényeg (tehát a keresés) mindenhol ugyanaz, csak az irány változik, szóval lényegében 8x fut le ugyanaz a kód, nagyon minimális eltéréssel. Ami a for ciklusok feltételeit illeti, az azért annyira bonyolult, mert ugye nem léphetek túl a tömb határain, tehát pl. az 1,1 elemtől nem tudok 4-et balra menni, mert az már kilépne a tömbből. Tehát biztonsági intézkedések miatt van a hosszfigyelés. Ha még valami nem tiszta, akkor magyarázok, de itt az új kód (ez már csak max. 4 egyforma elemet talál):

    public boolean searchEngine() //need to check
    {

    for(col=0;col<size;col++) //oszlopokon lépked
    {
    for(row=0;row<size;row++) //sorokon lépked
    {
    for(int count=1;row+count<game.length && count<4;count++) //soron jobbra
    { //ameddig nem éri
    if (game[row+count][col]==(game[row][col])) //el a tömb szélét v. 4 jelet
    {
    clone1++; //ha van egyforma, növeli
    if (clone1==3) return true; //min. 3 kell, hogy összesen 4 legyen
    }
    else clone1=0; //ha nincs egyforma, nullázza a számlálót
    }
    for(int count=1;row-count>-1 && count<4;count++){ //elemtől balra megy
    if (game[row-count][col]==(game[row][col])) //stb...
    {
    clone2++;
    if (clone2==3) return true;
    }
    else clone2=0;
    }
    for(int count=1;col+count<game.length && count<4;count++)
    {
    if (game[row][col+count]==(game[row][col]))
    {
    clone3++;
    if (clone3==3) return true;
    }
    else clone3=0;
    }
    for(int count=1;col-count>-1 && count<4;count++)
    {
    if (game[row][col-count]==(game[row][col])) {
    clone4++;
    if (clone4==3) return true;}
    else clone4=0;
    }
    for(int count=1;(row+count<game.length) && (col+count<game.length) && count<4;count++)
    {
    if (game[row+count][col+count]==(game[row][col]))
    {
    clone5++;
    if (clone5==3) return true;}
    else clone5=0;
    }
    for(int count=1;(row-count>-1) && (col-count>-1) && count<4;count++)
    {
    if (game[row-count][col-count]==(game[row][col])) {
    clone6++;
    if (clone6==3) return true;}
    else clone6=0;
    }
    for(int count=1;(row+count<game.length)&& (col-count>-1) && count<4;count++)
    {
    if (game[row+count][col-count]==(game[row][col]))
    {
    clone7++;
    if (clone7==3) return true;}
    else clone7=0;
    }
    for(int count=1;(row-count>-1) && (col+count<game.length) && count<4;count++)
    {
    if (game[row-count][col+count]==(game[row][col]))
    {
    clone8++;
    if (clone8==3) return true;}
    else clone8=0;
    }
    }
    }

    return false;
    }

    Andris - http://andriscs.blogspot.com

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