Fűszerezze fel arcade játékait ellenségek bemutatásával.

Az ellenségek döntő szerepet játszanak a lebilincselő és kihívást jelentő játékok létrehozásában. Akadályokat és ellenfeleket jelentenek a játékosok számára, izgalmasabbá téve a játékélményt. A Python Arcade könyvtára egyszerű módot kínál az ellenségek beépítésére a játékokba.

Hozzon létre egy egyszerű játékot

Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik pip telepítve van a készülékére. Ezzel a paranccsal telepítheti a árkád könyvtár:

pip install arcade

Ezután kezdje el egy egyszerű játék létrehozásával, ahol a játékos balra és jobbra mozoghat a nyílbillentyűkkel.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

import árkád

# Ablak méretei
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Játékos attribútumok
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

osztályGameWindow(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
szuper().__init__(szélesség, magasság)
arcade.set_background_color (arcade.color. FEHÉR)
self.player_x = szélesség // 2

instagram viewer

defon_draw(maga):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. KÉK)

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= PLAYER_SPEED
elif kulcs == arcade.key. JOBB:
self.player_x += PLAYER_SPEED

deffrissítés(self, delta_time):
pass

deffő-():
ablak = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ha __név__ == "__fő__":
fő()

Egyszerű ellenség létrehozása

Ha olyan ellenséget szeretne létrehozni, amelyik megöli a játékost ütközéskor, hozzon létre egy másik kört a képernyőn. Ban,-ben on_draw funkciót, megrajzolhatja ezt az ellenséges kört, és ellenőrizheti az ütközéseket a frissítés módszer. Te is használj sprite-okat az ellenségekhez.

# Hozzáadás a GameWindow osztályhoz

osztályGameWindow(árkád. Ablak):
# ...

def__benne__(önmagasság, szélesség, magasság):
# ...

# Ellenséges tulajdonságok
self.enemy_x = szélesség // 2
self.enemy_y = magasság - PLAYER_RADIUS
self.enemy_radius = 20

defon_draw(maga):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. PIROS)

deffrissítés(self, delta_time):
ha self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
nyomtatás("Játék vége!")

defis_collision(saját, x1, y1, x2, y2, sugár1, sugár2):
távolság_négyzet = (x1 - x2) ** 2 + (y1 - y2) ** 2
sugár_összeg_négyzet = (sugár1 + sugár2) ** 2
Visszatérés távolság_négyzet <= sugár_összeg_négyzet

Ellenségessé tenni a játékost

Egyes játékokban az ellenség üldözheti a játékost, dinamikus elemet adva a játékmenethez. Következő ellenség létrehozásához frissítenie kell a pozícióját a játékos pozíciója alapján. Bármikor a játékos mozog, az ellenség ugyanabba az irányba mozog. Ezt a módosításával érheti el frissítés módszer. Hozzon létre egy új nevű fájlt enemy-follow-player.py és adja hozzá a kódot az alábbi frissítésekkel:

# Hozzáadás a GameWindow osztályhoz

osztályGameWindow(árkád. Ablak):
# ...

deffrissítés(self, delta_time):
ha self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

ha self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
nyomtatás("Játék vége!")

defis_collision(saját, x1, y1, x2, y2, sugár1, sugár2):
távolság_négyzet = (x1 - x2) ** 2 + (y1 - y2) ** 2
sugár_összeg_négyzet = (sugár1 + sugár2) ** 2
Visszatérés távolság_négyzet <= sugár_összeg_négyzet

Alább látható a kimenet:

Ellenséges golyók hozzáadása

Ha olyan ellenséget szeretne létrehozni, amely golyókat lő, hozzon létre a Golyó osztályt és egy listát az aktív golyók nyomon követéséhez. Az ellenség időnként új golyót hoz létre, és frissíti a pozícióját. Hozzon létre egy új nevű fájlt bullets.py és adja hozzá a kódot az alábbi frissítésekkel:

# Hozzáadás a GameWindow osztályhoz

osztályGolyó:
def__benne__(ön, x, y, sugár, sebesség):
önmaga.x = x
self.y = y
én.sugár = sugár
self.speed = sebesség

deffrissítés(maga):
self.y -= self.sebesség

osztályGameWindow(árkád. Ablak):
# ...

def__benne__(önmagasság, szélesség, magasság):
# ...

# Ellenséges tulajdonságok
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# A golyók közötti képkockák száma
self.bullet_timer = 0

defon_draw(maga):
# ...
számára golyó ban ben self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. FEKETE)

deffrissítés(self, delta_time):
# ...

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

számára golyó ban ben self.bullets:
bullet.update()
ha self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
nyomtatás("Játék vége!")

