Reakce na vstup je zásadní pro každou hru a je dobré podporovat klávesnici pro uživatele, kteří ji preferují. Zjistěte, jak na to s arkádovou knihovnou Pythonu.

Vstup z klávesnice je nezbytnou součástí vývoje her a je důležité s ním efektivně zacházet, aby byl uživatelsky příjemný. Knihovna Arcade poskytuje přímý a efektivní způsob, jak zpracovávat vstup z klávesnice ve vašich hrách v Pythonu.

Vytvoření jednoduché hry s hráčem

Kompletní kód najdete v toto úložiště GitHub.

Než se pustíte do práce se vstupy z klávesnice, ujistěte se, že máte pip nainstalovaný ve vašem zařízení. K instalaci arkádové knihovny použijte tento příkaz:

pip instalační arkáda

Poté vytvořte kostru jednoduché hry:

import pasáž

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška, "Moje hra")
arcade.set_background_color (arcade.color. BÍLÝ)

defon_draw(já):
arcade.start_render()

defAktualizace(self, delta_time):
složit

MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

instagram viewer

Vznikne tak okno s bílým pozadím. Dále přidejte hráče do hry:

třídaHráč:
def__init__(já, x, y):
self.x = x
self.y = y
vlastní.rychlost = 5
vlastní.poloměr = 20

defkreslit(já):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. MODRÝ)

defpohyb doleva(já):
self.x -= self.speed

defpohyb vpravo(já):
self.x += self.speed

defposunout_nahoru(já):
self.y += self.speed

defposunout dolů(já):
self.y -= samo.rychlost

Vznikne tak jednoduchý hráč s modrým kruhem. Tohoto hráče můžete přidat do své hry úpravou MyGame třída:

import pasáž

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška, "Moje hra")
arcade.set_background_color (arcade.color. BÍLÝ)
self.player = Player (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

defon_draw(já):
arcade.start_render()
self.player.draw()

defAktualizace(self, delta_time):
složit

defhlavní():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

-li __jméno__ == "__hlavní__":
hlavní()

Nyní máte ve hře hráče, kterého můžete nakreslit na obrazovku.

Reakce na stisknutí a uvolnění kláves

Abyste mohli ve své hře reagovat na vstup uživatele, musíte zvládnout stisknutí a uvolnění kláves. Knihovna Arcade poskytuje dva způsoby zpracování těchto událostí: on_key_press a on_key_release.

Chcete-li tyto metody používat, musíte je definovat ve svém pasáž. Okno podtřída. Když hráč stiskne nebo uvolní klávesu, arcade spustí odpovídající metodu a předá jí dva argumenty: klávesu a modifikátory. klíč je celé číslo představující kód stisknuté nebo uvolněné klávesy. modifikátory je bitové pole představující jakékoli modifikační klávesy, které hráč také stiskl, jako je Shift nebo Control.

Zde je příklad, jak reagovat na stisknutí klávesy ve hře:

třídaMyGame(pasáž. Okno):
defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
# Přesuňte hráče doleva
elif klíč == arcade.key. ŽE JO:
# Přesuňte přehrávač doprava
elif klíč == arcade.key. NAHORU:
# Přesuňte přehrávač nahoru
elif klíč == arcade.key. DOLŮ:
# Přesuňte přehrávač dolů

Chcete-li reagovat na uvolnění kláves, můžete definovat on_key_release metoda stejným způsobem:

třídaMyGame(pasáž. Okno):
defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
# Zastavte pohyb hráče doleva
elif klíč == arcade.key. ŽE JO:
# Zastavte pohyb hráče doprava
elif klíč == arcade.key. NAHORU:
# Zastavte pohyb hráče nahoru
elif klíč == arcade.key. DOLŮ:
# Zastavte pohyb přehrávače dolů

Je důležité si uvědomit, že zachycení uživatelský vstup v pygame vyžaduje ruční kontrolu událostí ve vaší herní smyčce. Na druhou stranu knihovna Arcade automaticky vyvolá příslušné metody, když hráč stiskne nebo uvolní klávesu. To znamená, že nemusíte ručně kontrolovat klíčové události ve vaší herní smyčce, čímž si ušetříte starosti s kódem navíc.

Přizpůsobení ovládání vstupu klávesnice tak, aby vyhovovalo potřebám vaší hry

Knihovna Arcade poskytuje mnoho způsobů, jak přizpůsobit vstup z klávesnice. Možná budete chtít změnit vázání kláves pro vaši hru nebo umožnit hráči přizpůsobit si vlastní vázání kláves.

To lze provést definováním slovníku mapa_klíčů která mapuje každou klávesu na odpovídající metodu objektu hráče. Chcete-li přehrávači umožnit přizpůsobení jejich klávesových zkratek, můžete přidat nabídku nastavení, která upraví mapa_klíčů slovník založený na preferencích hráče.

Zde je příklad:

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška, název):
super().__init__(šířka, výška, název)
self.player = Hráč(100, 100)

self.key_map = {
arkáda.klíč. VLEVO: self.player.move_left,
arkáda.klíč. RIGHT: self.player.move_right,
arkáda.klíč. UP: self.player.move_up,
arkáda.klíč. DOWN: self.player.move_down
}

defon_key_press(vlastní, klíč, modifikátory):
-li klíč v self.key_map:
self.key_map[key]()

defon_key_release(vlastní, klíč, modifikátory):
-li klíč v self.key_map:
self.key_map[klíč + 1]()

Reagujte na uživatelské vstupy v reálném čase

Reakce na vstup uživatele v reálném čase je základním aspektem vytváření poutavé hry. Když věnujete čas správnému zpracování vstupu z klávesnice ve vaší hře, můžete vytvořit poutavější a pohlcující zážitek pro vaše hráče a nakonec vaše hra vynikne v přeplněném prostředí tržiště.