Piffa upp dina arkadspel genom att introducera fiender.

Fiender spelar en avgörande roll för att skapa engagerande och utmanande spel. De tillhandahåller hinder och motståndare för spelare, vilket gör spelupplevelsen mer spännande. Pythons Arcade-bibliotek erbjuder ett enkelt sätt att införliva fiender i dina spel.

Skapa ett enkelt spel

Innan du börjar, se till att du har pip installerad på din enhet. Använd det här kommandot för att installera arkad bibliotek:

pip installera arkad

Efter det, börja med att skapa ett enkelt spel där spelaren kan flytta åt vänster och höger med hjälp av piltangenterna.

Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.

importera arkad

# Fönstermått
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spelarattribut
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

klassGameWindow(arkad. Fönster):
def__i det__(själv, bredd, höjd):
super().__init__(bredd, höjd)
arcade.set_background_color (arcade.color. VIT)
self.player_x = bredd // 2

instagram viewer

defon_draw(själv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. BLÅ)

defon_key_press(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER:
self.player_x -= PLAYER_SPEED
elif nyckel == arkad.nyckel. HÖGER:
self.player_x += PLAYER_SPEED

defuppdatering(själv, delta_tid):
passera

defhuvud():
fönster = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

om __namn__ == "__huvud__":
main()

Skapa en enkel fiende

För att skapa en fiende som dödar spelaren vid kollision, skapa en annan cirkel på skärmen. I den on_draw funktionen kan du rita den här fiendens cirkel och leta efter kollisioner i uppdatering metod. Du kan också använd sprites för fiender.

# Lägg till i GameWindow-klassen

klassGameWindow(arkad. Fönster):
# ...

def__i det__(själv, bredd, höjd):
# ...

# Fiendens attribut
self.enemy_x = bredd // 2
self.enemy_y = höjd - PLAYER_RADIUS
self.enemy_radius = 20

defon_draw(själv):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. RÖD)

defuppdatering(själv, delta_tid):
om self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
skriva ut("Spelet över!")

defär_kollision(själv, x1, y1, x2, y2, radie1, radie2):
distans_kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_summa_kvadrat = (radie1 + radie2) ** 2
lämna tillbaka distans_kvadrat <= radius_summa_kvadrat

Få fienden att följa spelaren

I vissa spel kan fiender jaga spelaren och lägga till ett dynamiskt element i spelet. För att skapa en följande fiende måste du uppdatera dess position baserat på spelarens position. Närhelst spelaren rör sig, fienden rör sig i samma riktning. Du kan uppnå detta genom att ändra uppdatering metod. Skapa en ny fil med namnet enemy-follow-player.py och lägg till koden med följande uppdateringar:

# Lägg till i GameWindow-klassen

klassGameWindow(arkad. Fönster):
# ...

defuppdatering(själv, delta_tid):
om self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

om self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
skriva ut("Spelet över!")

defär_kollision(själv, x1, y1, x2, y2, radie1, radie2):
distans_kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_summa_kvadrat = (radie1 + radie2) ** 2
lämna tillbaka distans_kvadrat <= radius_summa_kvadrat

Nedan är utgången:

Lägga till fiendens kulor

För att skapa en fiende som skjuter kulor, skapa en Kula klass och en lista för att hålla reda på aktiva kulor. Fienden kommer med jämna mellanrum att skapa en ny kula och uppdatera sin position. Skapa en ny fil med namnet bullets.py och lägg till koden med följande uppdateringar:

# Lägg till i GameWindow-klassen

klassKula:
def__i det__(själv, x, y, radie, hastighet):
själv.x = x
själv.y = y
self.radius = radie
self.speed = hastighet

defuppdatering(själv):
self.y -= self.speed

klassGameWindow(arkad. Fönster):
# ...

def__i det__(själv, bredd, höjd):
# ...

# Fiendens attribut
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Antal bildrutor mellan kula spawn
self.bullet_timer = 0

