Pat visvienkāršākajiem ienaidniekiem kaut kā jāpārvietojas, tāpēc gūstiet iedvesmu, kā rīkoties ar kodēšanu aiz uzbrukuma modeļiem.

Viens no lieliskas videospēles galvenajiem elementiem ir ienaidnieku klātbūtne. Neatkarīgi no tā, vai tie ir zombiji, citplanētieši vai citi spēlētāji, ienaidnieki var padarīt spēli daudz izaicinošāku un aizraujošāku.

Programmā PyGame varat viegli ieprogrammēt dažādas ienaidnieka kustības, piemēram, sekot spēlētājam, pārvietoties nejauši vai izvēlēties noteiktus ceļus.

Vienkāršas spēles izveide

Sāciet, izveidojot vienkāršu spēli, kurā spēlētājs pārvietosies horizontāli un vertikāli. Ja spēlētājs pieskaras ienaidniekam, spēlētājs mirs.

Pilnu kodu var atrast šajā sadaļā GitHub repo.

Sāciet, importējot nepieciešamo PyGame moduli un inicializējot to.

imports pygame

pygame.init()

Pēc tam iestatiet ekrānu un izveidojiet atskaņotāja un ienaidnieka objektus, izmantojot pygame. Rect() funkciju.

# Iestatiet ekrānu
ekrāns = pygame.display.set_mode((800, 600))

# Iestatiet krāsas
melns = (0, 0, 0)
balts = (255, 255, 255)

# Iestatiet spēlētāja taisnstūri un ienaidnieka objektu
spēlētājs = pygame. Rect(350, 500, 50, 50)
ienaidnieks = pygame. Rect(350, 0, 50, 50)

Pēc tam izveidojiet spēles cilpu, kas darbojas, līdz spēlētājs vai nu saduras ar ienaidnieku, vai iziet no spēles. Tāpat pārbaudiet sadursme starp spēlētāju un ienaidniekuun uzzīmējiet spēles objektus uz ekrāna.

# Iestatiet spēles cilpu
skriešana = Taisnība

kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
skriešana = Nepatiesi

# Aizpildiet ekrānu ar baltu
screen.fill (balts)

# Pārvietojiet atskaņotāja taisnstūri
taustiņi = pygame.key.get_pressed()

ja atslēgas [pygame. K_LEFT]:
atskaņotājs.x -= 5

ja atslēgas [pygame. K_RIGHT]:
atskaņotājs.x += 5

ja atslēgas [pygame. K_UP]:
player.y -= 5

ja atslēgas [pygame. K_DOWN]:
player.y += 5

# Pārbaudiet, vai nav sadursmes starp spēlētāju un ienaidnieku
ja player.colliderect (ienaidnieks):
skriešana = Nepatiesi

# Uzzīmējiet spēlētāja taisnstūri un ienaidnieka objektu uz ekrāna
pygame.draw.rect (ekrāns, melns, atskaņotājs)
pygame.draw.rect (ekrāns, melns, ienaidnieks)

# Atjauniniet ekrānu
pygame.display.update()

# Iziet no spēles
pygame.quit()

Novirziet ienaidniekus pret spēlētāju

Lai pārvietotu ienaidnieku uz spēlētāju, jums jāaprēķina attālums starp abiem, ko varat izdarīt, izmantojot Pitagora teorēmu. Pēc tam varat izmantot šo attālumu, lai noteiktu ienaidnieka kustības ātrumu un virzienu uz spēlētāju.

Lai to īstenotu, izveidojiet ātruma mainīgo un izmantojiet to, lai atjauninātu ienaidnieka pozīciju pret spēlētāju.

# Aprēķiniet attālumu starp ienaidnieku un spēlētāju
attālums_x = spēlētājs.x — ienaidnieks.x
distance_y = spēlētājs.y — ienaidnieks.y
attālums = (attālums_x ** 2 + distance_y** 2) ** 0.5

# Pārvietojiet ienaidnieku uz spēlētāju
ātrums = 2

ja attālums != 0:
ienaidnieks.x += ātrums * attālums_x / attālums
ienaidnieks.y += ātrums * distance_y / distance

Randomizējiet ienaidnieka kustību ekrānā

Varat arī likt ienaidniekam nejauši pārvietoties ekrānā, lai padarītu spēli izaicinošāku.

Lai to izdarītu, ģenerējiet nejaušu ienaidnieka pārvietošanās virzienu, izmantojot Python izlases moduli. Izmantojiet izvēle() funkcija, lai izvēlētos nejaušu virzienu no virzienu saraksta, kurā ienaidnieks var pārvietoties. Pēc tam atjauniniet ienaidnieka pozīciju, pamatojoties uz izvēlēto virzienu.

imports nejauši

# Pārvietojiet ienaidnieku ekrānā nejauši
virziens = random.choice(['pa kreisi', 'pa labi', "augšā", 'lejā'])

ja virziens == 'pa kreisi':
ienaidnieks.x -= 5
elifs virziens == 'pa labi':
ienaidnieks.x += 5
elifs virziens == "augšā":
ienaidnieks.y -= 5
elifs virziens == 'lejā':
ienaidnieks.y += 5

Uz tuvumu balstīta ienaidnieku kustība

Dažās spēlēs ienaidnieks pārvietojas tikai tad, kad spēlētājs ir viņam tuvu. To var panākt, aprēķinot attālumu starp ienaidnieku un spēlētāju.

Ja attālums ir mazāks par noteiktu vērtību, lieciet ienaidniekam virzīties uz spēlētāju. Tas padara spēli stratēģiskāku un liek spēlētājam būt uzmanīgākam savās kustībās.

# Pārvietojiet ienaidnieku uz spēlētāju, ja spēlētājs ir tuvu
ātrums = 2

