Selv de mest basale fjender skal bevæge sig på en eller anden måde, så få lidt inspiration til, hvordan du håndterer kodningen bag angrebsmønstrene.

Et af nøgleelementerne i et fantastisk videospil er tilstedeværelsen af ​​fjender. Uanset om de er zombier, aliens eller andre spillere, kan fjender gøre et spil mere udfordrende og spændende.

I PyGame kan du nemt programmere en række forskellige fjendens bevægelsesadfærd, som at følge spilleren, bevæge dig tilfældigt eller tage bestemte stier.

Oprettelse af et simpelt spil

Start med at skabe et simpelt spil, hvor en spiller vil bevæge sig vandret og lodret. Hvis spilleren rører fjenden, vil spilleren dø.

Du kan finde den komplette kode i denne GitHub repo.

Begynd med at importere det nødvendige PyGame-modul og initialisere det.

importere pygame

pygame.init()

Sæt derefter skærmen op og opret afspilleren og fjendens objekter ved hjælp af pygame. Rect() fungere.

# Indstil skærmen
skærm = pygame.display.set_mode((800, 600))

# Indstil farverne
sort = (0, 0, 0)
hvid = (255, 255, 255)

instagram viewer

# Indstil spillerrektanglet og fjendens objekt
spiller = pygame. Rekt(350, 500, 50, 50)
fjende = pygame. Rekt(350, 0, 50, 50)

Derefter skal du oprette en spilløkke, der kører, indtil spilleren enten kolliderer med fjenden eller forlader spillet. Tjek også efter kollision mellem spilleren og fjenden, og tegn spilobjekterne på skærmen.

# Opsæt spilløkken
kører = Rigtigt

mens kører:
til begivenhed i pygame.event.get():
hvis event.type == pygame. AFSLUT:
kører = Falsk

# Fyld skærmen med hvid
screen.fill (hvid)

# Flyt afspillerens rektangel
keys = pygame.key.get_pressed()

hvis nøgler[pygame. K_LEFT]:
player.x -= 5

hvis nøgler[pygame. K_RIGHT]:
player.x += 5

hvis nøgler[pygame. K_UP]:
player.y -= 5

hvis nøgler[pygame. K_DOWN]:
player.y += 5

# Tjek for kollision mellem spiller og fjende
hvis player.colliderect (fjende):
kører = Falsk

# Tegn spillerrektanglet og fjendens objekt på skærmen
pygame.draw.rect (skærm, sort, afspiller)
pygame.draw.rect (skærm, sort, fjende)

# Opdater skærmen
pygame.display.update()

# Afslut spillet
pygame.quit()

Ret fjender mod spilleren

For at flytte fjenden mod spilleren skal du beregne afstanden mellem de to, hvilket du kan gøre ved hjælp af Pythagoras sætning. Du kan derefter bruge denne afstand til at bestemme fjendens bevægelseshastighed og retning mod spilleren.

For at implementere dette skal du oprette en hastighedsvariabel og bruge den til at opdatere fjendens position mod spilleren.

# Beregn afstanden mellem fjenden og spilleren
distance_x = player.x - enemy.x
distance_y = player.y - enemy.y
afstand = (afstand_x ** 2 + distance_y ** 2) ** 0.5

# Flyt fjenden mod spilleren
hastighed = 2

hvis afstand != 0:
enemy.x += hastighed * distance_x / distance
enemy.y += hastighed * distance_y / distance

Randomiser fjendens bevægelse på skærmen

Du kan også få fjenden til at bevæge sig tilfældigt på skærmen for at gøre spillet mere udfordrende.

For at gøre dette skal du generere en tilfældig retning, som fjenden kan bevæge sig ved hjælp af det tilfældige modul i Python. Brug valg() funktion til at vælge en tilfældig retning fra en liste over retninger, som fjenden kan bevæge sig i. Opdater derefter fjendens position baseret på den valgte retning.

importere tilfældig

# Flyt fjenden tilfældigt på skærmen
retning = random.choice(['venstre', 'højre', 'op', 'ned'])

hvis retning == 'venstre':
enemy.x -= 5
elif retning == 'højre':
enemy.x += 5
elif retning == 'op':
enemy.y -= 5
elif retning == 'ned':
enemy.y += 5

Nærhedsbaseret fjendebevægelse

I nogle spil bevæger fjenden sig kun, når spilleren er tæt på dem. Du kan opnå dette ved at beregne afstanden mellem fjenden og spilleren.

Hvis afstanden er mindre end en vis værdi, skal du få fjenden til at bevæge sig mod spilleren. Dette gør spillet mere strategisk og tvinger spilleren til at være mere forsigtige i deres bevægelser.

