Začinite svoje arkadne igre uvođenjem neprijatelja.
Neprijatelji igraju ključnu ulogu u stvaranju zanimljivih i izazovnih igara. Oni pružaju prepreke i protivnike za igrače, čineći iskustvo igranja uzbudljivijim. Pythonova biblioteka Arcade nudi jednostavan način za uključivanje neprijatelja u vaše igre.
Stvorite jednostavnu igru
Prije početka provjerite imate li pip instaliran na vašem uređaju. Koristite ovu naredbu za instalaciju arkada knjižnica:
pip instaliraj arkadu
Nakon toga počnite stvarati jednostavnu igru u kojoj se igrač može pomicati lijevo i desno pomoću tipki sa strelicama.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
uvoz arkada
# Dimenzije prozora
SCREEN_WIDTH = 800
VISINA_EKRANA = 600# Atributi igrača
PLAYER_RADIUS = 25
PLAYER_SPEED = 5razredaGameWindow(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
arcade.set_background_color (arcade.color. BIJELA)
self.player_x = širina // 2defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. PLAVA)defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= PLAYER_SPEED
elif ključ == arkada.ključ. PRAVO:
self.player_x += PLAYER_SPEEDdefAžuriraj(sam, delta_vrijeme):
proćidefglavni():
prozor = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arkada.run()
ako __ime__ == "__glavni__":
glavni()
Stvaranje jednostavnog neprijatelja
Za stvaranje neprijatelja koji ubija igrača nakon sudara, stvorite još jedan krug na ekranu. u izvlačenje funkciju, možete nacrtati ovaj neprijateljski krug i provjeriti ima li sudara u Ažuriraj metoda. Također možete koristiti duhove za neprijatelje.
# Dodaj u klasu GameWindow
razredaGameWindow(arkada. Prozor):
# ...def__u tome__(ja, širina, visina):
# ...# Atributi neprijatelja
self.enemy_x = širina // 2
self.enemy_y = visina - PLAYER_RADIUS
self.neprijatelj_radijus = 20defizvlačenje(sebe):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. CRVENA)
defAžuriraj(sam, delta_vrijeme):
ako self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
ispis("Igra je gotova!")
defje_sudar(ja, x1, y1, x2, y2, polumjer1, polumjer2):
udaljenost_na kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radijus_zbroj_kvadrat = (radijus1 + radijus2) ** 2
povratak udaljenost_na kvadrat <= radijus_zbroj_na kvadrat
Natjerati neprijatelja da slijedi igrača
U nekim igrama neprijatelji mogu loviti igrača, dodajući dinamičan element igranju. Da biste stvorili sljedećeg neprijatelja, morate ažurirati njegov položaj na temelju položaja igrača. Kad god igrač se kreće, neprijatelj se kreće u istom smjeru. To možete postići izmjenom Ažuriraj metoda. Stvorite novu datoteku pod nazivom enemy-follow-player.py i dodajte kod sa sljedećim ažuriranjima:
# Dodaj u klasu GameWindow
razredaGameWindow(arkada. Prozor):
# ...defAžuriraj(sam, delta_vrijeme):
ako self.player_x < self.enemy_x:
self.neprijatelj_x -= BRZINA_IGRAČA
elif self.player_x > self.enemy_x:
self.neprijatelj_x += PLAYER_SPEED
ako self.is_collision (self.player_x, self.player_y,
self.nenemy_x, self.nenemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
ispis("Igra je gotova!")
defje_sudar(ja, x1, y1, x2, y2, polumjer1, polumjer2):
udaljenost_na kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radijus_zbroj_kvadrat = (radijus1 + radijus2) ** 2
povratak udaljenost_na kvadrat <= radijus_zbroj_na kvadrat
Ispod je izlaz:
Dodavanje neprijateljskih metaka
Da biste stvorili neprijatelja koji puca metke, stvorite a Metak klasa i popis za praćenje aktivnih metaka. Neprijatelj će povremeno kreirati novi metak i ažurirati svoj položaj. Stvorite novu datoteku pod nazivom meci.py i dodajte kod sa sljedećim ažuriranjima:
# Dodaj u klasu GameWindow
razredaMetak:
def__u tome__(ja, x, y, radijus, brzina):
sebe.x = x
self.y = y
sam.radijus = radijus
samo.brzina = brzinadefAžuriraj(sebe):
self.y -= self.brzinarazredaGameWindow(arkada. Prozor):
# ...def__u tome__(ja, širina, visina):
# ...# Atributi neprijatelja
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Broj okvira između pojavljivanja metaka
self.bullet_timer = 0defizvlačenje(sebe):
# ...
za metak u self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. CRNO)defAžuriraj(sam, delta_vrijeme):
# ...self.bullet_timer += 1
ako 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
za metak u self.bullets:
bullet.update()
ako self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
ispis("Igra je gotova!")
defje_sudar(ja, x1, y1, x2, y2, polumjer1, polumjer2):
udaljenost_na kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radijus_zbroj_kvadrat = (radijus1 + radijus2) ** 2
povratak udaljenost_na kvadrat <= radijus_zbroj_na kvadrat
Ispod je izlaz:
Dodavanje zdravstvenih bodova za neprijatelje
U mnogim igrama neprijatelji mogu posjedovati zdravstvene bodove (HP), što im omogućuje da izdrže više udaraca prije nego što budu poraženi. Dodavanje zdravstvenih bodova neprijateljima može uvesti strateške elemente igranja i pružiti osjećaj napredovanja i izazova. Stvorite novu datoteku pod nazivom heat-point.py i dodajte kod sa sljedećim ažuriranjima:
# Dimenzije prozora
SCREEN_WIDTH = 800
VISINA_EKRANA = 600# Atributi igrača
PLAYER_RADIUS = 25
PLAYER_SPEED = 5# Atributi neprijatelja
NEPRIJATELJ_RADIJUS = 20
NEPRIJATELJ_ZDRAVLJE = 100razredaGameWindow(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
arcade.set_background_color (arcade.color. BIJELA)
self.player_x = širina // 2
self.player_y = visina // 2
self.enemy_x = širina // 2
self.enemy_y = visina - PLAYER_RADIUS
self.neprijatelj_zdravlje = NEPRIJATELJ_ZDRAVLJE
ispis (self.nenemy_health)
defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkada.boja. PLAVA)
ako sebe.neprijatelj_zdravlje > 0:
arcade.draw_circle_filled (self.enemy_x,
self.neprijatelj_y,
ENEMY_RADIUS,
arkada.boja. CRVENA)
defAžuriraj(sam, delta_vrijeme):
ako self.is_collision (self.player_x, self.player_y,
self.nenemy_x, self.nenemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
sebi.neprijatelj_zdravlje -= 10
ispis (self.nenemy_health)
The NEPRIJATELJ_ZDRAVLJE konstanta ima vrijednost 100 da predstavlja početne bodove zdravlja neprijatelja. Kada se igrač sudari s neprijateljem, možete oduzeti neke bodove od neprijateljevog zdravlja. Za prikaz ažurirane vrijednosti zdravlja, možete ispisati tekstualni objekt samo.zdravlje_tekst koji pokazuje trenutno zdravlje neprijatelja.
Uključivanjem zdravstvenih bodova za neprijatelje, možete uvesti sloj izazova i strategije za igrače. Prikazana vrijednost zdravlja pruža vizualnu povratnu informaciju i omogućuje igračima praćenje preostalog zdravlja neprijatelja.
Dodatno, možete proširiti kod dodavanjem daljnje logike i vizualnih elemenata, kao što je prikazivanje traka zdravlja ili implementacija uvjeta poraza kada neprijateljevo zdravlje dosegne nulu.
Najbolje prakse za stvaranje neprijatelja
Kada dizajnirate neprijatelje za svoju igru, važno je razmotriti nekoliko najboljih praksi kako biste bili sigurni da doprinose izazovnom i ugodnom iskustvu igranja. Evo nekih smjernica koje treba slijediti prilikom stvaranja neprijatelja:
Različiti atributi
Stvorite neprijatelje s različitim atributima kao što su brzina, veličina, zdravlje i snaga napada. Različite vrste neprijatelja trebale bi predstavljati različite razine težine, zahtijevajući od igrača da prilagode svoje strategije u skladu s tim. Uvođenjem kombinacije neprijateljskih atributa, možete održati igru svježom i privlačnom.
Jedinstvena ponašanja
Dajte svakoj vrsti neprijatelja svoje jedinstvene obrasce ponašanja. Neki se neprijatelji mogu kretati na predvidljiv način, dok drugi mogu pokazivati složenije ili nestalnije pokrete. Razmislite o uključivanju neprijateljskih AI algoritama kako biste njihovo ponašanje učinili inteligentnijim i nepredvidljivijim, dodajući dodatnu razinu izazova za igrače.
Zdravstveni bodovi (HP)
Implementirajte zdravstvene bodove za neprijatelje kako biste unijeli osjećaj napredovanja i izdržljivosti. To omogućuje neprijateljima da izdrže više udaraca prije nego budu poraženi. Dodjeljivanjem različitih količina HP-a različitim vrstama neprijatelja, možete stvoriti hijerarhiju težine i potaknuti igrače da osmisle strategiju i daju prioritet svojim ciljevima.
Učinite igre zabavnijim s neprijateljima
Dodavanje neprijatelja u vaše igre može značajno poboljšati iskustvo igranja. Oni uvode izazove i motiviraju igrače da poboljšaju svoje vještine. Neprijatelji mogu doći u različitim oblicima, od jednostavnih prepreka do složenih protivnika vođenih umjetnom inteligencijom. Učinkovitom implementacijom neprijatelja, možete učiniti svoje igre privlačnijim i ugodnijim za igrače.