Även de mest grundläggande fienderna behöver röra sig på något sätt, så få lite inspiration om hur man hanterar kodningen bakom attackmönster.

En av nyckelelementen i ett bra videospel är närvaron av fiender. Oavsett om de är zombies, utomjordingar eller andra spelare, kan fiender göra ett spel mer utmanande och spännande.

I PyGame kan du enkelt programmera en mängd olika fiendens rörelsebeteenden, som att följa spelaren, röra sig slumpmässigt eller ta specifika vägar.

Skapa ett enkelt spel

Börja med att skapa ett enkelt spel där en spelare kommer att röra sig horisontellt och vertikalt. Om spelaren rör vid fienden kommer spelaren att dö.

Du hittar hela koden i denna GitHub repo.

Börja med att importera den nödvändiga PyGame-modulen och initiera den.

importera pygame

pygame.init()

Ställ sedan in skärmen och skapa spelaren och fiendens objekt med hjälp av pygame. Rect() fungera.

# Ställ in skärmen
skärm = pygame.display.set_mode((800, 600))

# Ställ in färgerna
svart = (0, 0, 0)
vit = (255, 255, 255)

instagram viewer

# Ställ in spelarrektangeln och fiendens objekt
spelare = pygame. Rekt(350, 500, 50, 50)
fiende = pygame. Rekt(350, 0, 50, 50)

Efter det skapar du en spelloop som körs tills spelaren antingen kolliderar med fienden eller lämnar spelet. Kolla också efter kollision mellan spelaren och fienden, och rita spelobjekten på skärmen.

# Ställ in spelslingan
springer = Sann

medan löpning:
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk

# Fyll skärmen med vitt
screen.fill (vit)

# Flytta spelarens rektangel
keys = pygame.key.get_pressed()

om nycklar[pygame. K_LEFT]:
player.x -= 5

om nycklar[pygame. K_RIGHT]:
player.x += 5

om nycklar[pygame. K_UP]:
player.y -= 5

om nycklar[pygame. K_DOWN]:
player.y += 5

# Kontrollera om det finns kollision mellan spelare och fiende
om player.colliderect (fiende):
springer = Falsk

# Rita spelarrektangeln och fiendens objekt på skärmen
pygame.draw.rect (skärm, svart, spelare)
pygame.draw.rect (skärm, svart, fiende)

# Uppdatera skärmen
pygame.display.update()

# Avsluta spelet
pygame.quit()

Rikta fiender mot spelaren

För att flytta fienden mot spelaren måste du beräkna avståndet mellan de två, vilket du kan göra med Pythagoras sats. Du kan sedan använda detta avstånd för att bestämma fiendens rörelsehastighet och riktning mot spelaren.

För att implementera detta, skapa en hastighetsvariabel och använd den för att uppdatera fiendens position mot spelaren.

# Beräkna avståndet mellan fienden och spelaren
distans_x = spelare.x - fiende.x
distans_y = player.y - enemy.y
avstånd = (avstånd_x ** 2 + avstånd_y ** 2) ** 0.5

# Flytta fienden mot spelaren
hastighet = 2

om avstånd != 0:
fiende.x += hastighet * avstånd_x / avstånd
fiende.y += hastighet * avstånd_y / avstånd

Randomisera fiendens rörelse på skärmen

Du kan också få fienden att röra sig slumpmässigt på skärmen för att göra spelet mer utmanande.

För att göra detta, generera en slumpmässig riktning för fienden att röra sig med hjälp av den slumpmässiga modulen i Python. Använd val() funktion för att välja en slumpmässig riktning från en lista med riktningar som fienden kan röra sig i. Uppdatera sedan fiendens position baserat på den valda riktningen.

importera slumpmässig

# Flytta fienden slumpmässigt på skärmen
riktning = random.choice(['vänster', 'höger', 'upp', 'ner'])

om riktning == 'vänster':
enemy.x -= 5
elif riktning == 'höger':
enemy.x += 5
elif riktning == 'upp':
enemy.y -= 5
elif riktning == 'ner':
enemy.y += 5

Närhetsbaserad fienderörelse

I vissa spel rör sig fienden bara när spelaren är nära dem. Du kan uppnå detta genom att beräkna avståndet mellan fienden och spelaren.

Om avståndet är mindre än ett visst värde, få fienden att röra sig mot spelaren. Detta gör spelet mer strategiskt och tvingar spelaren att vara mer försiktiga i sina rörelser.

