Papildiniet savas arkādes spēles, iepazīstinot ar ienaidniekiem.

Ienaidniekiem ir izšķiroša loma saistošu un izaicinošu spēļu veidošanā. Tie nodrošina spēlētājiem šķēršļus un pretiniekus, padarot spēļu pieredzi aizraujošāku. Python Arcade bibliotēka piedāvā vienkāršu veidu, kā iekļaut ienaidniekus savās spēlēs.

Izveidojiet vienkāršu spēli

Pirms sākat, pārliecinieties, ka jums ir pip ir instalēts jūsu ierīcē. Izmantojiet šo komandu, lai instalētu arkāde bibliotēka:

pip instalēšanas arkāde

Pēc tam sāciet, izveidojot vienkāršu spēli, kurā spēlētājs var pārvietoties pa kreisi un pa labi, izmantojot bulttaustiņus.

Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.

imports arkāde

# Logu izmēri
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spēlētāja atribūti
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

klasēGameWindow(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums)
arcade.set_background_color (arcade.color. BALTS)
self.player_x = platums // 2

defon_draw(pats):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. ZILS)

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= PLAYER_SPEED
elifs taustiņš == arcade.key. PA LABI:
self.player_x += PLAYER_SPEED

defAtjaunināt(self, delta_time):
caurlaide

defgalvenais():
logs = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ja __nosaukums__ == "__galvenais__":
galvenais ()

Vienkārša ienaidnieka izveide

Lai izveidotu ienaidnieku, kas sadursmes laikā nogalina spēlētāju, izveidojiet citu apli uz ekrāna. Iekš on_draw funkciju, varat uzzīmēt šo ienaidnieka apli un pārbaudīt, vai tajā nav sadursmju Atjaunināt metodi. Jūs varat arī izmantojiet spraitus ienaidniekiem.

# Pievienot GameWindow klasei

klasēGameWindow(pasāža. logs):
# ...

def__tajā__(pats, platums, augstums):
# ...

# Ienaidnieka atribūti
self.ienaidnieks_x = platums // 2
self.enemy_y = augstums — PLAYER_RADIUS
self.ienaidnieka_rādiuss = 20

defon_draw(pats):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. SARKANS)

defAtjaunināt(self, delta_time):
ja self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
drukāt ("Spēle beigusies!")

defir_sadursme(self, x1, y1, x2, y2, rādiuss1, rādiuss2):
distance_squared = (x1 - x2)** 2 + (y1 - y2)** 2
rādiuss_sum_squared = (rādiuss1 + rādiuss2) ** 2
atgriezties distance_squared <= rādiuss_sum_quared

Likt ienaidniekam sekot spēlētājam

Dažās spēlēs ienaidnieki var vajāt spēlētāju, pievienojot spēlei dinamisku elementu. Lai izveidotu sekojošu ienaidnieku, jums ir jāatjaunina tā pozīcija, pamatojoties uz spēlētāja pozīciju. Ikreiz, kad spēlētājs pārvietojas, ienaidnieks virzās tajā pašā virzienā. To var panākt, mainot Atjaunināt metodi. Izveidojiet jaunu failu ar nosaukumu ienaidnieks-follow-player.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:

# Pievienot GameWindow klasei

klasēGameWindow(pasāža. logs):
# ...

defAtjaunināt(self, delta_time):
ja self.player_x < self.enemy_x:
self.enemy_x -= SPĒLĒTĀJA_ĀTRUMS
elifs self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

ja self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
drukāt ("Spēle beigusies!")

defir_sadursme(self, x1, y1, x2, y2, rādiuss1, rādiuss2):
distance_squared = (x1 - x2)** 2 + (y1 - y2)** 2
rādiuss_sum_squared = (rādiuss1 + rādiuss2) ** 2
atgriezties distance_squared <= rādiuss_sum_quared

Zemāk ir izvade:

Ienaidnieka ložu pievienošana

Lai izveidotu ienaidnieku, kas šauj lodes, izveidojiet a Lode klase un saraksts, lai izsekotu aktīvajām lodēm. Ienaidnieks periodiski izveidos jaunu lodi un atjauninās savu pozīciju. Izveidojiet jaunu failu ar nosaukumu bullets.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:

# Pievienot GameWindow klasei

klasēLode:
def__tajā__(sevis, x, y, rādiuss, ātrums):
pats.x = x
self.y = y
self.radius = rādiuss
self.speed = ātrums

defAtjaunināt(pats):
self.y -= self.ātrums

klasēGameWindow(pasāža. logs):
# ...

def__tajā__(pats, platums, augstums):
# ...

# Ienaidnieka atribūti
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Kadru skaits starp ložu nārtiem
self.bullet_timer = 0

defon_draw(pats):
# ...
priekš lode iekšā self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. MELNS)

defAtjaunināt(self, delta_time):
# ...

self.bullet_timer += 1
ja 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

