Čak se i najosnovniji neprijatelji moraju nekako kretati, stoga potražite inspiraciju kako se nositi s kodiranjem iza obrazaca napada.

Jedan od ključnih elemenata izvrsne video igre je prisutnost neprijatelja. Bilo da su zombiji, izvanzemaljci ili drugi igrači, neprijatelji mogu učiniti igru ​​izazovnijom i uzbudljivijom.

U PyGameu možete jednostavno programirati različita ponašanja neprijatelja u kretanju, kao što je praćenje igrača, nasumično kretanje ili uzimanje određenih putanja.

Stvaranje jednostavne igre

Započnite stvaranjem jednostavne igre u kojoj će se igrač kretati vodoravno i okomito. Ako igrač dotakne neprijatelja, igrač će umrijeti.

Ovdje možete pronaći cijeli kod GitHub repo.

Započnite s uvozom potrebnog PyGame modula i njegovim inicijaliziranjem.

uvoz pygame

pygame.init()

Zatim postavite zaslon i stvorite igračeve i neprijateljske objekte pomoću pygame. Rect() funkcija.

# Postavite zaslon
zaslon = pygame.display.set_mode((800, 600))

# Postavite boje
crno = (0, 0, 0)
bijelo = (255, 255, 255)

instagram viewer

# Postavite pravokutnik igrača i neprijateljski objekt
igrač = pygame. Pravo(350, 500, 50, 50)
neprijatelj = pygame. Pravo(350, 0, 50, 50)

Nakon toga stvorite petlju igre koja traje dok se igrač ne sudari s neprijateljem ili ne izađe iz igre. Također, provjerite za sudara između igrača i neprijateljai nacrtajte objekte igre na ekranu.

# Postavite petlju igre
trčanje = Pravi

dok trčanje:
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
trčanje = lažno

# Ispunite ekran bijelom bojom
screen.fill (bijelo)

# Pomaknite pravokutnik igrača
tipke = pygame.key.get_pressed()

ako ključevi[pygame. K_LIJEVO]:
igrač.x -= 5

ako ključevi[pygame. K_DESNO]:
igrač.x += 5

ako ključevi[pygame. K_UP]:
igrač.y -= 5

ako ključevi[pygame. K_DOWN]:
igrač.y += 5

# Provjerite postoji li sudar između igrača i neprijatelja
ako player.colliderect (neprijatelj):
trčanje = lažno

# Nacrtajte pravokutnik igrača i neprijateljski objekt na ekranu
pygame.draw.rect (zaslon, crno, igrač)
pygame.draw.rect (zaslon, crno, neprijatelj)

# Ažurirajte zaslon
pygame.display.update()

# Napustite igru
pygame.quit()

Usmjerite neprijatelje prema igraču

Da biste pomaknuli neprijatelja prema igraču, morate izračunati udaljenost između njih dvojice, što možete učiniti pomoću Pitagorinog teorema. Zatim možete koristiti tu udaljenost da odredite brzinu i smjer kretanja neprijatelja prema igraču.

Da biste to implementirali, stvorite varijablu brzine i koristite je za ažuriranje položaja neprijatelja prema igraču.

# Izračunajte udaljenost između neprijatelja i igrača
udaljenost_x = igrač.x - neprijatelj.x
udaljenost_y = igrač.y - neprijatelj.y
udaljenost = (udaljenost_x ** 2 + udaljenost_y ** 2) ** 0.5

# Pomaknite neprijatelja prema igraču
brzina = 2

ako udaljenost != 0:
neprijatelj.x += brzina * udaljenost_x / udaljenost
neprijatelj.y += brzina * udaljenost_y / udaljenost

Nasumično odredite kretanje neprijatelja na zaslonu

Također možete natjerati neprijatelja da se kreće nasumično po ekranu kako bi igra bila izazovnija.

Da biste to učinili, generirajte nasumični smjer kretanja neprijatelja pomoću nasumičnog modula u Pythonu. Koristiti izbor() funkcija odabira slučajnog smjera s popisa smjerova u kojima se neprijatelj može kretati. Zatim ažurirajte položaj neprijatelja na temelju odabranog smjera.

uvoz slučajan

# Nasumično pomičite neprijatelja po ekranu
smjer = random.choice(['lijevo', 'pravo', 'gore', 'dolje'])

ako smjer == 'lijevo':
neprijatelj.x -= 5
elif smjer == 'pravo':
neprijatelj.x += 5
elif smjer == 'gore':
neprijatelj.y -= 5
elif smjer == 'dolje':
neprijatelj.y += 5

Neprijateljsko kretanje temeljeno na blizini

U nekim igrama, neprijatelj se kreće samo kada je igrač blizu njega. To možete postići izračunavanjem udaljenosti između neprijatelja i igrača.

Ako je udaljenost manja od određene vrijednosti, natjerajte neprijatelja da krene prema igraču. To igru ​​čini strateškim i tjera igrača da bude pažljiviji u svojim pokretima.

