Okořeňte své arkádové hry představováním nepřátel.

Nepřátelé hrají klíčovou roli při vytváření poutavých a náročných her. Poskytují hráčům překážky a protivníky, díky čemuž je herní zážitek ještě vzrušující. Knihovna Arcade v Pythonu nabízí přímý způsob, jak začlenit nepřátele do vašich her.

Vytvořte jednoduchou hru

Než začnete, ujistěte se, že máte pip nainstalovaný na vašem zařízení. Tento příkaz použijte k instalaci pasáž knihovna:

pip instalační arkáda

Poté začněte vytvořením jednoduché hry, kde se hráč může pohybovat doleva a doprava pomocí kláves se šipkami.

Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.

import pasáž

# Rozměry okna
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Atributy hráče
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

třídaGameWindow(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška)
arcade.set_background_color (arcade.color. BÍLÝ)
self.player_x = šířka // 2

defon_draw(já):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. MODRÝ)

instagram viewer

defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player_x -= RYCHLOST HRÁČE
elif klíč == arcade.key. ŽE JO:
self.player_x += RYCHLOST HRÁČE

defAktualizace(self, delta_time):
složit

defhlavní():
okno = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

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

Vytvoření jednoduchého nepřítele

Chcete-li vytvořit nepřítele, který zabije hráče při srážce, vytvořte na obrazovce další kruh. V on_draw funkce, můžete nakreslit tento nepřátelský kruh a zkontrolovat kolize v Aktualizace metoda. Můžete také použijte skřítky pro nepřátele.

# Přidat do třídy GameWindow

třídaGameWindow(pasáž. Okno):
# ...

def__init__(vlastní, šířka, výška):
# ...

# Atributy nepřítele
self.nemy_x = šířka // 2
self.nemy_y = výška - PLAYER_RADIUS
self.nemy_radius = 20

defon_draw(já):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.nemy_radius, arcade.color. ČERVENÉ)

defAktualizace(self, delta_time):
-li self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.nemy_radius):
tisk("Konec hry!")

defis_collision(vlastní, x1, y1, x2, y2, poloměr1, poloměr2):
vzdálenost_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
poloměr_součet_čtverce = (poloměr1 + poloměr2) ** 2
vrátit se distance_squared <= poloměr_sum_squared

Dělat nepřítele následujte hráče

V některých hrách mohou nepřátelé hráče pronásledovat a přidat tak do hry dynamický prvek. Chcete-li vytvořit následujícího nepřítele, musíte aktualizovat jeho pozici na základě pozice hráče. Kdykoli hráč se pohybuje, nepřítel se pohybuje stejným směrem. Toho můžete dosáhnout úpravou Aktualizace metoda. Vytvořte nový soubor s názvem nepřítel-sledovat-player.py a přidejte kód s níže uvedenými aktualizacemi:

# Přidat do třídy GameWindow

třídaGameWindow(pasáž. Okno):
# ...

defAktualizace(self, delta_time):
-li self.player_x < self.enemy_x:
self.nemy_x -= RYCHLOST HRÁČE
elif self.player_x > self.enemy_x:
self.nemy_x += RYCHLOST HRÁČE

-li self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
tisk("Konec hry!")

defis_collision(vlastní, x1, y1, x2, y2, poloměr1, poloměr2):
vzdálenost_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
poloměr_součet_čtverce = (poloměr1 + poloměr2) ** 2
vrátit se distance_squared <= poloměr_sum_squared

Níže je výstup:

Přidání nepřátelských kulek

Chcete-li vytvořit nepřítele, který střílí kulky, vytvořte a Kulka třída a seznam pro sledování aktivních odrážek. Nepřítel bude pravidelně vytvářet novou kulku a aktualizovat svou pozici. Vytvořte nový soubor s názvem kulky.py a přidejte kód s níže uvedenými aktualizacemi:

# Přidat do třídy GameWindow

třídaKulka:
def__init__(vlastní, x, y, poloměr, rychlost):
self.x = x
self.y = y
self.radius = rádius
self.speed = rychlost

defAktualizace(já):
self.y -= samo.rychlost

třídaGameWindow(pasáž. Okno):
# ...

def__init__(vlastní, šířka, výška):
# ...

# Atributy nepřítele
self.bullets = []
self.bullet_radius = 5
self.rychlost_kulky = 3
self.bullet_cooldown = 60# Počet snímků mezi kulkami
self.bullet_timer = 0

defon_draw(já):
# ...
pro kulka v self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. ČERNÁ)

defAktualizace(self, delta_time):
# ...

