Zelfs de meest elementaire vijanden moeten op de een of andere manier bewegen, dus doe wat inspiratie op over hoe om te gaan met de codering achter aanvalspatronen.

Een van de belangrijkste elementen van een geweldige videogame is de aanwezigheid van vijanden. Of het nu zombies, buitenaardse wezens of andere spelers zijn, vijanden kunnen een spel uitdagender en spannender maken.

In PyGame kun je eenvoudig een verscheidenheid aan vijandelijke bewegingsgedragingen programmeren, zoals de speler volgen, willekeurig bewegen of specifieke paden nemen.

Een eenvoudig spel maken

Begin met het maken van een eenvoudig spel waarbij een speler horizontaal en verticaal beweegt. Als de speler de vijand aanraakt, sterft de speler.

Hierin vind je de volledige code GitHub-opslagplaats.

Begin met het importeren van de benodigde PyGame-module en initialiseer deze.

importeren pyspel

pygame.init()

Stel vervolgens het scherm in en maak de speler en vijandelijke objecten met behulp van de pyspel. Rect() functie.

# Stel het scherm in
instagram viewer

scherm = pygame.display.set_mode((800, 600))

# Stel de kleuren in
zwart = (0, 0, 0)
wit = (255, 255, 255)

# Stel de spelersrechthoek en het vijandelijke object in
speler = pygame. Recht(350, 500, 50, 50)
vijand = pygame. Recht(350, 0, 50, 50)

Maak daarna een spelloop die loopt totdat de speler in botsing komt met de vijand of het spel verlaat. Controleer ook op botsing tussen de speler en de vijanden teken de spelobjecten op het scherm.

# Stel de spellus in
hardlopen = WAAR

terwijl rennen:
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals

# Vul het scherm met wit
screen.fill (wit)

# Verplaats de spelersrechthoek
toetsen = pygame.key.get_pressed()

als toetsen[pygame. K_LEFT]:
speler.x -= 5

als toetsen[pygame. K_RIGHT]:
speler.x += 5

als toetsen[pygame. K_UP]:
speler.y -= 5

als toetsen[pygame. K_DOWN]:
speler.y += 5

# Controleer op botsing tussen speler en vijand
als player.colliderect (vijand):
hardlopen = Vals

# Teken de spelersrechthoek en het vijandelijke object op het scherm
pygame.draw.rect (scherm, zwart, speler)
pygame.draw.rect (scherm, zwart, vijand)

# Werk het scherm bij
pygame.display.update()

# Sluit het spel af
pygame.quit()

Richt vijanden op de speler

Om de vijand naar de speler toe te bewegen, moet je de afstand tussen de twee berekenen, wat je kunt doen met behulp van de stelling van Pythagoras. Je kunt deze afstand vervolgens gebruiken om de bewegingssnelheid en richting van de vijand naar de speler te bepalen.

Om dit te implementeren, maakt u een snelheidsvariabele en gebruikt u deze om de positie van de vijand ten opzichte van de speler bij te werken.

# Bereken de afstand tussen de vijand en de speler
afstand_x = speler.x - vijand.x
afstand_y = speler.y - vijand.y
afstand = (afstand_x ** 2 + afstand_y ** 2) ** 0.5

# Verplaats de vijand naar de speler
snelheid = 2

als afstand != 0:
vijand.x += snelheid * afstand_x / afstand
vijand.y += snelheid * afstand_y / afstand

Willekeurige vijandelijke bewegingen op het scherm

Je kunt de vijand ook willekeurig op het scherm laten bewegen om het spel uitdagender te maken.

Om dit te doen, genereert u een willekeurige richting voor de vijand om te bewegen met behulp van de willekeurige module in Python. Gebruik de keuze() functie om een ​​willekeurige richting te selecteren uit een lijst met richtingen waarin de vijand kan bewegen. Werk vervolgens de positie van de vijand bij op basis van de gekozen richting.

importeren willekeurig

# Verplaats de vijand willekeurig op het scherm
richting = willekeurige.keuze(['links', 'rechts', 'omhoog', 'omlaag'])

als richting == 'links':
vijand.x -= 5
elif richting == 'rechts':
vijand.x += 5
elif richting == 'omhoog':
vijand.y -= 5
elif richting == 'omlaag':
vijand.y += 5

Op nabijheid gebaseerde vijandelijke beweging

In sommige spellen beweegt de vijand alleen als de speler dichtbij hem is. Je kunt dit bereiken door de afstand tussen de vijand en de speler te berekenen.

Als de afstand kleiner is dan een bepaalde waarde, laat de vijand dan naar de speler toe bewegen. Dit maakt het spel strategischer en dwingt de speler om voorzichtiger te zijn in zijn bewegingen.

# Verplaats de vijand naar de speler als de speler dichtbij is
snelheid = 2

