Täiustage oma arkaadmänge, tutvustades vaenlasi.

Vaenlased mängivad kaasahaaravate ja väljakutseid pakkuvate mängude loomisel otsustavat rolli. Need pakuvad mängijatele takistusi ja vastaseid, muutes mängukogemuse põnevamaks. Pythoni arkaadide teek pakub lihtsat viisi vaenlaste mängudesse kaasamiseks.

Looge lihtne mäng

Enne alustamist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku installimiseks arkaad raamatukogu:

pip install arkaad

Pärast seda alustage lihtsa mängu loomisega, kus mängija saab nooleklahvide abil vasakule ja paremale liikuda.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

importida arkaad

# Akna mõõdud
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Mängija atribuudid
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

klassMänguaken(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus)
arcade.set_background_color (arcade.color. VALGE)
self.player_x = laius // 2

defon_draw(ise):
arcade.start_render()

instagram viewer

arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. SININE)

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= PLAYER_SPEED
elif võti == arcade.key. PAREMALE:
self.player_x += PLAYER_SPEED

defvärskendada(ise, delta_aeg):
üle andma

defpeamine():
aken = Mänguaken (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

kui __nimi__ == "__main__":
peamine ()

Lihtsa vaenlase loomine

Et luua vaenlane, kes tapab mängija kokkupõrkel, looge ekraanile teine ​​ring. Aastal on_draw funktsiooni, saate joonistada selle vaenlase ringi ja kontrollida, kas selles pole kokkupõrkeid värskendada meetod. Sa saad ka kasutage vaenlaste jaoks spraite.

# Lisa GameWindow klassi

klassMänguaken(arkaad. aken):
# ...

def__selles__(ise, laius, kõrgus):
# ...

# Vaenlase atribuudid
self.enemy_x = laius // 2
self.enemy_y = kõrgus – PLAYER_RADIUS
ise.vaenlase_raadius = 20

defon_draw(ise):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enem_y, self.enemy_radius, arcade.color. PUNANE)

defvärskendada(ise, delta_aeg):
kui self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
print("Mäng läbi!")

defon_kokkupõrge(ise, x1, y1, x2, y2, raadius1, raadius2):
kaugus_ruut = (x1 - x2) ** 2 + (y1 - y2) ** 2
raadius_sum_ruut = (raadius1 + raadius2) ** 2
tagasi kauguse_ruut <= raadiuse_summa_ruut

Vaenlase panemine mängijat järgima

Mõnes mängus võivad vaenlased mängijat taga ajada, lisades mängule dünaamilise elemendi. Järgmise vaenlase loomiseks peate värskendama selle positsiooni vastavalt mängija positsioonile. Millal iganes mängija liigub, vaenlane liigub samas suunas. Seda saate saavutada, muutes värskendada meetod. Looge uus fail nimega vaenlane-follow-player.py ja lisage kood koos allolevate värskendustega:

# Lisa GameWindow klassi

klassMänguaken(arkaad. aken):
# ...

defvärskendada(ise, delta_aeg):
kui self.player_x < self.enem_x:
self.enemy_x -= MÄNGIJA_KIIRUS
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

kui self.is_collision (self.player_x, self.player_y,
ise.vaenlane_x, ise.vaenlane_y,
PLAYER_RADIUS, ENEMY_RADIUS):
print("Mäng läbi!")

defon_kokkupõrge(ise, x1, y1, x2, y2, raadius1, raadius2):
kaugus_ruut = (x1 - x2) ** 2 + (y1 - y2) ** 2
raadius_sum_ruut = (raadius1 + raadius2) ** 2
tagasi kauguse_ruut <= raadiuse_summa_ruut

Allpool on väljund:

Vaenlase kuulide lisamine

Kuule tulistava vaenlase loomiseks looge a Täpp klass ja nimekiri aktiivsete täppide jälgimiseks. Vaenlane loob perioodiliselt uue kuuli ja värskendab oma positsiooni. Looge uus fail nimega bullets.py ja lisage kood koos allolevate värskendustega:

# Lisa GameWindow klassi

klassTäpp:
def__selles__(ise, x, y, raadius, kiirus):
ise.x = x
ise.y = y
ise.raadius = raadius
ise.kiirus = kiirus

defvärskendada(ise):
ise.y -= ise.kiirus

klassMänguaken(arkaad. aken):
# ...

def__selles__(ise, laius, kõrgus):
# ...

# Vaenlase atribuudid
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Kaadrite arv kuulide vahel
self.bullet_timer = 0

defon_draw(ise):
# ...
jaoks täpp sisse self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. MUST)

defvärskendada(ise, delta_aeg):
# ...

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

