Rybicky v akváriu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rybicky v akváriu – Java – Fórum – Programujte.comRybicky v akváriu – Java – Fórum – Programujte.com

 

Gesler
~ Anonymní uživatel
9 příspěvků
10. 5. 2012   #1
-
0
-

Č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äť?

Nahlásit jako SPAM
IP: 81.0.116.–
Chrasty
~ Redaktor
+4
Posthunter
10. 5. 2012   #2
-
0
-

#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.

Nahlásit jako SPAM
IP: 193.179.196.–
Gesler0
Duch
10. 5. 2012   #3
-
0
-

#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

Nahlásit jako SPAM
IP: 81.0.116.–
sakal910
Stálý člen
10. 5. 2012   #4
-
0
-

#3 Gesler
:D Tu podmínku bych asi dal tam kde voláš aby se ti posunula :) takže než zavoláš posunutí tak zkontrolovat jestli není na konci :)

Nahlásit jako SPAM
IP: 31.222.8.–
Jimi
~ Anonymní uživatel
75 příspěvků
10. 5. 2012   #5
-
0
-

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.

Nahlásit jako SPAM
IP: 188.112.66.–
Jimi
~ Anonymní uživatel
75 příspěvků
10. 5. 2012   #6
-
0
-
Nahlásit jako SPAM
IP: 188.112.66.–
CZechBoY+4
Věrný člen
10. 5. 2012   #7
-
0
-

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;
}
Nahlásit jako SPAM
IP: 213.192.10.–
Gesler0
Duch
11. 5. 2012   #8
-
0
-

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.

Nahlásit jako SPAM
IP: 81.0.116.–
tom
~ Anonymní uživatel
434 příspěvků
11. 5. 2012   #9
-
0
-

#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.

Nahlásit jako SPAM
IP: 195.113.118.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 39 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý