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 = 480

osztá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

instagram viewer

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 = 20

defhúz(maga):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. KÉK)

defmenj balra(maga):
self.x -= self.sebesség

defMozdulj jobbra(maga):
self.x += self.sebesség

defmozgat_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 = 480

osztá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):
pass

deffő-():
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.