Okorente svoje arkádové hry predstavovaním nepriateľov.
Nepriatelia zohrávajú kľúčovú úlohu pri vytváraní pútavých a náročných hier. Poskytujú hráčom prekážky a protivníkov, vďaka čomu je herný zážitok vzrušujúcejší. Knižnica Arcade v Pythone ponúka jednoduchý spôsob, ako začleniť nepriateľov do vašich hier.
Vytvorte jednoduchú hru
Pred začatím sa uistite, že máte pip nainštalovaný na vašom zariadení. Tento príkaz použite na inštaláciu pasáž knižnica:
arkáda na inštaláciu pipu
Potom začnite vytvorením jednoduchej hry, v ktorej sa hráč môže pohybovať doľava a doprava pomocou klávesov so šípkami.
Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.
importovať pasáž
# Rozmery okna
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Atribúty hráča
PLAYER_RADIUS = 25
PLAYER_SPEED = 5triedaGameWindow(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška)
arcade.set_background_color (arcade.color. BIELY)
self.player_x = šírka // 2defon_draw(ja):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. MODRÁ)defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= PLAYER_SPEED
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += PLAYER_SPEEDdefaktualizovať(self, delta_time):
prejsťdefHlavná():
okno = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
ak __meno__ == "__Hlavná__":
Hlavná()
Vytvorenie jednoduchého nepriateľa
Ak chcete vytvoriť nepriateľa, ktorý zabije hráča pri kolízii, vytvorte na obrazovke ďalší kruh. V on_draw funkciu, môžete nakresliť tento nepriateľský kruh a skontrolovať kolízie v aktualizovať metóda. Môžete tiež použite škriatkov na nepriateľov.
# Pridať do triedy GameWindow
triedaGameWindow(arkáda. okno):
# ...def__init__(ja, šírka, výška):
# ...# Atribúty nepriateľa
self.nepriateľ_x = šírka // 2
self.enemy_y = výška - PLAYER_RADIUS
self.nemy_radius = 20defon_draw(ja):
# ...
arcade.draw_circle_filled (self.nemy_x, self.enemy_y, self.nemy_radius, arcade.color. ČERVENÁ)
defaktualizovať(self, delta_time):
ak self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.nemy_radius):
vytlačiť ("Koniec hry!")
defis_collision(vlastné, x1, y1, x2, y2, polomer1, polomer2):
vzdialenosť_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
polomer_sum_squared = (polomer1 + polomer2) ** 2
vrátiť vzdialenosť_squared <= polomer_sum_squared
Vytváranie nepriateľa nasledujte hráča
V niektorých hrách môžu nepriatelia hráča prenasledovať a pridávajú tak do hry dynamický prvok. Ak chcete vytvoriť nasledujúceho nepriateľa, musíte aktualizovať jeho pozíciu na základe pozície hráča. Kedykoľvek hráč sa pohybuje, nepriateľ sa pohybuje rovnakým smerom. Môžete to dosiahnuť úpravou aktualizovať metóda. Vytvorte nový súbor s názvom nepriateľ-nasleduj-player.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Pridať do triedy GameWindow
triedaGameWindow(arkáda. okno):
# ...defaktualizovať(self, delta_time):
ak self.player_x < self.enemy_x:
self.nemy_x -= RÝCHLOSŤ HRÁČA
elif self.player_x > self.enemy_x:
self.nepriateľ_x += RÝCHLOSŤ HRÁČA
ak self.is_collision (self.player_x, self.player_y,
self.nepriateľ_x, self.nepriateľ_y,
PLAYER_RADIUS, ENEMY_RADIUS):
vytlačiť ("Koniec hry!")
defis_collision(vlastné, x1, y1, x2, y2, polomer1, polomer2):
vzdialenosť_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
polomer_sum_squared = (polomer1 + polomer2) ** 2
vrátiť vzdialenosť_squared <= polomer_sum_squared
Nižšie je výstup:
Pridanie nepriateľských guliek
Ak chcete vytvoriť nepriateľa, ktorý strieľa guľky, vytvorte a Bullet trieda a zoznam na sledovanie aktívnych odrážok. Nepriateľ bude pravidelne vytvárať novú guľku a aktualizovať svoju pozíciu. Vytvorte nový súbor s názvom guľky.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Pridať do triedy GameWindow
triedaBullet:
def__init__(vlastné, x, y, polomer, rýchlosť):
self.x = x
self.y = y
self.radius = polomer
self.speed = rýchlosťdefaktualizovať(ja):
self.y -= samo.rýchlosťtriedaGameWindow(arkáda. okno):
# ...def__init__(ja, šírka, výška):
# ...# Atribúty nepriateľa
self.bullets = []
self.polomer_guľky = 5
self.rýchlosť_guľky = 3
self.bullet_cooldown = 60# Počet snímok medzi spawnmi guliek
self.bullet_timer = 0defon_draw(ja):
# ...
pre guľka v vlastné guľky:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. ČIERNA)defaktualizovať(self, delta_time):
# ...self.bullet_timer += 1
ak self.bullet_timer >= self.bullet_cooldown:
self.bullets.append (Gullet (self.enemy_x, self.enemy_y - self.nemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0
pre guľka v vlastné guľky:
bullet.update()
ak self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.nemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
vytlačiť ("Koniec hry!")
defis_collision(vlastné, x1, y1, x2, y2, polomer1, polomer2):
vzdialenosť_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
polomer_sum_squared = (polomer1 + polomer2) ** 2
vrátiť vzdialenosť_squared <= polomer_sum_squared
Nižšie je výstup:
Pridávanie bodov zdravia pre nepriateľov
V mnohých hrách môžu nepriatelia vlastniť body zdravia (HP), čo im umožňuje utrpieť niekoľko zásahov, kým budú porazení. Pridávanie bodov zdravia nepriateľom môže zaviesť strategické herné prvky a poskytnúť pocit progresu a výzvy. Vytvorte nový súbor s názvom heath-point.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Rozmery okna
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Atribúty hráča
PLAYER_RADIUS = 25
PLAYER_SPEED = 5# Atribúty nepriateľa
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100triedaGameWindow(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška)
arcade.set_background_color (arcade.color. BIELY)
self.player_x = šírka // 2
self.player_y = výška // 2
self.nepriateľ_x = šírka // 2
self.enemy_y = výška - PLAYER_RADIUS
self.health_nepriateľa = NEPRIATEĽSKÉ_ZDRAVIE
tlačiť (self.nemy_health)
defon_draw(ja):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkádová.farebná. MODRÁ)
ak seba.zdravie_nepriatela > 0:
arcade.draw_circle_filled (self.nemy_x,
self.nemy_y,
ENEMY_RADIUS,
arkádová.farebná. ČERVENÁ)
defaktualizovať(self, delta_time):
ak self.is_collision (self.player_x, self.player_y,
self.nepriateľ_x, self.nepriateľ_y,
PLAYER_RADIUS, ENEMY_RADIUS):
seba.zdravie_nepriatela -= 10
tlačiť (self.nemy_health)
The ENEMY_HEALTH konštanta má hodnotu 100, ktorá predstavuje počiatočné body zdravia nepriateľa. Keď sa hráč zrazí s nepriateľom, môžete mu odpočítať nejaké body zo zdravia. Ak chcete zobraziť aktualizovanú hodnotu zdravia, môžete vytlačiť textový objekt self.health_text ktorý ukazuje aktuálny stav nepriateľa.
Začlenením bodov zdravia pre nepriateľov môžete hráčom predstaviť vrstvu výziev a stratégie. Zobrazená hodnota zdravia poskytuje vizuálnu spätnú väzbu a umožňuje hráčom sledovať zostávajúce zdravie nepriateľa.
Okrem toho môžete kód rozšíriť pridaním ďalšej logiky a vizuálov, ako je napríklad zobrazenie ukazovateľov zdravia alebo implementácia podmienok porážky, keď zdravie nepriateľa dosiahne nulu.
Osvedčené postupy na vytváranie nepriateľov
Pri navrhovaní nepriateľov pre vašu hru je dôležité zvážiť niekoľko osvedčených postupov, aby ste sa uistili, že prispievajú k náročnému a príjemnému hernému zážitku. Pri vytváraní nepriateľov je potrebné dodržiavať niekoľko zásad:
Rôzne atribúty
Vytvárajte nepriateľov s rôznymi vlastnosťami, ako je rýchlosť, veľkosť, zdravie a sila útoku. Rôzne typy nepriateľov by mali predstavovať rôzne úrovne obtiažnosti, čo od hráčov vyžaduje, aby tomu prispôsobili svoje stratégie. Zavedením kombinácie nepriateľských atribútov môžete udržať hrateľnosť sviežu a pútavú.
Jedinečné správanie
Dajte každému typu nepriateľa jeho vlastné jedinečné vzorce správania. Niektorí nepriatelia sa môžu pohybovať predvídateľným spôsobom, zatiaľ čo iní môžu vykazovať zložitejšie alebo nepravidelné pohyby. Zvážte začlenenie algoritmov AI nepriateľov, aby bolo ich správanie inteligentnejšie a nepredvídateľnejšie, čím sa hráčom pridá ďalšia vrstva výzvy.
Body zdravia (HP)
Implementujte body zdravia pre nepriateľov, aby ste získali pocit pokroku a trvanlivosti. To umožňuje nepriateľom vydržať niekoľko zásahov, kým budú porazení. Priradením rôzneho množstva HP rôznym typom nepriateľov môžete vytvoriť hierarchiu obtiažnosti a povzbudiť hráčov, aby si stanovili stratégiu a uprednostnili svoje ciele.
Urobte hry zábavnejšie s nepriateľmi
Pridanie nepriateľov do vašich hier môže výrazne zlepšiť herný zážitok. Predstavujú výzvy a motivujú hráčov, aby zlepšovali svoje schopnosti. Nepriatelia môžu mať rôzne podoby, od jednoduchých prekážok až po zložitých protivníkov riadených AI. Efektívnym implementovaním nepriateľov môžete urobiť svoje hry pútavejšie a zábavnejšie pre hráčov.