I ti nejzákladnější nepřátelé se musí nějak pohybovat, takže se inspirujte, jak zacházet s kódováním za vzorem útoku.
Jedním z klíčových prvků skvělé videohry je přítomnost nepřátel. Ať už jsou to zombie, mimozemšťané nebo jiní hráči, nepřátelé mohou udělat hru náročnější a vzrušující.
V PyGame můžete snadno naprogramovat různé chování nepřátel při pohybu, jako je sledování hráče, náhodný pohyb nebo konkrétní cesty.
Vytvoření jednoduché hry
Začněte vytvořením jednoduché hry, kde se hráč bude pohybovat vodorovně a svisle. Pokud se hráč dotkne nepřítele, hráč zemře.
Kompletní kód najdete v tomto úložiště GitHub.
Začněte importováním potřebného modulu PyGame a jeho inicializací.
import pygame
pygame.init()
Dále nastavte obrazovku a vytvořte hráče a nepřátelské objekty pomocí pygame. Rect() funkce.
# Nastavte obrazovku
obrazovka = pygame.display.set_mode((800, 600))# Nastavte barvy
černá = (0, 0, 0)
bílá = (255, 255, 255)
# Nastavte hráčský obdélník a nepřátelský objekt
hráč = pygame. Rect(350, 500, 50, 50)
nepřítel = pygame. Rect(350, 0, 50, 50)
Poté vytvořte herní smyčku, která běží, dokud se hráč buď nesrazí s nepřítelem, nebo neopustí hru. Také zkontrolujte kolize mezi hráčem a nepřítelema nakreslete herní objekty na obrazovku.
# Nastavte herní smyčku
běh = Skutečnýzatímco běh:
pro událost v pygame.event.get():
-li event.type == pygame. PŘESTAT:
běh = Nepravdivé# Vyplňte obrazovku bílou
screen.fill (bílá)# Přesuňte obdélník přehrávače
keys = pygame.key.get_pressed()-li klíče [pygame. K_LEFT]:
hráč.x -= 5-li klíče [pygame. K_RIGHT]:
hráč.x += 5-li klíče [pygame. K_UP]:
hráč.y -= 5-li klíče [pygame. K_DOWN]:
player.y += 5# Zkontrolujte kolizi mezi hráčem a nepřítelem
-li player.colliderect (nepřítel):
běh = Nepravdivé# Nakreslete obdélník hráče a nepřátelský objekt na obrazovku
pygame.draw.rect (obrazovka, černá, přehrávač)
pygame.draw.rect (obrazovka, černá, nepřítel)# Aktualizujte obrazovku
pygame.display.update()
# Ukončete hru
pygame.quit()
Přímé nepřátele směrem k hráči
Chcete-li přesunout nepřítele směrem k hráči, musíte vypočítat vzdálenost mezi nimi, což můžete udělat pomocí Pythagorovy věty. Tuto vzdálenost pak můžete použít k určení rychlosti a směru pohybu nepřítele směrem k hráči.
Chcete-li to provést, vytvořte proměnnou rychlosti a použijte ji k aktualizaci pozice nepřítele vůči hráči.
# Vypočítejte vzdálenost mezi nepřítelem a hráčem
distance_x = hráč.x - nepřítel.x
distance_y = hráč.y - nepřítel.y
vzdálenost = (vzdálenost_x ** 2 + vzdálenost_y ** 2) ** 0.5# Přesuňte nepřítele směrem k hráči
rychlost = 2
-li vzdálenost != 0:
nepřítel.x += rychlost * vzdálenost_x / vzdálenost
nepřítel.y += rychlost * vzdálenost_y / vzdálenost
Randomizujte pohyb nepřátel na obrazovce
Můžete také přimět nepřítele, aby se po obrazovce pohyboval náhodně, aby byla hra náročnější.
Chcete-li to provést, vygenerujte náhodný směr pohybu nepřítele pomocí náhodného modulu v Pythonu. Použijte výběr() funkce pro výběr náhodného směru ze seznamu směrů, kterými se může nepřítel pohybovat. Poté aktualizujte pozici nepřítele na základě zvoleného směru.
import náhodný
# Přesuňte nepřítele náhodně na obrazovku
směr = random.choice(['vlevo, odjet', 'že jo', 'nahoru', 'dolů'])
-li směr == 'vlevo, odjet':
nepřítel.x -= 5
elif směr == 'že jo':
nepřítel.x += 5
elif směr == 'nahoru':
nepřítel.y -= 5
elif směr == 'dolů':
nepřítel.y += 5
Proximity-Based Enemy Movement
V některých hrách se nepřítel pohybuje pouze tehdy, když je hráč blízko něj. Toho dosáhnete výpočtem vzdálenosti mezi nepřítelem a hráčem.
Pokud je vzdálenost menší než určitá hodnota, přimějte nepřítele k pohybu směrem k hráči. Díky tomu je hra strategičtější a nutí hráče k větší opatrnosti ve svých pohybech.
# Přesuňte nepřítele směrem k hráči, pokud je hráč blízko
rychlost = 2
-li vzdálenost < 300:
-li vzdálenost != 0:
nepřítel.x += rychlost * vzdálenost_x / vzdálenost
nepřítel.y += rychlost * vzdálenost_y / vzdálenost
Nepřítel se vyhýbá útokům hráčů
Můžete také přimět nepřítele, aby se vyhýbal hráčovu pohybu. Nepřítel se bude snažit vyhnout hráči pohybem kolmo na pozici hráče.
Chcete-li toho dosáhnout, vypočítejte jednotkový vektor směrem k hráči pomocí dříve vypočítaných vzdáleností x a vzdálenost y. Poté vypočítejte kolmý vektor, aby se nepřítel posunul kolmo k jednotkovému vektoru. Nakonec spočítejte bodový součin kolmého vektoru a jednotkového vektoru, abyste určili směr pohybu nepřítele.
Chcete-li to provést, přidejte fragment kódu níže za výpočet vzdálenosti.
rychlost = 2
-li vzdálenost < 400:
-li vzdálenost != 0:
# Vypočítejte jednotkový vektor směrem k hráči
unit_vector_x = vzdálenost_x / vzdálenost
unit_vector_y = vzdálenost_y / vzdálenost# Vypočítejte kolmý vektor
perpendicular_vector_x = -unit_vector_y
kolmý_vektor_y = jednotkový_vektor_x# Vypočítejte bodový součin kolmého vektoru a
# jednotkový vektor
dot_product = kolmý_vektor_x * jednotkový_vektor_x
+ kolmý_vektor_y * jednotkový_vektor_y
# Přesuňte nepřítele kolmo k vektoru jednotky
-li dot_product > 0:
nepřítel.x += rychlost * kolmý_vektor_x
nepřítel.y += rychlost * kolmý_vektor_y
jiný:
nepřítel.x -= rychlost * kolmý_vektor_x
nepřítel.y -= rychlost * kolmý_vektor_y
S těmito úpravami se nepřítel bude snažit vyhnout se přílišné blízkosti hráče. Díky tomu je hra náročnější a zábavnější.
Přidání dalších funkcí
Do hry můžete také přidat další funkce, aby byla náročnější. Můžete například přidat více nepřátel, kteří se náhodně pohybují po obrazovce, překážky, kterým se hráč musí při pohybu vyhýbat, vylepšení, která zlepšují hráčovy schopnosti a tak dále.
Můžeš pomocí modulu Hodiny nastavte snímkovou frekvenci vaší hry a zajistit její plynulejší chod. Níže je implementace:
# Přidejte více nepřátel, kteří se náhodně pohybují na obrazovce
nepřátelé = []pro i v rozsah(5):
nepřítel = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)nepřátelé.připojit (nepřítel)
# Přidejte překážky, kterým se hráč musí vyhnout
překážka = pygame. Rect(200, 250, 50, 50)# Nastavte herní smyčku
hodiny = pygame.time. Hodiny()
běh = Skutečnýzatímco běh:
pro událost v pygame.event.get():
-li event.type == pygame. PŘESTAT:
běh = Nepravdivé# Vyplňte obrazovku bílou
screen.fill (bílá)# Přesuňte obdélník přehrávače
keys = pygame.key.get_pressed()-li klíče [pygame. K_LEFT]:
hráč.x -= 5
-li klíče [pygame. K_RIGHT]:
hráč.x += 5
-li klíče [pygame. K_UP]:
hráč.y -= 5
-li klíče [pygame. K_DOWN]:
player.y += 5# Přesuňte nepřátele náhodně na obrazovce
pro nepřítel v nepřátelé:
směr = random.choice(['vlevo, odjet', 'že jo', 'nahoru', 'dolů'])-li směr == 'vlevo, odjet':
nepřítel.x -= 5
elif směr == 'že jo':
nepřítel.x += 5
elif směr == 'nahoru':
nepřítel.y -= 5
elif směr == 'dolů':
nepřítel.y += 5# Zkontrolujte kolizi mezi hráčem a nepřítelem
-li player.colliderect (nepřítel):
běh = Nepravdivé# Nakreslete obdélník hráče, nepřátelské předměty a překážku
# obrazovka
pygame.draw.rect (obrazovka, černá, přehrávač)pro nepřítel v nepřátelé:
pygame.draw.rect (obrazovka, černá, nepřítel)pygame.draw.rect (obrazovka, černá, překážka)
# Aktualizujte obrazovku
pygame.display.update()# Nastavte snímkovou frekvenci hry
hodiny.tikat(60)
# Ukončete hru
pygame.quit()
Vylepšete svůj herní zážitek s nepřáteli
Přidáním nepřátel s jedinečnými pohyby, chováním a schopnostmi můžete své hry učinit pro hráče poutavější a náročnější. Hráči budou muset vymyslet strategii a přizpůsobit svou hru, aby překonali různé typy nepřátel. To může zvýšit zapojení, zlepšit hodnotu přehrávání a přimět hráče, aby se vraceli pro více.