Játékfejlesztés során ha billentyűzettel mozgatok valamit, akkor a billentyű lenyomása után egyet mozdul, majd megtorpan és csak azután halad tovább. Ismersz erre megoldást?
"#2-es kolléga mondja az igazat."
#2-es éppen olyan rosszul tájékozott amatőr, mint te.
Billentyűzetet alacsony szinten két módon lehet kezelni PC-s környezetben.
Az egyik a megszakításos. Ez a keyboard állapotának minden változásakor generál egy megszakítást (interrupt) amelyet a PC feldolgoz, ergo, lefuttatja a szükséges rutint, az meg kiolvassa a keyboard állapotát és a kinyert infókat elhelyezi valahol, ahol elérhetők a magasabb szintek számára.
A másik lehetőség a polling. Ez nem jelent mást, mint, hogy egy rutin adott időközönként kiolvassa a keyboard portjának tartalmát és szintén elteszi valahova (a memóriába), ahol az elérhető a magasabb szintű igénybevételhez. Ennek a megoldásnak bár gyors, de egy baja van, állandóan terheli a CPU-t.
Magasabb szint.
KeyDown, KeyUp, KeyPressed, stb. eventek.
Ezek a függvények, amelyeket a magasszintű nyelvek kínálnak, remekül megfelelnek általános adatbevitelre, eseményvezérlésre, de olyan alkalmazásokhoz, amelyek rövid válaszidőt igényelnek, nem elégségesek. Pedig többnyire ilyenek a játékrogramok is.
Ezeknél az adatbevitelt alacsonyabb szinten kell kezelni, amire lehetőség van directX (dInput) vagy winapi segítségével. A winapi adekvát függvényei pl. a GetKeyState vagy a GetAsyncKeyState.
Ezek használatával lehet elérni, hogy a játékélmény ne szenvedjen csorbát, a játékmenet gördülékeny legyen, a történések megfeleljenek az elkivántaknak, ne késsen semmiféle esemény.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!