Aj tí najzákladnejší nepriatelia sa musia nejako pohybovať, takže sa inšpirujte, ako zvládnuť kódovanie za vzormi útokov.

Jedným z kľúčových prvkov skvelej videohry je prítomnosť nepriateľov. Či už sú to zombíci, mimozemšťania alebo iní hráči, nepriatelia môžu urobiť hru náročnejšou a vzrušujúcejšou.

V PyGame môžete ľahko naprogramovať rôzne správanie nepriateľov pri pohybe, ako je sledovanie hráča, náhodný pohyb alebo špecifické cesty.

Vytvorenie jednoduchej hry

Začnite vytvorením jednoduchej hry, v ktorej sa hráč bude pohybovať horizontálne a vertikálne. Ak sa hráč dotkne nepriateľa, hráč zomrie.

Kompletný kód nájdete v tomto Úložisko GitHub.

Začnite importovaním potrebného modulu PyGame a jeho inicializáciou.

importovať pygame

pygame.init()

Ďalej nastavte obrazovku a vytvorte objekty hráča a nepriateľa pomocou pygame. Rect() funkciu.

# Nastavte obrazovku
obrazovka = pygame.display.set_mode((800, 600))

# Nastavte farby
čierna = (0, 0, 0)
biela = (255, 255, 255)

# Nastavte hráčsky obdĺžnik a nepriateľský objekt
hráč = pygame. Rect(350, 500, 50, 50)
nepriateľ = pygame. Rect(350, 0, 50, 50)

instagram viewer

Potom vytvorte hernú slučku, ktorá beží, kým sa hráč nezrazí s nepriateľom alebo neopustí hru. Skontrolujte tiež kolízia medzi hráčom a nepriateľoma nakreslite herné objekty na obrazovku.

# Nastavte hernú slučku
beh = Pravda

zatiaľ čo beh:
pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivé

# Vyplňte obrazovku bielou farbou
screen.fill (biela)

# Presuňte obdĺžnik prehrávača
keys = pygame.key.get_pressed()

ak kľúče [pygame. K_LEFT]:
hráč.x -= 5

ak kľúče [pygame. K_RIGHT]:
hráč.x += 5

ak kľúče [pygame. K_UP]:
hráč.y -= 5

ak kľúče [pygame. K_DOWN]:
player.y += 5

# Skontrolujte kolíziu medzi hráčom a nepriateľom
ak player.colliderect (nepriateľ):
beh = Nepravdivé

# Nakreslite na obrazovku obdĺžnik hráča a nepriateľský objekt
pygame.draw.rect (obrazovka, čierna, prehrávač)
pygame.draw.rect (obrazovka, čierna, nepriateľ)

# Aktualizujte obrazovku
pygame.display.update()

# Ukončite hru
pygame.quit()

Priame nepriateľov smerom k hráčovi

Ak chcete presunúť nepriateľa smerom k hráčovi, musíte vypočítať vzdialenosť medzi nimi, čo môžete urobiť pomocou Pytagorovej vety. Túto vzdialenosť potom môžete použiť na určenie rýchlosti pohybu nepriateľa a smeru k hráčovi.

Ak to chcete implementovať, vytvorte premennú rýchlosti a použite ju na aktualizáciu pozície nepriateľa smerom k hráčovi.

# Vypočítajte vzdialenosť medzi nepriateľom a hráčom
vzdialenosť_x = hráč.x - nepriateľ.x
vzdialenosť_y = hráč.y - nepriateľ.y
vzdialenosť = (vzdialenosť_x ** 2 + vzdialenosť_y ** 2) ** 0.5

# Presuňte nepriateľa smerom k hráčovi
rýchlosť = 2

ak vzdialenosť != 0:
nepriateľ.x += rýchlosť * vzdialenosť_x / vzdialenosť
nepriateľ.y += rýchlosť * vzdialenosť_y / vzdialenosť

Randomizujte pohyb nepriateľa na obrazovke

Môžete tiež prinútiť nepriateľa pohybovať sa po obrazovke náhodne, aby bola hra náročnejšia.

Ak to chcete urobiť, vygenerujte náhodný smer pohybu nepriateľa pomocou náhodného modulu v Pythone. Použi výber() funkcia na výber náhodného smeru zo zoznamu smerov, ktorými sa môže nepriateľ pohybovať. Potom aktualizujte pozíciu nepriateľa na základe zvoleného smeru.

importovať náhodný

# Presuňte nepriateľa náhodne na obrazovku
smer = random.choice(['vľavo', 'správny', 'hore', 'dole'])

ak smer == 'vľavo':
nepriateľ.x -= 5
elif smer == 'správny':
nepriateľ.x += 5
elif smer == 'hore':
nepriateľ.y -= 5
elif smer == 'dole':
nepriateľ.y += 5

Hnutie nepriateľov založené na blízkosti

V niektorých hrách sa nepriateľ pohybuje iba vtedy, keď je hráč blízko neho. Môžete to dosiahnuť výpočtom vzdialenosti medzi nepriateľom a hráčom.

Ak je vzdialenosť menšia ako určitá hodnota, posuňte nepriateľa smerom k hráčovi. Vďaka tomu je hra strategickejšia a núti hráča byť opatrnejší pri pohyboch.

# Presuňte nepriateľa smerom k hráčovi, ak je hráč blízko
rýchlosť = 2

