Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Vyplňování pomocí Seed fill

Aktivity
Avatar
sp
Člen
Avatar
sp:25.11.2014 22:09

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

Člen
Avatar
:27.11.2014 16:09

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
Avatar
Luboš Běhounek Satik:27.11.2014 16:18

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
https://www.facebook.com/peasantsandcastles/
Avatar

Člen
Avatar
Odpovídá na Luboš Běhounek Satik
:27.11.2014 16:53

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
Avatar
Odpovídá na
Luboš Běhounek Satik:27.11.2014 17:18

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
https://www.facebook.com/peasantsandcastles/
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.