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 = 5klassMä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 // 2defon_draw(ise):
arcade.start_render()
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_SPEEDdefvärskendada(ise, delta_aeg):
üle andmadefpeamine():
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 = 20defon_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 = kiirusdefvärskendada(ise):
ise.y -= ise.kiirusklassMä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 = 0defon_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 = 100klassMä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.