Java programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


andriscs
(aktív tag)

Sziasztok!

Új problémával állok elő. Szóval van egy 2 dimenziós tömb, amiben azt vizsgálom, hogy egy adott elemtől indulva az elemet körbevevú 8 irányban találok-e még legalább 3 ugyanolyan elemet (amőba jellegű a dolog). A probléma azt, hogy a tömb belsejében tökéletesen működik a dolog, de a széleken mintha összeadná az összes találatot. Emiatt megcsináltam úgy, hogy minden irányban új változó tárolja a találatot, de így sem működik. Nincs ötletem, hogy mi a hiba. Természtesen a tömböknél figyelni kell, hogy ne lépje túl a tömb határait. Bemásolom ide az adott függvény kódját, hátha valaki rátalála hibára:

public boolean searchEngine() //need to check
{
int clone1=0;
int clone2=0;
int clone3=0;
int clone4=0;
int clone5=0;
int clone6=0;
int clone7=0;
int clone8=0;

for(row=0;row<size;row++)
{
for(col=0;col<size;col++)
{
for(int count=1;row+count<game.length;count++){
if (game[row+count][col].equals(game[row][col])) {
clone1++;
if (clone1>=3) return true;}
else clone1=0;
}
for(int count=1;row-count>-1;count++)
if (game[row-count][col].equals(game[row][col])) {clone2++;
if (clone2>=3) return true;}
else clone2=0;
for(int count=1;col+count<game.length;count++)
if (game[row][col+count].equals(game[row][col])) {clone3++;
if (clone3>=3) return true;}
else clone3=0;
for(int count=1;col-count>-1;count++)
if (game[row][col-count].equals(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++)
if (game[row+count][col+count].equals(game[row][col])) {clone5++;
if (clone5>=3) return true;}
else clone5=0;
for(int count=1;(row-count>-1) && (col-count>-1);count++)
if (game[row-count][col-count].equals(game[row][col])) {
clone6++;
if (clone6>=3) return true;}
else clone6=0;
for(int count=1;(row+count<game.length)&& (col-count>-1);count++)
if (game[row+count][col-count].equals(game[row][col])) {clone7++;
if (clone7>=3) return true;}
else clone7=0;
for(int count=1;(row-count>-1) && (col+count<game.length) ;count++)
if (game[row-count][col+count].equals(game[row][col])) {clone8++;
if (clone8>=3) return true;}
else clone8=0;
}
}
return false;
}

Akinek van ötlete, ne kíméljen!

üzenetek