ak vzdialenosť < 300:
ak vzdialenosť != 0:
nepriateľ.x += rýchlosť * vzdialenosť_x / vzdialenosť
nepriateľ.y += rýchlosť * vzdialenosť_y / vzdialenosť

Nepriateľ sa vyhýba útokom hráčov

Môžete tiež prinútiť nepriateľa, aby sa vyhýbal pohybu hráča. Nepriateľ sa bude snažiť vyhnúť hráčovi pohybom kolmo na pozíciu hráča.

Aby ste to dosiahli, vypočítajte jednotkový vektor smerom k hráčovi pomocou skôr vypočítaných vzdialeností x a y. Potom vypočítajte kolmý vektor, aby ste presunuli nepriateľa kolmo na jednotkový vektor. Nakoniec vypočítajte bodový súčin kolmého vektora a jednotkového vektora, aby ste určili smer pohybu nepriateľa.

Ak to chcete implementovať, pridajte útržok kódu nižšie za výpočet vzdialenosti.

rýchlosť = 2

ak vzdialenosť < 400:
ak vzdialenosť != 0:
# Vypočítajte jednotkový vektor smerom k hráčovi
unit_vector_x = vzdialenosť_x / vzdialenosť
unit_vector_y = vzdialenosť_y / vzdialenosť

# Vypočítajte kolmý vektor
perpendicular_vector_x = -unit_vector_y
kolmý_vektor_y = jednotkový_vektor_x

# Vypočítajte bodový súčin kolmého vektora a
# jednotkový vektor
dot_product = kolmý_vektor_x * jednotkový_vektor_x
+ kolmý_vektor_y * jednotkový_vektor_y

# Presuňte nepriateľa kolmo na vektor jednotky
ak bodka_produkt > 0:
nepriateľ.x += rýchlosť * kolmý_vektor_x
nepriateľ.y += rýchlosť * kolmý_vektor_y
inak:
nepriateľ.x -= rýchlosť * kolmý_vektor_x
nepriateľ.y -= rýchlosť * kolmý_vektor_y

S týmito úpravami sa nepriateľ pokúsi vyhnúť prílišnému priblíženiu sa k hráčovi. Vďaka tomu je hra náročnejšia a zábavnejšia.

Pridanie extra funkcií

Do hry môžete pridať aj ďalšie funkcie, aby bola náročnejšia. Môžete napríklad pridať viacero nepriateľov, ktorí sa náhodne pohybujú po obrazovke, prekážky, ktorým sa hráč musí pri pohybe vyhýbať, vylepšenia, ktoré zlepšujú schopnosti hráča atď.

Môžeš použite modul Hodiny na nastavenie snímkovej frekvencie vašej hry a zaistite jej plynulejší chod. Nižšie je uvedená implementácia:

# Pridajte viacero nepriateľov, ktorí sa náhodne pohybujú na obrazovke
nepriatelia = []

pre i v rozsah(5):
nepriateľ = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

nepriatelia.pridať (nepriateľ)

# Pridajte prekážky, ktorým sa hráč musí vyhnúť
prekážka = pyhra. Rect(200, 250, 50, 50)

# Nastavte hernú slučku
hodiny = pygame.time. hodiny()
beh = Pravda

zatiaľ čo beh:
pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivé

# Vyplňte obrazovku bielou farbou
screen.fill (biela)

# Presuňte obdĺžnik prehrávača
keys = pygame.key.get_pressed()

ak kľúče [pygame. K_LEFT]:
hráč.x -= 5
ak kľúče [pygame. K_RIGHT]:
hráč.x += 5
ak kľúče [pygame. K_UP]:
hráč.y -= 5
ak kľúče [pygame. K_DOWN]:
player.y += 5

# Presuňte nepriateľov náhodne na obrazovku
pre nepriateľa v nepriatelia:
smer = random.choice(['vľavo', 'správny', 'hore', 'dole'])

ak smer == 'vľavo':
nepriateľ.x -= 5
elif smer == 'správny':
nepriateľ.x += 5
elif smer == 'hore':
nepriateľ.y -= 5
elif smer == 'dole':
nepriateľ.y += 5

# Skontrolujte kolíziu medzi hráčom a nepriateľom
ak player.colliderect (nepriateľ):
beh = Nepravdivé

# Nakreslite obdĺžnik hráča, nepriateľské predmety a prekážku
# obrazovka
pygame.draw.rect (obrazovka, čierna, prehrávač)

pre nepriateľa v nepriatelia:
pygame.draw.rect (obrazovka, čierna, nepriateľ)

pygame.draw.rect (obrazovka, čierna, prekážka)

# Aktualizujte obrazovku
pygame.display.update()

# Nastavte snímkovú frekvenciu hry
clock.tick(60)

# Ukončite hru
pygame.quit()

Vylepšite svoj herný zážitok s nepriateľmi

Pridaním nepriateľov s jedinečnými pohybmi, správaním a schopnosťami môžete urobiť svoje hry pútavejšie a náročnejšie pre hráčov. Hráči budú musieť stratégovať a prispôsobiť svoju hru, aby prekonali rôzne typy nepriateľov. To môže zvýšiť zapojenie, zlepšiť hodnotu opakovania a prinútiť hráčov, aby sa vracali pre viac.