ja attālums < 300:
ja attālums != 0:
ienaidnieks.x += ātrums * attālums_x / attālums
ienaidnieks.y += ātrums * distance_y / distance

Ienaidnieks izvairās no spēlētāju uzbrukumiem

Varat arī likt ienaidniekam izvairīties no spēlētāja kustības. Ienaidnieks mēģinās izvairīties no spēlētāja, pārvietojoties perpendikulāri spēlētāja pozīcijai.

Lai to panāktu, aprēķiniet vienības vektoru pret atskaņotāju, izmantojot iepriekš aprēķinātos attālumu_x un distance_y. Pēc tam aprēķiniet perpendikulāro vektoru, lai pārvietotu ienaidnieku perpendikulāri vienības vektoram. Visbeidzot, aprēķiniet perpendikulārā vektora un vienības vektora punktu reizinājumu, lai noteiktu ienaidnieka kustības virzienu.

Lai to īstenotu, pēc attāluma aprēķināšanas pievienojiet tālāk norādīto koda fragmentu.

ātrums = 2

ja attālums < 400:
ja attālums != 0:
# Aprēķiniet vienības vektoru pret atskaņotāju
vienība_vektors_x = attālums_x / attālums
unit_vector_y = distance_y / distance

# Aprēķināt perpendikulāro vektoru
perpendicular_vector_x = -vienība_vektors_y
perpendicular_vector_y = vienība_vektors_x

# Aprēķiniet perpendikulārā vektora punktu reizinājumu un
# vienības vektors
punkts_produkts = perpendikulārs_vektors_x * vienība_vektors_x
+ perpendikulārs_vektors_y * vienība_vektors_y

# Pārvietojiet ienaidnieku perpendikulāri vienības vektoram
ja dot_product > 0:
ienaidnieks.x += ātrums * perpendikulārs_vektors_x
ienaidnieks.y += ātrums * perpendikulārs_vektors_y
cits:
ienaidnieks.x -= ātrums * perpendikulārs_vektors_x
ienaidnieks.y -= ātrums * perpendikulārs_vektors_y

Izmantojot šīs modifikācijas, ienaidnieks centīsies izvairīties no pārāk tuvu tuvošanās spēlētājam. Tas padara spēli daudz izaicinošāku un jautrāku.

Papildu funkciju pievienošana

Varat arī pievienot savai spēlei vairāk funkciju, lai padarītu to izaicinošāku. Piemēram, varat pievienot vairākus ienaidniekus, kas ekrānā pārvietojas nejauši, šķēršļus, no kuriem spēlētājam ir jāizvairās, pārvietojoties, jaudu, kas uzlabo spēlētāja spējas un tā tālāk.

Jūs varat izmantojiet moduli Pulkstenis, lai iestatītu kadru ātrumu un padarīt to raitāku. Tālāk ir norādīta ieviešana:

# Pievienojiet vairākus ienaidniekus, kas ekrānā pārvietojas nejauši
ienaidnieki = []

priekš i iekšā diapazons(5):
ienaidnieks = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

ienaidnieki.pievienot (ienaidnieks)

# Pievienojiet šķēršļus, no kuriem spēlētājam ir jāizvairās
šķērslis = pygame. Rect(200, 250, 50, 50)

# Iestatiet spēles cilpu
pulkstenis = pygame.time. Pulkstenis ()
skriešana = Taisnība

kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
skriešana = Nepatiesi

# Aizpildiet ekrānu ar baltu
screen.fill (balts)

# Pārvietojiet atskaņotāja taisnstūri
taustiņi = pygame.key.get_pressed()

ja atslēgas [pygame. K_LEFT]:
atskaņotājs.x -= 5
ja atslēgas [pygame. K_RIGHT]:
atskaņotājs.x += 5
ja atslēgas [pygame. K_UP]:
player.y -= 5
ja atslēgas [pygame. K_DOWN]:
player.y += 5

# Pārvietojiet ienaidniekus nejauši ekrānā
priekš ienaidnieks iekšā ienaidnieki:
virziens = random.choice(['pa kreisi', 'pa labi', "augšā", 'lejā'])

ja virziens == 'pa kreisi':
ienaidnieks.x -= 5
elifs virziens == 'pa labi':
ienaidnieks.x += 5
elifs virziens == "augšā":
ienaidnieks.y -= 5
elifs virziens == 'lejā':
ienaidnieks.y += 5

# Pārbaudiet, vai nav sadursmes starp spēlētāju un ienaidnieku
ja player.colliderect (ienaidnieks):
skriešana = Nepatiesi

# Uzzīmējiet spēlētāja taisnstūri, ienaidnieka objektus un šķērsli
# ekrāns
pygame.draw.rect (ekrāns, melns, atskaņotājs)

priekš ienaidnieks iekšā ienaidnieki:
pygame.draw.rect (ekrāns, melns, ienaidnieks)

pygame.draw.rect (ekrāns, melns, šķērslis)

# Atjauniniet ekrānu
pygame.display.update()

# Iestatiet spēles kadru ātrumu
pulkstenis.tick(60)

# Iziet no spēles
pygame.quit()

Uzlabojiet savu spēļu pieredzi ar ienaidniekiem

Pievienojot ienaidniekus ar unikālām kustībām, uzvedību un spējām, jūs varat padarīt savas spēles spēlētājiem saistošākas un izaicinošākas. Spēlētājiem būs jāizstrādā stratēģija un jāpielāgo sava spēle, lai pārvarētu dažāda veida ienaidniekus. Tas var palielināt iesaisti, uzlabot atkārtošanas vērtību un likt spēlētājiem atgriezties, lai iegūtu vairāk.