Ať už kolize umožní zapnutí nebo ukončení hry, musíte ji být schopni detekovat. Zde je návod, jak to udělat s arkádovou knihovnou Pythonu.
Kolize jsou základním aspektem hry v mnoha žánrech videoher. Přidávají do her vrstvu výzvy a vzrušení a vyžadují, aby hráči procházeli překážkami, vyhýbali se nepřátelům a sbírali odměny.
Implementace detekce kolizí a jejich řešení ve vašich hrách je zásadní pro vytvoření realistických a dynamických herních mechanismů, které udrží hráče v záběru a pobaví je. Pomocí vestavěných funkcí můžete snadno detekovat kolize s arkádovou knihovnou.
Vytvoření jednoduché hry
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:
pip instalační arkáda
Poté vytvořte hru, kde se hráč může pohybovat doleva a doprava, aby se vyhnul kolizi s nepřátelským obdélníkem. Pro sprity můžete použít vestavěnou funkci kreslení.
Můžete najít kompletní kód v tomto úložišti GitHub.
Zde je kód ke hře:
import pasáž
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5tří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 = arkáda. SpriteSolidColor(50, 50, arkáda.barva. MODRÝ)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
sebe.nepřítel = arkáda. SpriteSolidColor(50, 50, arkáda.barva. ČERVENÉ)
self.nemy.center_x = SCREEN_WIDTH // 2
self.nemy.center_y = 50defon_draw(já):
arcade.start_render()
self.player.draw()
self.nemy.draw()defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player.center_x -= RYCHLOST POHYBU
elif klíč == arcade.key. ŽE JO:
self.player.center_x += MOVEMENT_SPEEDdefAktualizace(self, delta_time):
-li arcade.check_for_collision (self.player, self.nemy):
tisk("Konec hry")defhlavní():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
-li __jméno__ == "__hlavní__":
hlavní()
Funkce detekce kolize v Arcade
Knihovna Arcade poskytuje jednoduchý způsob, jak detekovat kolize mezi sprity. The check_for_collision funkce bere dva sprajty jako argumenty a vrací booleovskou hodnotu označující, zda došlo ke kolizi spritů. Tuto funkci můžete použít k detekci kolizí mezi hráčem a nepřátelskými skřítky ve vaší hře.
Můžete změnit Aktualizace metoda kontroly kolizí mezi hráčem a nepřátelskými skřítky. Pokud knihovna zjistí kolizi, můžete tisknout Konec hry do konzole.
Zde je aktualizovaný kód:
defAktualizace(self, delta_time):
-li arcade.check_for_collision (self.player, self.nemy):
tisk("Konec hry")
jiný:
self.player.update()
Díky této změně bude vaše hra detekovat kolize a tisknout Konec hry text, pokud se hráč srazí s nepřítelem.
Přidávání dalších funkcí
Aby byla vaše hra poutavější, můžete přidat další funkce, jako je bodování, vylepšení a více nepřátel.
Můžete si například vytvořit seznam nepřátel a aktualizovat hru tak, aby po každé srážce vytvářela nové nepřátele na náhodných pozicích. Můžeš přesunout přehrávač doleva a doprava, abyste se vyhnuli nepříteli a získali bod. Zde je příklad, jak můžete implementovat tyto funkce:
import náhodný
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 = arkáda. SpriteSolidColor(50, 50, arkáda.barva. MODRÝ)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
sebe.nepřátelé = arkáda. SpriteList()
sebe.skóre = 0
pro i v rozsah(3):
nepřítel = arkáda. SpriteSolidColor(50, 50, arkáda.barva. ČERVENÉ)
nepřítel.centrum_x = random.randint(0, SCREEN_WIDTH)
nepřítel.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.nepřátelé.připojit (nepřítel)defon_draw(já):
arcade.start_render()
self.player.draw()
self.nepřátelé.draw()
arcade.draw_text(f" Skóre: {self.score}", 10, SCREEN_HEIGHT – 30, arkáda.barva. ČERNÁ, 16)
defAktualizace(self, delta_time):
-li arcade.check_for_collision_with_list (self.player, self.enemies):
tisk("Konec hry")
arcade.close_window()
jiný:
self.player.update()
pro nepřítel v sebe.nepřátelé:
nepřítel.center_y -= RYCHLOST POHYBU / 2
-li nepřítel.centrum_y < 0:
nepřítel.centrum_x = random.randint(0, SCREEN_WIDTH)
nepřítel.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
sebe.skóre += 1
Díky těmto změnám má vaše hra nyní několik nepřátel, kteří se objevují na náhodných pozicích a pohybují se dolů. Hráč získává bod za každého úspěšně vyhnutého nepřítele a hra končí, pokud se hráč srazí s jakýmkoli nepřítelem.
Zlepšete zapojení uživatelů s kolizemi
Přidáním funkcí detekce kolizí a jejich zvládání do svých her můžete pro hráče vytvořit působivější a náročnější herní zážitky. Od jednoduchých her vyhýbejte se a sbírejte až po složitější plošinovky a střílečky, kolize hrají klíčovou roli při vytváření poutavých a uspokojivých herních mechanismů.
Pokud tedy chcete vytvářet poutavější a pohlcující hry, které hráče přinutí vracet se pro více, zvažte začlenění funkcí detekce kolizí do herních mechanismů.