self.bullet_timer += 1
-li self.bullet_timer >= self.bullet_cooldown:
self.bullets.append (Bullet (self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0

pro kulka v self.bullets:
bullet.update()
-li self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
tisk("Konec hry!")

defis_collision(vlastní, x1, y1, x2, y2, poloměr1, poloměr2):
vzdálenost_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
poloměr_součet_čtverce = (poloměr1 + poloměr2) ** 2
vrátit se distance_squared <= poloměr_sum_squared

Níže je výstup:

Přidávání bodů zdraví pro nepřátele

V mnoha hrách mohou nepřátelé vlastnit body zdraví (HP), které jim umožňují udržet několik zásahů, než budou poraženi. Přidání bodů zdraví nepřátelům může zavést strategické herní prvky a poskytnout pocit progrese a výzvy. Vytvořte nový soubor s názvem heath-point.py a přidejte kód s níže uvedenými aktualizacemi:

# Rozměry okna
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Atributy hráče
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Atributy nepřítele
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

třídaGameWindow(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška)
arcade.set_background_color (arcade.color. BÍLÝ)
self.player_x = šířka // 2
self.player_y = výška // 2
self.nemy_x = šířka // 2
self.nemy_y = výška - PLAYER_RADIUS
self.enemy_health = NEPŘÍTELSKÉ_ZDRAVÍ
tisknout (self.nemy_health)
defon_draw(já):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkáda.barva. MODRÝ)
-li vlastní zdraví_nepřítele > 0:
arcade.draw_circle_filled (self.enemy_x,
self.nemy_y,
ENEMY_RADIUS,
arkáda.barva. ČERVENÉ)

defAktualizace(self, delta_time):
-li self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
sebe.zdraví_nepřítele -= 10
tisknout (self.nemy_health)

The ENEMY_HEALTH Konstanta má hodnotu 100, která představuje počáteční body zdraví nepřítele. Když se hráč srazí s nepřítelem, můžete mu odečíst nějaké body ze zdraví nepřítele. Chcete-li zobrazit aktualizovanou hodnotu zdraví, můžete vytisknout textový objekt self.health_text který ukazuje aktuální zdraví nepřítele.

Začleněním bodů zdraví pro nepřátele můžete hráčům představit vrstvu výzev a strategie. Zobrazená hodnota zdraví poskytuje vizuální zpětnou vazbu a umožňuje hráčům sledovat zbývající zdraví nepřítele.

Kromě toho můžete kód rozšířit přidáním další logiky a vizuálních prvků, jako je zobrazení ukazatelů zdraví nebo implementace podmínek porážky, když zdraví nepřítele dosáhne nuly.

Nejlepší postupy pro vytváření nepřátel

Při navrhování nepřátel pro vaši hru je důležité vzít v úvahu několik osvědčených postupů, abyste zajistili, že přispějí k náročnému a příjemnému hernímu zážitku. Zde je několik pokynů, které je třeba dodržovat při vytváření nepřátel:

Různé atributy

Vytvářejte nepřátele s různými atributy, jako je rychlost, velikost, zdraví a síla útoku. Různé typy nepřátel by měly představovat různé úrovně obtížnosti, což vyžaduje, aby hráči odpovídajícím způsobem přizpůsobili své strategie. Zavedením směsi nepřátelských atributů můžete udržet hru svěží a poutavou.

Jedinečné chování

Dejte každému typu nepřítele jeho vlastní jedinečné vzorce chování. Někteří nepřátelé se mohou pohybovat předvídatelným způsobem, zatímco jiní mohou vykazovat složitější nebo nevyzpytatelné pohyby. Zvažte začlenění nepřátelských algoritmů umělé inteligence, aby bylo jejich chování inteligentnější a nepředvídatelnější, což hráčům přidá další vrstvu výzvy.

Body zdraví (HP)

Implementujte body zdraví pro nepřátele, abyste získali pocit progrese a trvanlivosti. To umožňuje nepřátelům vydržet několik zásahů, než budou poraženi. Přidělením různého množství HP různým typům nepřátel můžete vytvořit hierarchii obtížnosti a povzbudit hráče, aby strategicky a upřednostňovali své cíle.

Udělejte si hry zábavnější s nepřáteli

Přidání nepřátel do vašich her může výrazně zlepšit herní zážitek. Představují výzvy a motivují hráče ke zlepšení jejich dovedností. Nepřátelé mohou mít různé podoby, od jednoduchých překážek až po složité protivníky řízené umělou inteligencí. Efektivní implementací nepřátel můžete udělat své hry pro hráče poutavější a zábavnější.