# Pomaknite neprijatelja prema igraču ako je igrač blizu
brzina = 2

ako udaljenost < 300:
ako udaljenost != 0:
neprijatelj.x += brzina * udaljenost_x / udaljenost
neprijatelj.y += brzina * udaljenost_y / udaljenost

Neprijatelj izbjegava napade igrača

Također možete natjerati neprijatelja da izmiče pokretima igrača. Neprijatelj će pokušati izbjeći igrača krećući se okomito na poziciju igrača.

Da biste to postigli, izračunajte jedinični vektor prema igraču pomoću ranije izračunatih distance_x i distance_y. Zatim izračunajte okomiti vektor da pomaknete neprijatelja okomito na jedinični vektor. Na kraju izračunajte točkasti umnožak okomitog vektora i jediničnog vektora kako biste odredili smjer kretanja neprijatelja.

Da biste to implementirali, dodajte isječak koda u nastavku nakon izračuna udaljenosti.

brzina = 2

ako udaljenost < 400:
ako udaljenost != 0:
# Izračunajte jedinični vektor prema igraču
jedinični_vektor_x = udaljenost_x / udaljenost
jedinični_vektor_y = udaljenost_y / udaljenost

# Izračunajte okomiti vektor
okomit_vektor_x = -jedinični_vektor_y
okomit_vektor_y = jedinični_vektor_x

# Izračunajte točkasti umnožak okomitog vektora i
# jedinični vektor
točkasti_proizvod = okomit_vektor_x * jedinični_vektor_x
+ okomit_vektor_y * jedinični_vektor_y

# Pomaknite neprijatelja okomito na jedinični vektor
ako dot_product > 0:
neprijatelj.x += brzina * okomit_vektor_x
neprijatelj.y += brzina * okomit_vektor_y
drugo:
neprijatelj.x -= brzina * okomit_vektor_x
neprijatelj.y -= brzina * okomit_vektor_y

S ovim izmjenama, neprijatelj će pokušati izbjeći previše približavanje igraču. To igru ​​čini izazovnijom i zabavnijom.

Dodavanje dodatnih značajki

Također možete dodati više značajki u svoju igru ​​kako biste je učinili izazovnijom. Na primjer, možete dodati više neprijatelja koji se nasumično kreću po ekranu, prepreke koje igrač treba izbjegavati dok se kreće, pojačanja koja poboljšavaju igračeve sposobnosti i tako dalje.

Možeš koristite modul Sat za postavljanje brzine kadrova vaše igre i učinite da ona radi glatko. U nastavku je implementacija:

# Dodajte više neprijatelja koji se nasumično kreću po ekranu
neprijatelji = []

za ja u raspon (5):
neprijatelj = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

neprijatelji.dodaj (neprijatelj)

# Dodajte prepreke koje igrač treba izbjegavati
prepreka = pygame. Pravo(200, 250, 50, 50)

# Postavite petlju igre
sat = pygame.vrijeme. Sat()
trčanje = Pravi

dok trčanje:
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
trčanje = lažno

# Ispunite ekran bijelom bojom
screen.fill (bijelo)

# Pomaknite pravokutnik igrača
tipke = pygame.key.get_pressed()

ako ključevi[pygame. K_LIJEVO]:
igrač.x -= 5
ako ključevi[pygame. K_DESNO]:
igrač.x += 5
ako ključevi[pygame. K_UP]:
igrač.y -= 5
ako ključevi[pygame. K_DOWN]:
igrač.y += 5

# Premjestite neprijatelje nasumično na ekranu
za neprijatelj u Neprijatelji:
smjer = random.choice(['lijevo', 'pravo', 'gore', 'dolje'])

ako smjer == 'lijevo':
neprijatelj.x -= 5
elif smjer == 'pravo':
neprijatelj.x += 5
elif smjer == 'gore':
neprijatelj.y -= 5
elif smjer == 'dolje':
neprijatelj.y += 5

# Provjerite postoji li sudar između igrača i neprijatelja
ako player.colliderect (neprijatelj):
trčanje = lažno

# Nacrtajte pravokutnik igrača, neprijateljske objekte i prepreku
# zaslon
pygame.draw.rect (zaslon, crno, igrač)

za neprijatelj u Neprijatelji:
pygame.draw.rect (zaslon, crno, neprijatelj)

pygame.draw.rect (zaslon, crno, prepreka)

# Ažurirajte zaslon
pygame.display.update()

# Postavite broj sličica u sekundi igre
clock.tick(60)

# Napustite igru
pygame.quit()

Unaprijedite svoje iskustvo igranja s neprijateljima

Dodavanjem neprijatelja s jedinstvenim pokretima, ponašanjem i sposobnostima, svoje igre možete učiniti privlačnijim i izazovnijim za igrače. Igrači će morati osmisliti strategiju i prilagoditi svoje igranje kako bi nadvladali različite vrste neprijatelja. To može povećati angažman, poboljšati vrijednost ponavljanja i natjerati igrače da se vraćaju po još.