# Flyt fjenden mod spilleren, hvis spilleren er tæt på
hastighed = 2

hvis afstand < 300:
hvis afstand != 0:
enemy.x += hastighed * distance_x / distance
enemy.y += hastighed * distance_y / distance

Fjenden unddrager sig spillerangreb

Du kan også få fjenden til at undvige spillerens bevægelse. Fjenden vil forsøge at undgå spilleren ved at bevæge sig vinkelret på spillerens position.

For at opnå dette skal du beregne enhedsvektoren mod afspilleren ved at bruge distance_x og distance_y beregnet tidligere. Beregn derefter den vinkelrette vektor for at flytte fjenden vinkelret på enhedsvektoren. Beregn til sidst prikproduktet af den vinkelrette vektor og enhedsvektoren for at bestemme fjendens bevægelsesretning.

For at implementere dette skal du tilføje kodestykket nedenfor efter afstandsberegningen.

hastighed = 2

hvis afstand < 400:
hvis afstand != 0:
# Beregn enhedsvektoren mod afspilleren
enhed_vektor_x = afstand_x / afstand
enhed_vektor_y = afstand_y / afstand

# Beregn den vinkelrette vektor
vinkelret_vektor_x = -enhed_vektor_y
vinkelret_vektor_y = enhed_vektor_x

# Beregn prikproduktet af den vinkelrette vektor og
# enhedsvektor
prik_produkt = vinkelret_vektor_x * enhed_vektor_x
+ vinkelret_vektor_y * enhed_vektor_y

# Flyt fjenden vinkelret på enhedsvektoren
hvis prik_produkt > 0:
enemy.x += hastighed * vinkelret_vektor_x
enemy.y += hastighed * perpendicular_vector_y
andet:
enemy.x -= hastighed * vinkelret_vektor_x
enemy.y -= hastighed * vinkelret_vektor_y

Med disse modifikationer vil fjenden forsøge at undgå at komme for tæt på spilleren. Dette gør spillet mere udfordrende og sjovt at spille.

Tilføjelse af ekstra funktioner

Du kan også tilføje flere funktioner i dit spil for at gøre det mere udfordrende. For eksempel kan du tilføje flere fjender, der bevæger sig tilfældigt på skærmen, forhindringer, som spilleren skal undgå, mens han bevæger sig, power-ups, der forbedrer spillerens evner, og så videre.

Du kan brug Ur-modulet til at indstille billedhastigheden af dit spil og få det til at køre mere glat. Nedenfor er implementeringen:

# Tilføj flere fjender, der bevæger sig tilfældigt på skærmen
fjender = []

til jeg i rækkevidde(5):
fjende = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

enemies.append (fjende)

# Tilføj forhindringer, som spilleren skal undgå
forhindring = pygame. Rekt(200, 250, 50, 50)

# Opsæt spilløkken
ur = pygame.time. Ur()
kører = Rigtigt

mens kører:
til begivenhed i pygame.event.get():
hvis event.type == pygame. AFSLUT:
kører = Falsk

# Fyld skærmen med hvid
screen.fill (hvid)

# Flyt afspillerens rektangel
keys = pygame.key.get_pressed()

hvis nøgler[pygame. K_LEFT]:
player.x -= 5
hvis nøgler[pygame. K_RIGHT]:
player.x += 5
hvis nøgler[pygame. K_UP]:
player.y -= 5
hvis nøgler[pygame. K_DOWN]:
player.y += 5

# Flyt fjenderne tilfældigt på skærmen
til fjende i fjender:
retning = random.choice(['venstre', 'højre', 'op', 'ned'])

hvis retning == 'venstre':
enemy.x -= 5
elif retning == 'højre':
enemy.x += 5
elif retning == 'op':
enemy.y -= 5
elif retning == 'ned':
enemy.y += 5

# Tjek for kollision mellem spiller og fjende
hvis player.colliderect (fjende):
kører = Falsk

# Tegn spillerrektanglet, fjendens objekter og forhindringen på
# skærmen
pygame.draw.rect (skærm, sort, afspiller)

til fjende i fjender:
pygame.draw.rect (skærm, sort, fjende)

pygame.draw.rect (skærm, sort, forhindring)

# Opdater skærmen
pygame.display.update()

# Indstil billedhastigheden for spillet
clock.tick(60)

# Afslut spillet
pygame.quit()

Forbedre din spiloplevelse med fjender

Ved at tilføje fjender med unikke bevægelser, adfærd og evner kan du gøre dine spil mere engagerende og udfordrende for spillere. Spillere bliver nødt til at planlægge og tilpasse deres gameplay for at overvinde forskellige typer fjender. Dette kan øge engagementet, forbedre replay-værdien og få spillere til at vende tilbage efter mere.