Fungovanie hry teória – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Fungovanie hry teória – Java – Fórum – Programujte.comFungovanie hry teória – Java – Fórum – Programujte.com

 

Anoanym
~ Anonymní uživatel
2 příspěvky
24. 3. 2014   #1
-
0
-

Zdravím,

s používaním Javy nemám ešte moc veľké skúsenosti, hlavne čo sa týka jej dynamiky a vytvárania grafických objektov. Postupne sa učím, ako vytvoriť jednoduchý ovál, trojuholník a pod.

Zaujíma ma ale otázka akejsi spolupráce týchto grafických prvkov a časovača.

Problém 1

Zoberme si príklad, že chcem vytvoriť akúsi strielačku... Mám nejaký pohybujúci sa ovál a keď napr. kliknem myšou, zo súradníc oválu vyletí náboj. 

Ako by som to robil?

Očakával by som kliknutie myšou a hneď by som zavolal triedu, ktorá nájde pozíciu oválu, zapne časovač, vytvori náboj a bude ho posúvať až do konca obrazovky (potom sa skryje a pod.) Toto by bolo v skutku zaujímavé, ale čo ak kliknem po sebe 5krát? To by znamenalo, že vždy po každom kliku sa náboj nastaví na začiatok zapne časovač atď. teda by to nešlo nijako súvislo za sebou. Ako sa dá táto súvislosť spraviť?

Že by sa napríklad. vytvorilo hneď 5 letiacich nábojov, ktoré by po "pristáni" na konci obrazovky zmizli? 

(nemyslím si, že by riešenie inicializácie niekoľkých nábojov dopredu malo zmysel...)

Bolo na každý jeden z nich nastaviť nejakú udalosť, pokiaľ áno, tak ako?  

Problém 2:

Zoberme si napríklad hru PacMan po formulári si chodí panáčik a zbiera body. Ako to funguje? 

Ako by som to robil? 

Môj nápad je asi takýto: Hneď zo začiatku by som vygeneroval cez nejaký cyklus náhodne dajme tomu 50 cukríkov, ktoré by som ukladal. Samostatne x súradnicu do jedného poľa, y do druhého a vždy pohybe panáčika, by sa kontrolovali jeho súradnice a taktiež by mal v sebe cyklus, ktorý by stále bežal a pokiaľ by narazil na súradnicu kde je cukrík, tak by napr. tú položku z pola zmenil. 

Je ale takéto riešenie adekvátne a rýchle? 

Problém 3

Berme stále príklad PacMan-a ako tam funguje "narážanie" do stien? Kde a ako sa všetko kontroluje, aby daný objekt neprešiel cez stenu? 

Budem veľmi rád, ak mi napíšete ako by sa to dalo spraviť lepšie, prípadne mi poradíte.

Za každú radu budem vďačný.

Ďakujem 

Anonym

Nahlásit jako SPAM
IP: 95.105.244.–
Flowy0
Věrný člen
24. 3. 2014   #2
-
0
-

#1 Anoanym
java je OOP

pre naboj definuj vlastnu triedu v ktorej urcis jeho aktualnu polohu smer a rychlost (a tiez ako sa bude zobrazovat a podobne vlastnosti) ... v hlavnom okne ktore bude zaznamenavat mys by si mohol ukladat aj vsetky objekty na poli a pod ... pre jednoduchost (ano myslim to vazne - definovat nieco navyse aby to bolo jednoduchsie) by si mohol definovat interface podobne ako to robi java - CollisionAble (alebo podobne) ... kazdy objekt ktory je v poli by tento interface implementoval a tym by musel mat metodu ktora by urcila kde su jeho hranice a podobne udaje (pripadne metodu boolean isInCollision(CollisionAble object) {} ... jednoduchost by bola v tom ze by si si spravil pole zostavil na zaklade tychto objektov a teda by si jednoducho zistil kedy sa ktory zrazil (musis porovnat kazdy s kazdym ... pripadne zjednodusit to ale to je uz na tebe)

riesenim prveho problemu vyriesis aj druhy a treti ... stena alebo cukrik bude potomok CollisionAble a teda jednoducho zistis ze sa dva objekty zrazili ... do CollisionAble si mozes definovat aj metodu ktora sa vykona po zrazeni a teda vykonat pozadovanu udalost (zmiznutie/odrazenie)

ako som hovoril rychlost je zavysla na tom co vymyslis pre kolizie (nemyslim ze by bola kriticka ale mozes si to skusit) ... rozne optimalizacie ako napr rozdelit pole na useky (a kontrolovat len kolizie objektov v tychto usekoch) su dost priamociare a v rozumnej miere efektivne (mas ale naklady na to ze musis urcovat do ktoreho useku objekt patri a presuvat ho medzi nimi)

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Anoanym
~ Anonymní uživatel
2 příspěvky
24. 3. 2014   #3
-
0
-

#2 Flowy

Ďakujem skúsim sa to CollisionAble pozrieť. Ešte k tomu náboju, niečo podobné, ako si napísal, som uviedol aj ja, len sa zamýšľam nad tým, že pokiaľ budem v triede definovať všetky tieto veci a kliknem viackrát po sebe, tak sa náboj vždy nastaví na hodnotu odkiaľ strieľa a teda ten prvý vystrelený (letiaci) zmizne a nahodi sa spätne na "základné" súradnice.

Funkčné by to bolo, ak by sa len vystrelil jeden a počkalo by sa, kým doletí   tank naboj

Nefunkčné by to bolo predpokladám ak by to bolo ako tank naboj naboj naboj naboj naboj

Predpoklad vytvorenia viacerých za sebou idúcich objektov/položiek

Nahlásit jako SPAM
IP: 95.105.244.–
Flowy0
Věrný člen
24. 3. 2014   #4
-
0
-

#3 Anoanym
po kliknuti by sa vytvoril novy naboj ktory by sa normalne ulozil do kolekcie objektov v poli ... keby si vystrelil znova tak sa vytvori novy naboj (pripadne tam mozes nastavit rozne prebijania a podobne ale na tych uz naboj nebude zavysli)

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
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, 7 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ý