Selv de mest grunnleggende fiendene trenger å bevege seg på en eller annen måte, så få litt inspirasjon til hvordan du håndterer kodingen bak angrepsmønstrene.
Et av nøkkelelementene i et flott videospill er tilstedeværelsen av fiender. Enten de er zombier, romvesener eller andre spillere, kan fiender gjøre et spill mer utfordrende og spennende.
I PyGame kan du enkelt programmere en rekke fiendens bevegelsesatferd, som å følge spilleren, bevege seg tilfeldig eller ta bestemte veier.
Opprette et enkelt spill
Start med å lage et enkelt spill hvor en spiller vil bevege seg horisontalt og vertikalt. Hvis spilleren berører fienden, vil spilleren dø.
Du finner hele koden i denne GitHub repo.
Begynn med å importere den nødvendige PyGame-modulen og initialisere den.
import pygame
pygame.init()
Deretter setter du opp skjermen og lager spilleren og fiendens objekter ved å bruke pygame. Rect() funksjon.
# Sett opp skjermen
skjerm = pygame.display.set_mode((800, 600))# Sett opp fargene
svart = (0, 0, 0)
hvit = (255, 255, 255)
# Sett opp spillerrektangelet og fiendens objekt
spiller = pygame. Rekt(350, 500, 50, 50)
fiende = pygame. Rekt(350, 0, 50, 50)
Etter det, lag en spillløkke som kjører til spilleren enten kolliderer med fienden eller går ut av spillet. Se også etter kollisjon mellom spilleren og fienden, og tegn spillobjektene på skjermen.
# Sett opp spillløkken
kjører = ektesamtidig som løping:
til begivenhet i pygame.event.get():
hvis event.type == pygame. SLUTTE:
kjører = Falsk# Fyll skjermen med hvitt
screen.fill (hvit)# Flytt spillerrektangelet
keys = pygame.key.get_pressed()hvis keys[pygame. K_LEFT]:
player.x -= 5hvis keys[pygame. K_RIGHT]:
player.x += 5hvis keys[pygame. K_UP]:
player.y -= 5hvis keys[pygame. K_DOWN]:
player.y += 5# Se etter kollisjon mellom spiller og fiende
hvis player.colliderect (fiende):
kjører = Falsk# Tegn spillerrektangelet og fiendens objekt på skjermen
pygame.draw.rect (skjerm, svart, spiller)
pygame.draw.rect (skjerm, svart, fiende)# Oppdater skjermen
pygame.display.update()
# Avslutt spillet
pygame.quit()
Rett fiender mot spilleren
For å flytte fienden mot spilleren, må du beregne avstanden mellom de to, noe du kan gjøre ved å bruke Pythagoras teorem. Du kan deretter bruke denne avstanden til å bestemme fiendens bevegelseshastighet og retning mot spilleren.
For å implementere dette, lag en hastighetsvariabel og bruk den til å oppdatere fiendens posisjon mot spilleren.
# Beregn avstanden mellom fienden og spilleren
avstand_x = spiller.x - fiende.x
distance_y = player.y - enemy.y
avstand = (avstand_x ** 2 + avstand_y ** 2) ** 0.5# Flytt fienden mot spilleren
hastighet = 2
hvis avstand != 0:
enemy.x += hastighet * avstand_x / avstand
enemy.y += hastighet * avstand_y / avstand
Randomiser fiendens bevegelse på skjermen
Du kan også få fienden til å bevege seg tilfeldig på skjermen for å gjøre spillet mer utfordrende.
For å gjøre dette, generer en tilfeldig retning for fienden å bevege seg ved hjelp av den tilfeldige modulen i Python. Bruke valg() funksjon for å velge en tilfeldig retning fra en liste over retninger som fienden kan bevege seg i. Oppdater deretter fiendens posisjon basert på den valgte retningen.
import tilfeldig
# Flytt fienden tilfeldig på skjermen
retning = random.choice(['venstre', 'Ikke sant', 'opp', 'ned'])
hvis retning == 'venstre':
enemy.x -= 5
elif retning == 'Ikke sant':
enemy.x += 5
elif retning == 'opp':
enemy.y -= 5
elif retning == 'ned':
enemy.y += 5
Nærhetsbasert fiendebevegelse
I noen spill beveger fienden seg bare når spilleren er nær dem. Du kan oppnå dette ved å beregne avstanden mellom fienden og spilleren.
Hvis avstanden er mindre enn en viss verdi, får du fienden til å bevege seg mot spilleren. Dette gjør spillet mer strategisk og tvinger spilleren til å være mer forsiktige i bevegelsene sine.
# Flytt fienden mot spilleren hvis spilleren er i nærheten
hastighet = 2
hvis avstand < 300:
hvis avstand != 0:
enemy.x += hastighet * avstand_x / avstand
enemy.y += hastighet * avstand_y / avstand
Fienden unngår spillerangrep
Du kan også få fienden til å unngå spillerens bevegelse. Fienden vil prøve å unngå spilleren ved å bevege seg vinkelrett på spillerens posisjon.
For å oppnå dette, kalkuler enhetsvektoren mot spilleren ved å bruke avstand_x og avstand_y beregnet tidligere. Deretter beregner du den vinkelrette vektoren for å flytte fienden vinkelrett på enhetsvektoren. Til slutt beregner du prikkproduktet til den vinkelrette vektoren og enhetsvektoren for å bestemme retningen for fiendens bevegelse.
For å implementere dette, legg til kodebiten nedenfor etter avstandsberegningen.
hastighet = 2
hvis avstand < 400:
hvis avstand != 0:
# Beregn enhetsvektoren mot spilleren
unit_vector_x = avstand_x / avstand
unit_vector_y = avstand_y / avstand# Beregn den vinkelrette vektoren
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x# Beregn prikkproduktet til den vinkelrette vektoren og
# enhetsvektor
prikkprodukt = vinkelrett_vektor_x * enhet_vektor_x
+ perpendicular_vector_y * unit_vector_y
# Flytt fienden vinkelrett på enhetsvektoren
hvis dot_product > 0:
enemy.x += hastighet * perpendicular_vector_x
enemy.y += hastighet * perpendicular_vector_y
ellers:
enemy.x -= hastighet * perpendicular_vector_x
enemy.y -= hastighet * perpendicular_vector_y
Med disse modifikasjonene vil fienden prøve å unngå å komme for nær spilleren. Dette gjør spillet mer utfordrende og morsomt å spille.
Legger til ekstra funksjoner
Du kan også legge til flere funksjoner i spillet ditt for å gjøre det mer utfordrende. Du kan for eksempel legge til flere fiender som beveger seg tilfeldig på skjermen, hindringer som spilleren må unngå mens han beveger seg, power-ups som forbedrer spillerens evner, og så videre.
Du kan bruk klokkemodulen til å stille inn bildefrekvensen av spillet ditt og få det til å fungere jevnere. Nedenfor er implementeringen:
# Legg til flere fiender som beveger seg tilfeldig på skjermen
fiender = []til Jeg i område(5):
fiende = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)enemies.append (fiende)
# Legg til hindringer som spilleren må unngå
hindring = pygame. Rekt(200, 250, 50, 50)# Sett opp spillløkken
klokke = pygame.time. Klokke()
kjører = ektesamtidig som løping:
til begivenhet i pygame.event.get():
hvis event.type == pygame. SLUTTE:
kjører = Falsk# Fyll skjermen med hvitt
screen.fill (hvit)# Flytt spillerrektangelet
keys = pygame.key.get_pressed()hvis keys[pygame. K_LEFT]:
player.x -= 5
hvis keys[pygame. K_RIGHT]:
player.x += 5
hvis keys[pygame. K_UP]:
player.y -= 5
hvis keys[pygame. K_DOWN]:
player.y += 5# Flytt fiendene tilfeldig på skjermen
til fiende i fiender:
retning = random.choice(['venstre', 'Ikke sant', 'opp', 'ned'])hvis retning == 'venstre':
enemy.x -= 5
elif retning == 'Ikke sant':
enemy.x += 5
elif retning == 'opp':
enemy.y -= 5
elif retning == 'ned':
enemy.y += 5# Se etter kollisjon mellom spiller og fiende
hvis player.colliderect (fiende):
kjører = Falsk# Tegn spillerrektangelet, fiendens gjenstander og hindringen på
# skjermen
pygame.draw.rect (skjerm, svart, spiller)til fiende i fiender:
pygame.draw.rect (skjerm, svart, fiende)pygame.draw.rect (skjerm, svart, hindring)
# Oppdater skjermen
pygame.display.update()# Still inn bildefrekvensen for spillet
klokke.tick(60)
# Avslutt spillet
pygame.quit()
Forbedre spillopplevelsen din med fiender
Ved å legge til fiender med unike bevegelser, atferd og evner, kan du gjøre spillene dine mer engasjerende og utfordrende for spillere. Spillere må legge strategier og tilpasse spillingen for å overvinne forskjellige typer fiender. Dette kan øke engasjementet, forbedre replay-verdien og få spillere til å komme tilbake for mer.