Jopa alkeellisten vihollisten täytyy liikkua jotenkin, joten hanki inspiraatiota hyökkäysmallien taustalla olevan koodauksen käsittelemisestä.

Yksi suuren videopelin avainelementeistä on vihollisten läsnäolo. Olivatpa he zombeja, ulkomaalaisia ​​tai muita pelaajia, viholliset voivat tehdä pelistä haastavamman ja jännittävämmän.

PyGamessa voit helposti ohjelmoida erilaisia ​​vihollisen liikkeitä, kuten pelaajan seuraamista, satunnaista liikkumista tai tiettyjä polkuja.

Yksinkertaisen pelin luominen

Aloita luomalla yksinkertainen peli, jossa pelaaja liikkuu vaaka- ja pystysuunnassa. Jos pelaaja koskettaa vihollista, pelaaja kuolee.

Löydät täydellisen koodin tästä GitHub repo.

Aloita tuomalla tarvittava PyGame-moduuli ja alustamalla se.

tuonti pygame

pygame.init()

Aseta seuraavaksi näyttö ja luo pelaaja- ja vihollisobjektit käyttämällä pygame. Suora() toiminto.

# Aseta näyttö
näyttö = pygame.display.set_mode((800, 600))

# Aseta värit
musta =(0, 0, 0)
valkoinen = (255, 255, 255)

# Aseta pelaajan suorakulmio ja vihollisobjekti

instagram viewer

pelaaja = pygame. Rect(350, 500, 50, 50)
vihollinen = pygame. Rect(350, 0, 50, 50)

Tämän jälkeen luo pelisilmukka, joka jatkuu, kunnes pelaaja joko törmää viholliseen tai poistuu pelistä. Tarkista myös pelaajan ja vihollisen välinen törmäysja piirrä peliobjektit näytölle.

# Aseta pelisilmukka
juoksu = Totta

sillä aikaa käynnissä:
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Väärä

# Täytä näyttö valkoisella
screen.fill (valkoinen)

# Siirrä soittimen suorakulmiota
avaimet = pygame.key.get_pressed()

jos avaimet[pygame. K_LEFT]:
pelaaja.x -= 5

jos avaimet[pygame. K_RIGHT]:
pelaaja.x += 5

jos avaimet[pygame. K_UP]:
pelaaja.y -= 5

jos avaimet[pygame. K_DOWN]:
pelaaja.y += 5

# Tarkista törmäys pelaajan ja vihollisen välillä
jos player.colliderect (vihollinen):
juoksu = Väärä

# Piirrä soittimen suorakulmio ja vihollisobjekti näytölle
pygame.draw.rect (näyttö, musta, soitin)
pygame.draw.rect (näyttö, musta, vihollinen)

# Päivitä näyttö
pygame.display.update()

# Lopeta peli
pygame.quit()

Suuntaa vihollisia kohti pelaajaa

Siirtääksesi vihollista kohti pelaajaa, sinun on laskettava näiden kahden välinen etäisyys, jonka voit tehdä Pythagoraan lauseen avulla. Tämän etäisyyden avulla voit määrittää vihollisen liikenopeuden ja suunnan pelaajaa kohti.

Tämän toteuttamiseksi luo nopeusmuuttuja ja käytä sitä vihollisen aseman päivittämiseen pelaajaa kohti.

# Laske vihollisen ja pelaajan välinen etäisyys
etäisyys_x = pelaaja.x - vihollinen.x
etäisyys_y = pelaaja.y - vihollinen.y
etäisyys = (etäisyys_x ** 2 + etäisyys_y ** 2) ** 0.5

# Siirrä vihollinen pelaajaa kohti
nopeus = 2

jos etäisyys! = 0:
vihollinen.x += nopeus * etäisyys_x / etäisyys
vihollinen.y += nopeus * etäisyys_y / etäisyys

Satunnaista vihollisen liike näytöllä

Voit myös saada vihollisen liikkumaan satunnaisesti näytöllä tehdäksesi pelistä haastavamman.

Voit tehdä tämän luomalla satunnaisen suunnan viholliselle Pythonin satunnaisen moduulin avulla. Käytä valinta() toiminto, jolla voit valita satunnaisen suunnan vihollisen suuntien luettelosta. Päivitä sitten vihollisen sijainti valitun suunnan perusteella.

tuonti satunnainen

# Siirrä vihollinen satunnaisesti näytöllä
suunta = random.choice(['vasen', 'oikein', 'ylös', 'alas'])

jos suunta == 'vasen':
vihollinen.x -= 5
elif suunta == 'oikein':
vihollinen.x += 5
elif suunta == 'ylös':
vihollinen.y -= 5
elif suunta == 'alas':
vihollinen.y += 5

Läheisyyteen perustuva vihollisliike

Joissakin peleissä vihollinen liikkuu vain, kun pelaaja on lähellä häntä. Voit saavuttaa tämän laskemalla vihollisen ja pelaajan välisen etäisyyden.

Jos etäisyys on pienempi kuin tietty arvo, pakota vihollinen liikkumaan pelaajaa kohti. Tämä tekee pelistä strategisemman ja pakottaa pelaajan olemaan varovaisempi liikkeissään.

# Siirrä vihollinen pelaajaa kohti, jos pelaaja on lähellä
nopeus = 2