# Flytta fienden mot spelaren om spelaren är nära
hastighet = 2

om avstånd < 300:
om avstånd != 0:
fiende.x += hastighet * avstånd_x / avstånd
fiende.y += hastighet * avstånd_y / avstånd

Fienden undviker spelarattacker

Du kan också få fienden att undvika spelarens rörelse. Fienden kommer att försöka undvika spelaren genom att röra sig vinkelrätt mot spelarens position.

För att uppnå detta, beräkna enhetsvektorn mot spelaren med hjälp av avstånd_x och avstånd_y som beräknats tidigare. Beräkna sedan den vinkelräta vektorn för att flytta fienden vinkelrätt mot enhetsvektorn. Beräkna slutligen prickprodukten av den vinkelräta vektorn och enhetsvektorn för att bestämma riktningen för fiendens rörelse.

För att implementera detta, lägg till kodavsnittet nedan efter avståndsberäkningen.

hastighet = 2

om avstånd < 400:
om avstånd != 0:
# Beräkna enhetsvektorn mot spelaren
enhet_vektor_x = avstånd_x / avstånd
unit_vector_y = avstånd_y / avstånd

# Beräkna den vinkelräta vektorn
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x

# Beräkna punktprodukten av den vinkelräta vektorn och
# enhetsvektor
punkt_produkt = vinkelrät_vektor_x * enhet_vektor_x
+ perpendicular_vector_y * unit_vector_y

# Flytta fienden vinkelrätt mot enhetsvektorn
om punktprodukt > 0:
enemy.x += hastighet * perpendicular_vector_x
enemy.y += hastighet * perpendicular_vector_y
annan:
fiende.x -= hastighet * perpendicular_vector_x
fiende.y -= hastighet * perpendicular_vector_y

Med dessa modifieringar kommer fienden att försöka undvika att komma för nära spelaren. Detta gör spelet mer utmanande och roligt att spela.

Lägger till extra funktioner

Du kan också lägga till fler funktioner i ditt spel för att göra det mer utmanande. Du kan till exempel lägga till flera fiender som rör sig slumpmässigt på skärmen, hinder som spelaren behöver undvika när han rör sig, power-ups som förbättrar spelarens förmågor och så vidare.

Du kan använd klockmodulen för att ställa in bildfrekvensen av ditt spel och få det att fungera smidigare. Nedan är implementeringen:

# Lägg till flera fiender som rör sig slumpmässigt på skärmen
fiender = []

för i i räckvidd(5):
fiende = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

enemies.append (fiende)

# Lägg till hinder som spelaren måste undvika
hinder = pygame. Rekt(200, 250, 50, 50)

# Ställ in spelslingan
klocka = pygame.time. Klocka()
springer = Sann

medan löpning:
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk

# Fyll skärmen med vitt
screen.fill (vit)

# Flytta spelarens rektangel
keys = pygame.key.get_pressed()

om nycklar[pygame. K_LEFT]:
player.x -= 5
om nycklar[pygame. K_RIGHT]:
player.x += 5
om nycklar[pygame. K_UP]:
player.y -= 5
om nycklar[pygame. K_DOWN]:
player.y += 5

# Flytta fienderna slumpmässigt på skärmen
för fiende i fiender:
riktning = random.choice(['vänster', 'höger', 'upp', 'ner'])

om riktning == 'vänster':
enemy.x -= 5
elif riktning == 'höger':
enemy.x += 5
elif riktning == 'upp':
enemy.y -= 5
elif riktning == 'ner':
enemy.y += 5

# Kontrollera om det finns kollision mellan spelare och fiende
om player.colliderect (fiende):
springer = Falsk

# Rita spelarrektangeln, fiendens föremål och hindret på
# skärmen
pygame.draw.rect (skärm, svart, spelare)

för fiende i fiender:
pygame.draw.rect (skärm, svart, fiende)

pygame.draw.rect (skärm, svart, hinder)

# Uppdatera skärmen
pygame.display.update()

# Ställ in bildfrekvensen för spelet
clock.tick(60)

# Avsluta spelet
pygame.quit()

Förbättra din spelupplevelse med fiender

Genom att lägga till fiender med unika rörelser, beteenden och förmågor kan du göra dina spel mer engagerande och utmanande för spelare. Spelare kommer att behöva lägga strategi och anpassa sitt spelande för att övervinna olika typer av fiender. Detta kan öka engagemanget, förbättra reprisvärdet och få spelare att komma tillbaka för mer.