Kezdőoldal » Számítástechnika » Programozás » Ezt hogy lehetne megoldani...

Ezt hogy lehetne megoldani JavaScriptben?

Figyelt kérdés

Van egy programom ami egy ilyen kis 'játék', és azt szeretném hogy megnézze ha meghaltam-e benne, de akárhogy próbálom nem tudom.

Kód: [link]



2021. máj. 22. 17:48
 1/10 anonim ***** válasza:
100%
Mikor kellene "meghalnod"?
2021. máj. 22. 18:27
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:
Ha a nem kapod el az alsó téglalappal a négyzetet. (Hasonló a pong-ra)
2021. máj. 22. 18:34
 3/10 anonim ***** válasza:
50%
Hát, igazából a checkDead függvénybe nem is írtál semmit, így nehéz is lenne érzékelnie, hogy meghaltál-e.
2021. máj. 22. 18:41
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:
Pont ezért kérdeztem hogy ezt hogy lehetne megoldani.
2021. máj. 22. 18:45
 5/10 anonim ***** válasza:
100%

Egy halálegyszerű if feltétellel.

Mondjuk ha a kis négyzetek mozgását is absolute pozícióval oldanád meg, mindegyiknek adsz egy id-t (ez lehetne mondjuk egy változóban tárolva, amit minden új négyzet generálásakor növelsz, és ezt adod neki.

Ahogy látom, jelenleg mindegyik négyzetnek a "felso" id-t adod, ami hibás, ugyanis egy id-t csak egyetlen elem kaphat. Amit te keresel, az a class.

De visszatérve, minden négyzetnek egy szám lenne az id-ja (mindegyiknek egyel nagyobb, mint az előzőnek (egyszerű for ciklussal megoldható)). Szóval minden körben megvizsgálod, hogy a nagy téglalapnak és az adott kis négyzetnek az y koordinátája egyezik-e (tehát függőlegesen lényegében "egy sorban vannak"). Ha igen, akkor megvizsgálod, hogy érintkeznek-e. Ha igen, akkor nyilván nem történik semmi (vagy növeled a pontszámot, ha van ilyen). Ha nem, akkor az azt jelenti, hogy a játékos nem kapta el a négyzetet, tehát a checkDead függvény true értékkel térhet vissza.

2021. máj. 22. 18:57
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
Köszönöm, azt tudtam hogy biztos egy if feltétellel kell, viszont ezekre nem gondoltam. Tényleg köszi
2021. máj. 22. 19:16
 7/10 A kérdező kommentje:
Viszont igazából nem tudom hogyan vizsgáljam meg hogy érintekeznek e
2021. máj. 22. 19:17
 8/10 anonim ***** válasza:
#7 ezt kell kitalálnod, ez a szép a tanulásban. ;)
2021. máj. 23. 07:25
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:
Megcsináltam hogy minden négyzet egy id-t kapjon, de a getElementById()-vel sem, sem másik függvényből nem tudom megkapni a koordinátájit.
2021. máj. 23. 16:52
 10/10 anonim ***** válasza:
100%

#9

A böngészőt is tanuld meg használni: Legtöbb webböngészőben F12 vagy jobb klikk -> Vizsgálat/Elem vizsgálata

Itt meg tudod nézni, hogy valóban megkapja-e az összes elem az id-t, mert lehet, hogy a kódban rontottál el valamit, és valójában nem kapják meg.

Illetve itt megtalálod a konzolt is, ami értesít az esetleges hibákról (tehát ha pl. egy függvénnyel el szeretnél érni egy adott id-t, de nincs olyan elem, aminek az az id jutott, akkor erről is értesít).


Az érintkezést sokan úgy csinálják - más JS játékokban is -, hogy az teljes játéklapot kisebb négyzetekre osztják (mondjuk akkorákra, amekkorák a kis négyzetek), és a játékos téglalapját is ekkora négyzetekre osztod, ezeket egy div-ben tárolod, így elég a div-et mozgatni, és vele együtt mozog a benne lévő összes többi elem.

Innen már könnyen ki lehet logikázni, egy foreach ciklussal végig lehet menni setInterval-lal stb. az elemeken, így tudod ellenőrizni, hogy érintkeznek-e.

https://www.youtube.com/watch?v=kWVf7zbqsAo&list=PLj6t-9MtkM..

Ebben a sorozatban láthatod, hogy hogyan működik ez (bár ez inkább haladóknak való).

2021. máj. 23. 17:16
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!