Avatar
sp
Člen
Avatar
sp:

Prosím, nevíte někdo, kde by tady mohl být problém? Při překladu to chybu nehlásí, ale když to chci spustit, píše u všech rekurzí: Coordinate out of bounds!
Děkuju za každou reakci :)

public void seedFill(int x, int y, G_Color barvaVyplne, G_Color barvaHranice){
                if((getPixel(x,y)!= barvaVyplne) && (getPixel(x,y) != barvaHranice))
                {
                    putPixel(x,y,barvaVyplne);
                    seedFill(x+1, y, barvaVyplne, barvaHranice);
                    seedFill(x-1, y, barvaVyplne, barvaHranice);
                    seedFill(x, y-1, barvaVyplne, barvaHranice);
                    seedFill(x, y+1, barvaVyplne, barvaHranice);
                }
        }
Editováno 25.11.2014 22:09
 
Odpovědět 25.11.2014 22:09
Avatar
Tomek
Člen
Avatar
Tomek:

Takhle na první pohled žádnou chybu nevidím. Mohla bys poskytnout více kódu? Možná se tak toho chytne více lidí a najdeme řešení :) ... Jinak ta výjimka značí, že chceš manipulovat se souřadnicemi, které jsou mimo rozsah, takže to padá na tom if statementu.

Nahoru Odpovědět 27.11.2014 16:09
"Jak nahoře, tak dole. Jak uvnitř, tak vně."
Avatar
Luboš Běhounek (Satik):

musis si osetrit, aby jsi neplacala pixel mimo - treba pokud je x=0 a y=0 a zavolas seedFill(x-1, y, barvaVyplne, barvaHranice); tak skoncis s x=-1

Nahoru Odpovědět 27.11.2014 16:18
:)
Avatar
Tomek
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Tomek:

Toto ošetření je podle mě docíleno výrazem getPixel(x, y) != barvaHranice. Takže by se tím pádem do těla podmínky nikdy takovéto hodnoty neměly dostat.

Nahoru Odpovědět 27.11.2014 16:53
"Jak nahoře, tak dole. Jak uvnitř, tak vně."
Avatar
Odpovídá na Tomek
Luboš Běhounek (Satik):

To platí jen pokud začne vybarvovat uvnitř plně ohraničené oblasti, pokud klikne vně nebo ta oblast není celá ohraničená, tak vyjede mimo.

Nahoru Odpovědět 27.11.2014 17:18
:)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.