jos etäisyys < 300:
jos etäisyys! = 0:
vihollinen.x += nopeus * etäisyys_x / etäisyys
vihollinen.y += nopeus * etäisyys_y / etäisyys

Vihollinen välttelee pelaajien hyökkäyksiä

Voit myös saada vihollisen väistämään pelaajan liikkeitä. Vihollinen yrittää välttää pelaajaa liikkumalla kohtisuorassa pelaajan asemaan nähden.

Tämän saavuttamiseksi laske yksikkövektori pelaajaa kohti käyttämällä aiemmin laskettuja etäisyys_x ja etäisyys_y. Laske sitten kohtisuora vektori siirtääksesi vihollisen kohtisuoraan yksikkövektoriin nähden. Lopuksi laske kohtisuoran vektorin ja yksikkövektorin pistetulo vihollisen liikkeen suunnan määrittämiseksi.

Tämän toteuttamiseksi lisää alla oleva koodinpätkä etäisyyslaskennan jälkeen.

nopeus = 2

jos etäisyys < 400:
jos etäisyys! = 0:
# Laske yksikkövektori kohti pelaajaa
yksikkö_vektori_x = etäisyys_x / etäisyys
yksikkö_vektori_y = etäisyys_y / etäisyys

# Laske kohtisuora vektori
kohtisuora_vektori_x = -yksikkö_vektori_y
kohtisuora_vektori_y = yksikkö_vektori_x

# Laske kohtisuoran vektorin pistetulo ja
# yksikkövektori
pistetuote = kohtisuora_vektori_x * yksikkö_vektori_x
+ kohtisuora_vektori_y * yksikkö_vektori_y

# Siirrä vihollinen kohtisuoraan yksikkövektoriin nähden
jos dot_product > 0:
vihollinen.x += nopeus * kohtisuora_vektori_x
vihollinen.y += nopeus * perpendicular_vector_y
muu:
vihollinen.x -= nopeus * kohtisuora_vektori_x
vihollinen.y -= nopeus * perpendicular_vector_y

Näillä muokkauksilla vihollinen yrittää välttää pääsemästä liian lähelle pelaajaa. Tämä tekee pelistä haastavamman ja hauskempaa pelata.

Lisäominaisuuksien lisääminen

Voit myös lisätä peliisi enemmän ominaisuuksia tehdäksesi siitä haastavamman. Voit esimerkiksi lisätä useita vihollisia, jotka liikkuvat satunnaisesti näytöllä, esteitä, joita pelaajan on vältettävä liikkuessaan, tehosteita, jotka parantavat pelaajan kykyjä ja niin edelleen.

Sinä pystyt aseta kuvanopeus Kello-moduulilla pelistäsi ja saat sen toimimaan sujuvammin. Alla toteutus:

# Lisää useita vihollisia, jotka liikkuvat satunnaisesti näytöllä
viholliset = []

varten i sisään range(5):
vihollinen = pygame. Suora (random.randint(0, 750), random.randint(0, 550), 50,
50)

viholliset.liitä (vihollinen)

# Lisää esteitä, joita pelaajan on vältettävä
este = pygame. Rect(200, 250, 50, 50)

# Aseta pelisilmukka
kello = pygame.time. Kello()
juoksu = Totta

sillä aikaa käynnissä:
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Väärä

# Täytä näyttö valkoisella
screen.fill (valkoinen)

# Siirrä soittimen suorakulmiota
avaimet = pygame.key.get_pressed()

jos avaimet[pygame. K_LEFT]:
pelaaja.x -= 5
jos avaimet[pygame. K_RIGHT]:
pelaaja.x += 5
jos avaimet[pygame. K_UP]:
pelaaja.y -= 5
jos avaimet[pygame. K_DOWN]:
pelaaja.y += 5

# Siirrä vihollisia satunnaisesti näytöllä
varten vihollinen sisään viholliset:
suunta = random.choice(['vasen', 'oikein', 'ylös', 'alas'])

jos suunta == 'vasen':
vihollinen.x -= 5
elif suunta == 'oikein':
vihollinen.x += 5
elif suunta == 'ylös':
vihollinen.y -= 5
elif suunta == 'alas':
vihollinen.y += 5

# Tarkista törmäys pelaajan ja vihollisen välillä
jos player.colliderect (vihollinen):
juoksu = Väärä

# Piirrä pelaajan suorakulmio, vihollisen esineet ja este päälle
# näyttö
pygame.draw.rect (näyttö, musta, soitin)

varten vihollinen sisään viholliset:
pygame.draw.rect (näyttö, musta, vihollinen)

pygame.draw.rect (näyttö, musta, este)

# Päivitä näyttö
pygame.display.update()

# Aseta pelin kuvataajuus
kello.tick(60)

# Lopeta peli
pygame.quit()

Paranna pelikokemustasi vihollisilla

Lisäämällä vihollisia ainutlaatuisilla liikkeillä, käyttäytymisellä ja kyvyillä voit tehdä peleistäsi kiinnostavampia ja haastavampia pelaajille. Pelaajien on strategioita ja mukautettava pelaamistaan ​​voittaakseen erilaisia ​​vihollisia. Tämä voi lisätä sitoutumista, parantaa toistoarvoa ja saada pelaajat palaamaan lisää.