Rozpohybujte svou hlavní postavu v reakci na vstup hráče pomocí klávesnice a myši v knihovně Arcade.
Arcade je oblíbená knihovna Pythonu, kterou můžete použít k vytváření 2D arkádových her. Je to snadno použitelná knihovna, která poskytuje jednoduchý rámec pro vytváření her v Pythonu.
Jednou ze základních součástí každé hry je pohyb hráče.
Vytvoření jednoduché hry v Arcade
Můžete najít kompletní kód v tomto úložišti GitHub.
Než začnete, ujistěte se, že máte pip nainstalovaný na vašem zařízení. K instalaci arkádové knihovny použijte tento příkaz:
instalační knihovna pip
Poté vytvořte třídu Player jako podtřídu třídy pasáž. Skřítek třída, a MyGame třídy jako podtřídy pasáž. Okno. The MyGame třída bude mít metody pro nastavení herních objektů, jejich vykreslení na obrazovce, aktualizaci stavu hry a zpracování uživatelských vstupů. Kód pro vytvoření herní obrazovky a objektu hráče je následující:
import pasáž
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600třídaHráč(pasáž. Skřítek):
def__init__(já):
super().__init__("player.png", 0.5)
self.center_x = SCREEN_WIDTH // 2
self.center_y = SCREEN_HEIGHT // 2třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
self.player = Žádný
arcade.set_background_color (arcade.color. ČERNÁ)defzaložit(já):
self.player = Hráč ()defon_draw(já):
arcade.start_render()
self.player.draw()defAktualizace(self, delta_time):
složit
MyGame().run()
Přidání pohybu hráče se vstupem z klávesnice
Nyní, když jste vytvořili herní obrazovku a objekt hráče, můžete hráčem pohybovat v reakci na vstup z klávesnice. Definujte on_key_press() a on_key_release() metody, které zavoláte, když hráč stiskne nebo uvolní klávesu.
defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player.change_x = -5
elif klíč == arcade.key. ŽE JO:
self.player.change_x = 5
elif klíč == arcade.key. NAHORU:
self.player.change_y = 5
elif klíč == arcade.key. DOLŮ:
self.player.change_y = -5
defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
self.player.change_x = 0
elif klíč == arcade.key. NAHORU nebo klíč == arcade.key. DOLŮ:
self.player.change_y = 0
Při přidávání pohybu hráče pomocí klávesových vstupů můžete upravit rychlost pohybu změnou přiřazené hodnoty self.player.change_x a self.player.change_y. Můžete také přidat podmínky pro omezení pohybu hráče na herní obrazovce.
Přidání pohybu hráče se vstupem myši
Kromě vstupů z klávesnice můžete také přidat pohyb hráče pomocí vstupu myši. Definujte on_mouse_motion() metoda, která se spustí, když hráč pohne myší. Uvnitř metody nastavte střed_x a centrum_y vlastnosti objektu hráče na aktuální pozici myši.
defon_mouse_motion(self, x, y, dx, dy):
self.player.center_x = x
self.player.center_y = y
Při přidávání pohybu hráče pomocí vstupu myši můžete přizpůsobit chování objektu hráče, když uživatel klikne nebo podrží myš, definováním metod, jako je např. on_mouse_press() nebo on_mouse_drag(). Tyto metody můžete použít ke spouštění akcí hráčů, jako je střelba nebo skákání, v závislosti na herních mechanismech.
Představujeme další funkce
Pohyb hráče můžete dále zlepšit tím, že vezmete v úvahu zrychlení a zpomalení. Upravte on_key_press() metoda odečíst nebo přidat k změnit_x a změnit_y vlastnosti předmětu hráče v závislosti na směru pohybu. Nastavte také změnit_x a změnit_y vlastnosti na 0 v on_key_release() metodou, jako dříve.
defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player.change_x -= 5
elif klíč == arcade.key. ŽE JO:
self.player.change_x += 5
elif klíč == arcade.key. NAHORU:
self.player.change_y += 5
elif klíč == arcade.key. DOLŮ:
self.player.change_y -= 5
defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
self.player.change_x = 0
elif klíč == arcade.key. NAHORU nebo klíč == arcade.key. DOLŮ:
self.player.change_y = 0
Stejně jako PyGame můžete také přidat detekci kolize mezi objektem hráče a další herní objekty, jako jsou nepřátelé nebo překážky v arkádách. Toho můžete dosáhnout přidáním následujícího kódu do Aktualizace() metoda MyGame třída:
defAktualizace(self, delta_time):
self.player.update()# Zkontrolujte kolize mezi hráčem a jinými herními objekty
kolize = arcade.check_for_collision_with_list (self.player, self.enemy_list)
pro kolize v kolize:
kolize.kill()
Vytvořte poutavé hry s interaktivním pohybem hráče
Interaktivní pohyb hráče je zásadním aspektem každé poutavé hry. Použití různých typů mechanik pohybu, jako je skákání, běh, létání a klouzání, může přidat do hry rozmanitost a vzrušení.
Dát hráčům kontrolu nad jejich pohybem dodává pocit agentury a ponoření, což může vést k uspokojivějšímu hernímu zážitku.