Krydre arkadespillene dine ved å introdusere fiender.

Fiender spiller en avgjørende rolle i å skape engasjerende og utfordrende spill. De gir hindringer og motstandere for spillere, noe som gjør spillopplevelsen mer spennende. Pythons Arcade-bibliotek tilbyr en enkel måte å inkorporere fiender i spillene dine.

Lag et enkelt spill

Før du starter, sørg for at du har pip installert på enheten din. Bruk denne kommandoen til å installere arkade bibliotek:

pip installer arkade

Etter det, start med å lage et enkelt spill hvor spilleren kan bevege seg til venstre og høyre ved hjelp av piltastene.

Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

import arkade

# Vindusdimensjoner
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spillerattributter
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

klasseGameWindow(arkade. Vindu):
def__i det__(selv, bredde, høyde):
super().__init__(bredde, høyde)
arcade.set_background_color (arcade.color. HVIT)
self.player_x = bredde // 2

instagram viewer

defon_draw(selv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. BLÅ)

defon_key_press(selv, nøkkel, modifikatorer):
hvis nøkkel == arkade.nøkkel. VENSTRE:
self.player_x -= PLAYER_SPEED
elif nøkkel == arkade.nøkkel. IKKE SANT:
self.player_x += PLAYER_SPEED

defOppdater(selv, delta_tid):
sende

defhoved-():
vindu = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

hvis __navn__ == "__hoved__":
hoved()

Å skape en enkel fiende

For å lage en fiende som dreper spilleren ved kollisjon, lag en ny sirkel på skjermen. I on_draw funksjon, kan du tegne denne fiendens sirkel og se etter kollisjoner i Oppdater metode. Du kan også bruk sprites for fiender.

# Legg til i GameWindow-klassen

klasseGameWindow(arkade. Vindu):
# ...

def__i det__(selv, bredde, høyde):
# ...

# Fiendeegenskaper
self.enemy_x = bredde // 2
self.enemy_y = høyde - PLAYER_RADIUS
self.enemy_radius = 20

defon_draw(selv):
# ...
arcade.draw_circle_filled (selv.fiende_x, selv.fiende_y, selv.fiende_radius, arkade.farge. RØD)

defOppdater(selv, delta_tid):
hvis self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
skrive ut("Spillet er over!")

