Čaute. Som programátor začiatočník. Prečítal som už nejaké knihy o programovaní jave a teraz sa snažím vytvoriť nejaký program. Chcem spraviť akvárium kde si naprogramujem rybičky aby mi plávali z jednej strany na druhú. Lenže problém je taký že keď mi rybička pripláva na koniec okna tak buď postojí alebo pláva až za okno. Ako docielim aby sa otočila a plávala naspäť?
Fórum › Java
Rybicky v akváriu
![](img/forum_vlakno_help_vyreseno.png)
#1 Gesler
Porovnávej souřadnice pozice rybičky s okraji okna - Pokud např. souřadnice X rybičky bude 0, je jasné, že je u levého okraje okna a musíš změnit směr pohybu.
#2 Chrasty
Tomu som pochopil. Len neviem kde mam napisat tu podmienku ze ak bod x bude na konci tak prekresli rybku a zmen smer. Mám to celé popletené. Päť krát som prepisoval zdroják a teraz už fakt netuším čo kde patrí. A rybička sa trase na jednom mieste :D
Vyries to jednoducho. Daj si jednu bool premennu napr "bool ChodDoprava". Nastav hu na zaciatok naprikald na true.
Potom musis napisat podmienku ze
if(Rybycka.X + Rybycka.Width > Okno.Width)
{
ChodDoprava = false;
}
if(Rybycka.X < 0)
{
ChodDoprava=true;
}
if(ChodDoprava == true)
{
Rybycka.X += 5;
}
else
{
Rybycka.X -= 5;
}
Napis to cele napriklad do Timer-u. Nastav ho na nejakych 50ms. Skus to a malo by to slapat. Ked mam niekde chybu tak ma prosim opravte napisal som to dost z brucha.
Ked vies trosku Pascal tak si pozri tento priklad
nebo si prostě určit nějakou proměnnou posun a v případě X==0 nebo X>=Okno.Width otočíš znamínko :)
sbyte posun = 5;
Rybicka.X = 1;
function posun() {
if(Rybicka.X + Rybicka.Width > Okno.Width || Rybicka.X <= 0) {
posun *= -1;
}
Rybicka.X += posun;
}
No nakoniec som to poriešil tak, že v metóde pohyb som si spravil tieto podmienky:
public void pohyb() {
if(smer){
setLocation(getX() +10, getY());
if(getX()>mojForm.getWidth()-this.getWidth()-30){
smer=false;}
}else{
setLocation(getX() -10, getY());
if(getX()<1){
smer=true;}
}
}
rybicka pride na koniec okna, tam sa zmení smer, prekreslí sa na opačnú stranu a ide až na začiatok okna. Ďakujem vám za nápady a za pomoc.
#1 Gesler
Ahoj, nevím jak přesně to řešíš, ale pokud ti rybička plave například zleva doprava, tak ti po souřadnicích jede například od [minX,100] do [maxX, 100], ve chvíli kdy rybička narazí na okraj okna, teda rybicka má souřadnice maxX, otočíš jí směr pohybu, takže tam někde máš metodu ve které rybičku posouváš třeba o 3jednotky, tak tam dáš mínus (-3), a rybyčka pojede od maxX do minX. Záleží teda konkrétním řešení, ale nejlepší by bylo udělat rybičku jako samostatný objekt s nějaký směrem který se bude náhodně měnit, a pokud by se stalo že rybička o nějaké velikosti (např. [10,5]) narazí na souřadnici v rozmezí [minX, minY] do [maxX, maxY], tak ji otočíš směr pohybu.
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Využití for a while — založil da11niel
Warning ve vc6.0 — založil Sony
Zarovnání obrázků (malých a velkých) — založil jukle
Ochrana e-shopu pred viacnásobným nasadením — založil kroky
Kolekce->HashMap->Trideni podle vlastnosti vlozeho objektu — založil Zone_Trooper
Moderátoři diskuze