A bevitelre való reagálás létfontosságú minden játék számára, és jó, ha támogatjuk a billentyűzetet az azt kedvelő felhasználók számára. Tudja meg, hogyan használhatja a Python arcade könyvtárát.
A billentyűzet bevitele a játékfejlesztés elengedhetetlen része, és elengedhetetlen, hogy hatékonyan kezeljük a nagyszerű felhasználói élmény érdekében. Az Arcade könyvtár egyszerű és hatékony módot biztosít a billentyűzet bevitelének kezelésére Python-játékaiban.
Egyszerű játék létrehozása játékossal
A teljes kódot megtalálod itt ezt a GitHub repót.
Mielőtt belevágna a billentyűzetbemenetek kezelésébe, győződjön meg arról, hogy rendelkezik pip telepítve van a készülékére. Ezzel a paranccsal telepítheti az arcade könyvtárat:
pip install arcade
Ezután készítse el egy egyszerű játék vázát:
import árkád
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
super().__init__(szélesség, magasság, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)defon_draw(maga):
arcade.start_render()deffrissítés(self, delta_time):
pass
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
Ez egy fehér háttérrel rendelkező ablakot hoz létre. Ezután adj hozzá egy játékost a játékodhoz:
osztályJátékos:
def__benne__(én, x, y):
önmaga.x = x
self.y = y
én.sebesség = 5
én.sugár = 20defhúz(maga):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. KÉK)defmenj balra(maga):
self.x -= self.sebességdefMozdulj jobbra(maga):
self.x += self.sebességdefmozgat_fel(maga):
self.y += self.sebesség
defmozgás_lefelé(maga):
self.y -= self.sebesség
Ezzel létrehoz egy egyszerű játékost kék körrel. Hozzáadhatja ezt a játékost a játékához, ha módosítja a Az én játékom osztály:
import árkád
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
super().__init__(szélesség, magasság, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)
self.player = Játékos (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)defon_draw(maga):
arcade.start_render()
self.player.draw()deffrissítés(self, delta_time):
passdeffő-():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
ha __név__ == "__fő__":
fő()
Most már van egy játékos a játékban, akit felrajzolhat a képernyőre.
Válasz a gombnyomásokra és -elengedésekre
Ahhoz, hogy válaszoljon a felhasználói bevitelre a játékban, kezelnie kell a billentyűlenyomásokat és -elengedéseket. Az Arcade könyvtár két módszert kínál ezeknek az eseményeknek a kezelésére: on_key_press és on_key_release.
E módszerek használatához meg kell határoznia őket a saját árkád. Ablak alosztály. Amikor a játékos megnyom vagy elenged egy billentyűt, az arcade a megfelelő metódust futtatja, két argumentumot adva át neki: kulcsot és módosítókat. kulcs egy egész szám, amely a lenyomott vagy felengedett billentyű kódját jelöli. módosítók egy bitmező, amely a lejátszó által megnyomott módosító billentyűket képviseli, mint például a Shift vagy a Control.
Íme egy példa arra, hogyan kell reagálni egy billentyűlenyomásra a játékban:
osztályAz én játékom(árkád. Ablak):
defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
# Mozgassa a játékost balra
elif kulcs == arcade.key. JOBB:
# Mozgassa a lejátszót jobbra
elif kulcs == arcade.key. FEL:
# Mozgassa fel a játékost
elif kulcs == arcade.key. LE:
# Mozgassa le a lejátszót
A kulcskiadásokra való reagáláshoz meghatározhatja a on_key_release módszer ugyanilyen módon:
osztályAz én játékom(árkád. Ablak):
defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
# A játékos balra mozgatásának leállítása
elif kulcs == arcade.key. JOBB:
# Hagyja abba a lejátszó jobb mozgatását
elif kulcs == arcade.key. FEL:
# Ne mozgassa felfelé a játékost
elif kulcs == arcade.key. LE:
# Ne mozgassa le a lejátszót
Fontos megjegyezni, hogy a rögzítés felhasználói bevitel a pygame-ben kézi eseményellenőrzést igényel a játékhurkon belül. Másrészt az Arcade könyvtár automatikusan meghívja a releváns metódusokat, amikor a játékos megnyom vagy elenged egy billentyűt. Ez azt jelenti, hogy nem kell manuálisan ellenőriznie a kulcsfontosságú eseményeket a játékhurokban, így megkímélheti az extra kóddal járó gondoktól.
A billentyűzet beviteli kezelésének testreszabása a játék igényeihez
Az Arcade könyvtár számos módot kínál a billentyűzet bevitelének testreszabására. Előfordulhat, hogy módosítani szeretné a játék billentyűkombinációit, vagy megengedheti a játékosnak, hogy személyre szabja saját billentyűkombinációit.
Ezt megteheti egy szótár meghatározásával key_map amely minden billentyűt leképez a játékos objektum megfelelő metódusára. Annak érdekében, hogy a játékos testreszabhassa a billentyűkombinációkat, hozzáadhat egy beállítási menüt, amely módosítja a key_map szótár a játékos preferenciái alapján.
Íme egy példa:
osztályAz én játékom(árkád. Ablak):
def__benne__(én, szélesség, magasság, cím):
szuper().__init__(szélesség, magasság, cím)
self.player = Player(100, 100)self.key_map = {
árkád.kulcs. BAL: self.player.move_left,
árkád.kulcs. JOBBRA: self.player.move_right,
árkád.kulcs. FEL: self.player.move_up,
árkád.kulcs. LE: self.player.move_down
}defon_key_press(én, kulcs, módosítók):
ha kulcs ban ben self.key_map:
self.key_map[key]()
defon_key_release(én, kulcs, módosítók):
ha kulcs ban ben self.key_map:
self.key_map[billentyű + 1]()
Valós időben válaszoljon a felhasználói bevitelekre
A felhasználó által adott valós idejű válaszadás elengedhetetlen szempont egy megnyerő játék létrehozásához. Ha időt szán a billentyűzet bevitelének megfelelő kezelésére a játékban, vonzóbb és vonzóbb magával ragadó élményt nyújt a játékosok számára, és végső soron kiemelheti játékát a zsúfoltságból piactér.