defis_collision(saját, x1, y1, x2, y2, sugár1, sugár2):
távolság_négyzet = (x1 - x2) ** 2 + (y1 - y2) ** 2
sugár_összeg_négyzet = (sugár1 + sugár2) ** 2
Visszatérés távolság_négyzet <= sugár_összeg_négyzet

Alább látható a kimenet:

Egészségpontok hozzáadása ellenségekért

Sok játékban az ellenségek életpontokkal (HP) rendelkezhetnek, ami lehetővé teszi számukra, hogy több ütést is el tudjanak érni, mielőtt vereséget szenvednének. Ha egészségügyi pontokat adunk az ellenséghez, akkor stratégiai játékelemek jelennek meg, és a fejlődés és a kihívás érzését kelthetjük. Hozzon létre egy új nevű fájlt Heath-point.py és adja hozzá a kódot az alábbi frissítésekkel:

# Ablak méretei
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Játékos attribútumok
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Ellenséges tulajdonságok
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

osztályGameWindow(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
szuper().__init__(szélesség, magasság)
arcade.set_background_color (arcade.color. FEHÉR)
self.player_x = szélesség // 2
self.player_y = magasság // 2
self.enemy_x = szélesség // 2
self.enemy_y = magasság - PLAYER_RADIUS
self.enemy_health = ELLENSÉG_EGÉSZSÉG
nyomtatás (self.enemy_health)
defon_draw(maga):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
árkád.szín. KÉK)
ha én.ellenség_egészség > 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
árkád.szín. PIROS)

deffrissítés(self, delta_time):
ha self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
én.ellenség_egészség -= 10
nyomtatás (self.enemy_health)

A ENEMY_HEALTH konstans értéke 100, ami az ellenség kezdeti életpontjait jelenti. Amikor a játékos ütközik az ellenséggel, néhány pontot levonhat az ellenség egészségi állapotából. A frissített állapotérték megjelenítéséhez kinyomtathat egy szöveges objektumot self.health_text ez mutatja az aktuális ellenség egészségi állapotát.

Az ellenfelek egészségpontjainak beépítésével kihívások és stratégiák rétegét vezetheti be a játékosok számára. A megjelenített állapotérték vizuális visszajelzést ad, és lehetővé teszi a játékosoknak, hogy nyomon kövessék az ellenség fennmaradó állapotát.

Ezenkívül a kódot kibővítheti további logika és látványelemek hozzáadásával, például állapotjelző sávok megjelenítésével vagy vereség feltételeinek megvalósításával, amikor az ellenség állapota eléri a nullát.

Bevált gyakorlatok ellenségek létrehozásához

Amikor ellenségeket tervezel a játékodhoz, fontos figyelembe venni néhány bevált gyakorlatot annak biztosítására, hogy azok hozzájáruljanak a kihívásokkal teli és élvezetes játékélményhez. Íme néhány irányelv, amelyet követni kell az ellenség létrehozása során:

Változatos tulajdonságok

Hozzon létre ellenségeket különböző tulajdonságokkal, például sebességgel, mérettel, egészséggel és támadási erővel. A különböző típusú ellenségeknek különböző nehézségi szintet kell jelenteniük, ami megköveteli a játékosoktól, hogy ennek megfelelően alakítsák át stratégiájukat. Az ellenséges attribútumok keverékének bevezetésével a játékmenetet frissen és vonzón tarthatod.

Egyedi viselkedések

Adja meg minden ellenségtípusnak a saját egyedi viselkedési mintáit. Egyes ellenségek előre látható módon mozoghatnak, míg mások összetettebb vagy szabálytalanabb mozgást mutathatnak. Fontolja meg az ellenséges mesterséges intelligencia algoritmusok beépítését, hogy viselkedésüket intelligensebbé és kiszámíthatatlanabbá tegyék, ami további kihívást jelent a játékosok számára.

Egészségpontok (HP)

Helyezzen egészségügyi pontokat az ellenségek számára, hogy megmutassa a fejlődés és a tartósság érzését. Ez lehetővé teszi az ellenségek számára, hogy több találatot is el tudjanak érni, mielőtt legyőzik őket. Ha különböző mennyiségű HP-t rendel a különböző ellenségtípusokhoz, nehézségi sorrendet hozhat létre, és arra ösztönzi a játékosokat, hogy stratégiát alakítsanak ki és rangsorolják célpontjaikat.

Tedd szórakoztatóbbá a játékokat ellenségekkel

Ha ellenségeket adsz a játékaidhoz, jelentősen javíthatod a játékélményt. Kihívásokat vezetnek be, és motiválják a játékosokat képességeik fejlesztésére. Az ellenségek különféle formákban jelentkezhetnek, az egyszerű akadályoktól a bonyolult mesterséges intelligencia által vezérelt ellenfelekig. Az ellenségek hatékony megvalósításával játékaidat vonzóbbá és élvezetesebbé teheted a játékosok számára.