jaoks täpp sisse self.bullets:
bullet.update()
kui self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
print("Mäng läbi!")

defon_kokkupõrge(ise, x1, y1, x2, y2, raadius1, raadius2):
kaugus_ruut = (x1 - x2) ** 2 + (y1 - y2) ** 2
raadius_sum_ruut = (raadius1 + raadius2) ** 2
tagasi kauguse_ruut <= raadiuse_summa_ruut

Allpool on väljund:

Vaenlaste tervisepunktide lisamine

Paljudes mängudes võivad vaenlased omada tervisepunkte (HP), mis võimaldab neil enne lüüasaamist mitu tabamust. Vaenlastele tervisepunktide lisamine võib tutvustada strateegilisi mänguelemente ning pakkuda edasimineku ja väljakutsete tunnet. Looge uus fail nimega heath-point.py ja lisage kood koos allolevate värskendustega:

# Akna mõõdud
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Mängija atribuudid
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Vaenlase atribuudid
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

klassMänguaken(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus)
arcade.set_background_color (arcade.color. VALGE)
self.player_x = laius // 2
self.player_y = kõrgus // 2
self.enemy_x = laius // 2
self.enemy_y = kõrgus – PLAYER_RADIUS
ise.vaenlase_tervis = VAENA_TERVIS
print (self.enemy_health)
defon_draw(ise):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkaad.värv. SININE)
kui ise.vaenlase_tervis> 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arkaad.värv. PUNANE)

defvärskendada(ise, delta_aeg):
kui self.is_collision (self.player_x, self.player_y,
ise.vaenlane_x, ise.vaenlane_y,
PLAYER_RADIUS, ENEMY_RADIUS):
ise.vaenlase_tervis -= 10
print (self.enemy_health)

The ENEMY_HEALTH konstanti väärtus on 100, mis tähistab vaenlase esialgseid tervisepunkte. Kui mängija põrkab kokku vaenlasega, saate vaenlase tervisest mõned punktid maha arvata. Värskendatud terviseväärtuse kuvamiseks saate printida tekstiobjekti ise.tervise_tekst mis näitab praeguse vaenlase tervist.

Lisades vaenlaste tervisepunkte, saate mängijatele pakkuda väljakutseid ja strateegiat. Kuvatav terviseväärtus annab visuaalset tagasisidet ja võimaldab mängijatel jälgida vaenlase allesjäänud tervist.

Lisaks saate koodi laiendada, lisades täiendavaid loogikaid ja visuaale, nagu näiteks terviseribade kuvamine või lüüasaamistingimuste rakendamine, kui vaenlase tervis jõuab nulli.

Vaenlaste loomise parimad tavad

Mängu jaoks vaenlasi kavandades on oluline arvestada mitmete parimate tavadega, et need aitaksid kaasa väljakutseid pakkuvale ja nauditavale mängukogemusele. Siin on mõned juhised, mida vaenlase loomisel järgida:

Mitmekesised atribuudid

Looge vaenlasi erinevate omadustega, nagu kiirus, suurus, tervis ja ründejõud. Erinevad vaenlase tüübid peaksid olema erineva raskusastmega, nõudes mängijatelt oma strateegiaid vastavalt kohandama. Vaenlase atribuutide kombinatsiooni tutvustades saate hoida mängu värske ja kaasahaaravana.

Ainulaadne käitumine

Andke igale vaenlase tüübile oma unikaalsed käitumismustrid. Mõned vaenlased võivad liikuda etteaimatavalt, samas kui teised võivad näidata keerukamaid või korrapäratumaid liikumisi. Kaaluge vaenlase AI-algoritmide kaasamist, et muuta nende käitumine intelligentsemaks ja ettearvamatumaks, lisades mängijatele täiendava väljakutse.

Tervisepunktid (HP)

Rakendage vaenlastele tervisepunkte, et tutvustada edenemise ja vastupidavuse tunnet. See võimaldab vaenlastel enne lüüasaamist mitu tabamust. Määrates erinevatele vaenlase tüüpidele erineva koguse HP-d, saate luua raskuste hierarhia ja julgustada mängijaid oma sihtmärke strateegiaid koostama ja tähtsuse järjekorda seadma.

Muutke mängud vaenlastega lõbusamaks

Mängudesse vaenlaste lisamine võib mängukogemust märkimisväärselt parandada. Nad tutvustavad väljakutseid ja motiveerivad mängijaid oma oskusi täiendama. Vaenlased võivad esineda erinevas vormis, alates lihtsatest takistustest kuni keerukate AI-põhiste vastasteni. Vaenlasi tõhusalt rakendades saate muuta oma mängud mängijate jaoks kaasahaaravamaks ja nauditavamaks.