defer_kollisjon(selv, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
komme tilbake distance_squared <= radius_sum_squared

Få fienden til å følge spilleren

I noen spill kan fiender jage spilleren og legge til et dynamisk element i spillingen. For å opprette en følgende fiende, må du oppdatere dens posisjon basert på spillerens posisjon. Når som helst spilleren beveger seg, beveger fienden seg i samme retning. Du kan oppnå dette ved å endre Oppdater metode. Opprett en ny fil med navnet enemy-follow-player.py og legg til koden med oppdateringene nedenfor:

# Legg til i GameWindow-klassen

klasseGameWindow(arkade. Vindu):
# ...

defOppdater(selv, delta_tid):
hvis self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

hvis self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
skrive ut("Spillet er over!")

defer_kollisjon(selv, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
komme tilbake distance_squared <= radius_sum_squared

Nedenfor er utgangen:

Legger til fiendtlige kuler

For å lage en fiende som skyter kuler, lag en Kule klasse og en liste for å holde styr på aktive kuler. Fienden vil med jevne mellomrom lage en ny kule og oppdatere sin posisjon. Opprett en ny fil med navnet bullets.py og legg til koden med oppdateringene nedenfor:

# Legg til i GameWindow-klassen

klasseKule:
def__i det__(selv, x, y, radius, hastighet):
selv.x = x
self.y = y
self.radius = radius
self.speed = hastighet

defOppdater(selv):
self.y -= self.speed

klasseGameWindow(arkade. Vindu):
# ...

def__i det__(selv, bredde, høyde):
# ...

# Fiendeegenskaper
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Antall rammer mellom kule gyter
self.bullet_timer = 0

defon_draw(selv):
# ...
til kule i self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. SVART)

defOppdater(selv, delta_tid):
# ...

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

til kule i self.bullets:
bullet.update()
hvis self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
skrive ut("Spillet er over!")

defer_kollisjon(selv, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
komme tilbake distance_squared <= radius_sum_squared

Nedenfor er utgangen:

Legge til helsepoeng for fiender

I mange spill kan fiender ha helsepoeng (HP), slik at de kan opprettholde flere treff før de blir beseiret. Å legge til helsepoeng til fiender kan introdusere strategiske spillelementer og gi en følelse av progresjon og utfordring. Opprett en ny fil med navnet heath-point.py og legg til koden med oppdateringene nedenfor:

# Vindusdimensjoner
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spillerattributter
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Fiendeegenskaper
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

klasseGameWindow(arkade. Vindu):
def__i det__(selv, bredde, høyde):
super().__init__(bredde, høyde)
arcade.set_background_color (arcade.color. HVIT)
self.player_x = bredde // 2
self.player_y = høyde // 2
self.enemy_x = bredde // 2
self.enemy_y = høyde - PLAYER_RADIUS
self.enemy_health = FIENDE_HEALTH
print (self.enemy_health)
defon_draw(selv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkade.farge. BLÅ)
hvis self.enemy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arkade.farge. RØD)

defOppdater(selv, delta_tid):
hvis self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
self.enemy_health -= 10
print (self.enemy_health)

De ENEMY_HEALTH konstant har en verdi på 100 for å representere fiendens første helsepoeng. Når spilleren kolliderer med fienden, kan du trekke noen poeng fra fiendens helse. For å vise den oppdaterte helseverdien kan du skrive ut et tekstobjekt self.health_text som viser den nåværende fiendens helse.

Ved å inkludere helsepoeng for fiender, kan du introdusere et lag med utfordringer og strategier for spillere. Den viste helseverdien gir visuell tilbakemelding og lar spillere spore fiendens gjenværende helse.

I tillegg kan du utvide koden ved å legge til ytterligere logikk og visuelle elementer, for eksempel å vise helsestolper eller implementere nederlagsforhold når fiendens helse når null.

Beste praksis for å skape fiender

Når du designer fiender for spillet ditt, er det viktig å vurdere flere beste fremgangsmåter for å sikre at de bidrar til en utfordrende og morsom spillopplevelse. Her er noen retningslinjer du bør følge når du oppretter fiender:

Diverse attributter

Skap fiender med forskjellige egenskaper som hastighet, størrelse, helse og angrepskraft. Ulike fiendetyper bør ha forskjellige vanskelighetsgrader, noe som krever at spillere tilpasser strategiene sine deretter. Ved å introdusere en blanding av fiendtlige egenskaper kan du holde spillingen frisk og engasjerende.

Unik oppførsel

Gi hver fiendetype sine egne unike atferdsmønstre. Noen fiender kan bevege seg på en forutsigbar måte, mens andre kan vise mer komplekse eller uberegnelige bevegelser. Vurder å innlemme fiendtlige AI-algoritmer for å gjøre oppførselen deres mer intelligent og uforutsigbar, og legge til et ekstra lag med utfordringer for spillere.

Helsepoeng (HP)

Implementer helsepoeng for fiender for å introdusere en følelse av progresjon og holdbarhet. Dette lar fiender opprettholde flere treff før de blir beseiret. Ved å tilordne forskjellige mengder HP til forskjellige fiendetyper, kan du lage et vanskelighetshierarki og oppmuntre spillere til å legge strategier og prioritere målene sine.

Gjør spill morsommere med fiender

Å legge til fiender til spillene dine kan forbedre spillopplevelsen betraktelig. De introduserer utfordringer og motiverer spillere til å forbedre ferdighetene sine. Fiender kan komme i ulike former, fra enkle hindringer til komplekse AI-drevne motstandere. Ved å implementere fiender effektivt kan du gjøre spillene dine mer engasjerende og morsommere for spillere.