als afstand < 300:
als afstand != 0:
vijand.x += snelheid * afstand_x / afstand
vijand.y += snelheid * afstand_y / afstand

Vijand ontwijkt aanvallen van spelers

Je kunt de vijand ook de beweging van de speler laten ontwijken. De vijand zal proberen de speler te ontwijken door loodrecht op de positie van de speler te bewegen.

Om dit te bereiken, berekent u de eenheidsvector naar de speler toe met behulp van de eerder berekende afstand_x en afstand_y. Bereken vervolgens de loodrechte vector om de vijand loodrecht op de eenheidsvector te verplaatsen. Bereken ten slotte het puntproduct van de loodrechte vector en de eenheidsvector om de richting van de vijandelijke beweging te bepalen.

Om dit te implementeren, voegt u het onderstaande codefragment toe na de afstandsberekening.

snelheid = 2

als afstand < 400:
als afstand != 0:
# Bereken de eenheidsvector in de richting van de speler
eenheid_vector_x = afstand_x / afstand
eenheid_vector_y = afstand_y / afstand

# Bereken de loodrechte vector
loodrecht_vector_x = -eenheid_vector_y
loodrecht_vector_y = eenheid_vector_x

# Bereken het scalair product van de loodrechte vector en de
# eenheid Vector
dot_product = loodrechte_vector_x * eenheid_vector_x
+ loodrecht_vector_y * eenheid_vector_y

# Verplaats de vijand loodrecht op de eenheidsvector
als dot_product > 0:
vijand.x += snelheid * loodrecht_vector_x
vijand.y += snelheid * loodrecht_vector_y
anders:
vijand.x -= snelheid * loodrecht_vector_x
vijand.y -= snelheid * loodrecht_vector_y

Met deze aanpassingen zal de vijand proberen te voorkomen dat hij te dicht bij de speler komt. Dit maakt het spel uitdagender en leuker om te spelen.

Extra functies toevoegen

Je kunt ook meer functies aan je spel toevoegen om het uitdagender te maken. Je kunt bijvoorbeeld meerdere vijanden toevoegen die willekeurig over het scherm bewegen, obstakels die de speler moet vermijden tijdens het bewegen, power-ups die de vaardigheden van de speler verbeteren, enzovoort.

Jij kan gebruik de klokmodule om de framesnelheid in te stellen van uw spel en laat het soepeler verlopen. Hieronder de uitvoering:

# Voeg meerdere vijanden toe die willekeurig over het scherm bewegen
vijanden = []

voor i in bereik(5):
vijand = pygame. Rect (willekeurig.randint(0, 750), willekeurig.randint(0, 550), 50,
50)

vijanden.toevoegen (vijand)

# Voeg obstakels toe die de speler moet vermijden
obstakel = pygame. Recht(200, 250, 50, 50)

# Stel de spellus in
klok = pygame.tijd. Klok()
hardlopen = WAAR

terwijl rennen:
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals

# Vul het scherm met wit
screen.fill (wit)

# Verplaats de spelersrechthoek
toetsen = pygame.key.get_pressed()

als toetsen[pygame. K_LEFT]:
speler.x -= 5
als toetsen[pygame. K_RIGHT]:
speler.x += 5
als toetsen[pygame. K_UP]:
speler.y -= 5
als toetsen[pygame. K_DOWN]:
speler.y += 5

# Verplaats de vijanden willekeurig op het scherm
voor vijand in vijanden:
richting = willekeurige.keuze(['links', 'rechts', 'omhoog', 'omlaag'])

als richting == 'links':
vijand.x -= 5
elif richting == 'rechts':
vijand.x += 5
elif richting == 'omhoog':
vijand.y -= 5
elif richting == 'omlaag':
vijand.y += 5

# Controleer op botsing tussen speler en vijand
als player.colliderect (vijand):
hardlopen = Vals

# Teken de spelersrechthoek, de vijandelijke objecten en het obstakel erop
# het scherm
pygame.draw.rect (scherm, zwart, speler)

voor vijand in vijanden:
pygame.draw.rect (scherm, zwart, vijand)

pygame.draw.rect (scherm, zwart, obstakel)

# Werk het scherm bij
pygame.display.update()

# Stel de framesnelheid van het spel in
klok.vinkje(60)

# Sluit het spel af
pygame.quit()

Verbeter uw game-ervaring met vijanden

Door vijanden met unieke bewegingen, gedragingen en vaardigheden toe te voegen, kun je je games boeiender en uitdagender maken voor spelers. Spelers zullen hun gameplay moeten strategiseren en aanpassen om verschillende soorten vijanden te verslaan. Dit kan de betrokkenheid vergroten, de herspeelwaarde verbeteren en ervoor zorgen dat spelers blijven terugkomen voor meer.