priekš lode iekšā self.bullets:
bullet.update()
ja self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
drukāt ("Spēle beigusies!")

defir_sadursme(self, x1, y1, x2, y2, rādiuss1, rādiuss2):
distance_squared = (x1 - x2)** 2 + (y1 - y2)** 2
rādiuss_sum_squared = (rādiuss1 + rādiuss2) ** 2
atgriezties distance_squared <= rādiuss_sum_quared

Zemāk ir izvade:

Veselības punktu pievienošana ienaidniekiem

Daudzās spēlēs ienaidniekiem var būt veselības punkti (HP), kas ļauj viņiem izturēt vairākus sitienus pirms sakāves. Veselības punktu pievienošana ienaidniekiem var ieviest stratēģiskus spēles elementus un nodrošināt progresa un izaicinājuma sajūtu. Izveidojiet jaunu failu ar nosaukumu Heath-point.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:

# Logu izmēri
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spēlētāja atribūti
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Ienaidnieka atribūti
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

klasēGameWindow(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums)
arcade.set_background_color (arcade.color. BALTS)
self.player_x = platums // 2
self.player_y = augstums // 2
self.ienaidnieks_x = platums // 2
self.enemy_y = augstums — PLAYER_RADIUS
self.enemy_health = IENAIDĪBAS_VESELĪBA
drukāt (self.enemy_health)
defon_draw(pats):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkāde.krāsa. ZILS)
ja self.ienaidnieka_veselība > 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arkāde.krāsa. SARKANS)

defAtjaunināt(self, delta_time):
ja self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
sevi.ienaidnieka_veselība -= 10
drukāt (self.enemy_health)

The ENEMY_HEALTH konstantes vērtība ir 100, lai attēlotu ienaidnieka sākotnējos veselības punktus. Kad spēlētājs saduras ar ienaidnieku, jūs varat atņemt dažus punktus no ienaidnieka veselības. Lai parādītu atjaunināto veselības vērtību, varat izdrukāt teksta objektu self.health_text kas parāda pašreizējo ienaidnieka veselību.

Iekļaujot veselības punktus ienaidniekiem, jūs varat ieviest spēlētājiem izaicinājumu un stratēģiju. Parādītā veselības vērtība nodrošina vizuālu atgriezenisko saiti un ļauj spēlētājiem izsekot ienaidnieka atlikušajai veselībai.

Turklāt jūs varat paplašināt kodu, pievienojot papildu loģiku un vizuālos elementus, piemēram, parādot veselības joslas vai ieviešot sakāves nosacījumus, kad ienaidnieka veselība sasniedz nulli.

Paraugprakse ienaidnieku radīšanai

Izstrādājot savai spēlei ienaidniekus, ir svarīgi ņemt vērā vairākas labākās prakses, lai nodrošinātu, ka tie veicina izaicinošu un patīkamu spēles pieredzi. Šeit ir daži norādījumi, kas jāievēro, veidojot ienaidniekus:

Dažādas īpašības

Izveidojiet ienaidniekus ar dažādiem atribūtiem, piemēram, ātrumu, izmēru, veselību un uzbrukuma spēku. Dažādiem ienaidnieku veidiem vajadzētu radīt dažādas grūtības pakāpes, pieprasot spēlētājiem attiecīgi pielāgot savas stratēģijas. Ieviešot dažādus ienaidnieka atribūtus, jūs varat saglabāt spēli svaigu un saistošu.

Unikāla uzvedība

Piešķiriet katram ienaidnieka tipam savus unikālos uzvedības modeļus. Daži ienaidnieki var pārvietoties paredzamā veidā, bet citi var izrādīt sarežģītākas vai nepastāvīgākas kustības. Apsveriet iespēju iekļaut ienaidnieka AI algoritmus, lai padarītu viņu uzvedību viedāku un neparedzamāku, pievienojot spēlētājiem papildu izaicinājumu.

Veselības punkti (HP)

Ieviesiet veselības punktus ienaidniekiem, lai radītu progresēšanas un izturības sajūtu. Tas ļauj ienaidniekiem izturēt vairākus sitienus pirms sakāves. Piešķirot dažādus HP daudzumus dažādiem ienaidnieku veidiem, jūs varat izveidot sarežģītības hierarhiju un mudināt spēlētājus izstrādāt stratēģiju un noteikt prioritātes saviem mērķiem.

Padariet spēles jautrākas ar ienaidniekiem

Ienaidnieku pievienošana spēlēm var ievērojami uzlabot spēles pieredzi. Tie ievieš izaicinājumus un motivē spēlētājus uzlabot savas prasmes. Ienaidnieki var būt dažādos veidos, sākot no vienkāršiem šķēršļiem līdz sarežģītiem AI vadītiem pretiniekiem. Efektīvi ieviešot ienaidniekus, jūs varat padarīt savas spēles spēlētājiem saistošākas un patīkamākas.