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 = 5

razredaGameWindow(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
arcade.set_background_color (arcade.color. BIJELA)
self.player_x = širina // 2

defizvlačenje(sebe):

instagram viewer

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_SPEED

defAžuriraj(sam, delta_vrijeme):
proći

defglavni():
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 = 20

defizvlač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 = brzina

defAžuriraj(sebe):
self.y -= self.brzina

razredaGameWindow(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 = 0

defizvlač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 = 100

razredaGameWindow(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.