defon_draw(själv):
# ...
för kula i self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. SVART)

defuppdatering(själv, delta_tid):
# ...

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

för kula i self.bullets:
bullet.update()
om self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
skriva ut("Spelet över!")

defär_kollision(själv, x1, y1, x2, y2, radie1, radie2):
distans_kvadrat = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_summa_kvadrat = (radie1 + radie2) ** 2
lämna tillbaka distans_kvadrat <= radius_summa_kvadrat

Nedan är utgången:

Lägga till hälsopoäng för fiender

I många spel kan fiender ha hälsopoäng (HP), vilket gör att de kan behålla flera träffar innan de besegras. Att lägga till hälsopoäng till fiender kan introducera strategiska spelelement och ge en känsla av progression och utmaning. Skapa en ny fil med namnet heath-point.py och lägg till koden med följande uppdateringar:

# Fönstermått
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Spelarattribut
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Fiendens attribut
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

klassGameWindow(arkad. Fönster):
def__i det__(själv, bredd, höjd):
super().__init__(bredd, höjd)
arcade.set_background_color (arcade.color. VIT)
self.player_x = bredd // 2
self.player_y = höjd // 2
self.enemy_x = bredd // 2
self.enemy_y = höjd - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
print (self.enemy_health)
defon_draw(själv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arkad.färg. BLÅ)
om self.enemy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arkad.färg. RÖD)

defuppdatering(själv, delta_tid):
om 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 ett värde på 100 för att representera fiendens initiala hälsopoäng. När spelaren kolliderar med fienden kan du dra av några poäng från fiendens hälsa. För att visa det uppdaterade hälsovärdet kan du skriva ut ett textobjekt self.health_text som visar den nuvarande fiendens hälsa.

Genom att införliva hälsopoäng för fiender kan du introducera ett lager av utmaning och strategi för spelare. Det visade hälsovärdet ger visuell feedback och låter spelare spåra fiendens återstående hälsa.

Dessutom kan du utöka koden genom att lägga till ytterligare logik och bilder, som att visa hälsostaplar eller implementera nederlagsförhållanden när fiendens hälsa når noll.

Bästa metoder för att skapa fiender

När du designar fiender för ditt spel är det viktigt att överväga flera bästa metoder för att säkerställa att de bidrar till en utmanande och njutbar spelupplevelse. Här är några riktlinjer att följa när du skapar fiender:

Olika attribut

Skapa fiender med olika egenskaper som hastighet, storlek, hälsa och attackkraft. Olika fiendetyper bör ha olika svårighetsgrader, vilket kräver att spelarna anpassar sina strategier därefter. Genom att introducera en blandning av fiendeattribut kan du hålla spelet fräscht och engagerande.

Unika beteenden

Ge varje fiendetyp sina egna unika beteendemönster. Vissa fiender kan röra sig på ett förutsägbart sätt, medan andra kan uppvisa mer komplexa eller oberäkneliga rörelser. Överväg att införliva fiendens AI-algoritmer för att göra deras beteende mer intelligent och oförutsägbart, och lägga till ett extra lager av utmaningar för spelare.

Hälsopoäng (HP)

Implementera hälsopoäng för fiender för att introducera en känsla av progression och hållbarhet. Detta gör att fiender kan upprätthålla flera träffar innan de besegras. Genom att tilldela olika mängder HP till olika fiendetyper kan du skapa en svårighetshierarki och uppmuntra spelare att lägga strategi och prioritera sina mål.

Gör spel roligare med fiender

Att lägga till fiender till dina spel kan förbättra spelupplevelsen avsevärt. De introducerar utmaningar och motiverar spelare att förbättra sina färdigheter. Fiender kan komma i olika former, från enkla hinder till komplexa AI-drivna motståndare. Genom att implementera fiender effektivt kan du göra dina spel mer engagerande och roligare för spelarna.