Чак и најосновнији непријатељи морају некако да се крећу, па пронађите инспирацију о томе како да се носите са кодирањем иза образаца напада.
Један од кључних елемената одличне видео игре је присуство непријатеља. Било да су зомбији, ванземаљци или други играчи, непријатељи могу учинити игру изазовнијом и узбудљивијом.
У ПиГаме-у можете лако програмирати различита понашања непријатеља у кретању, као што је праћење играча, насумично кретање или кретање одређеним путањама.
Креирање једноставне игре
Почните креирањем једноставне игре у којој ће се играч кретати хоризонтално и вертикално. Ако играч додирне непријатеља, играч ће умрети.
Овде можете пронаћи комплетан код ГитХуб репо.
Започните увозом потребног ПиГаме модула и иницијализацијом.
увоз пигаме
пигаме.инит()
Затим подесите екран и креирајте играче и непријатељске објекте користећи пигаме. Рецт() функција.
# Подесите екран
екран = пигаме.дисплаи.сет_моде((800, 600))# Подесите боје
црно = (0, 0, 0)
бело = (255, 255, 255)
# Поставите правоугаоник играча и непријатељски објекат
играч = пигаме. Рецт(350, 500, 50, 50)
непријатељ = пигаме. Рецт(350, 0, 50, 50)
Након тога, направите петљу игре која траје све док се играч или не судари са непријатељем или не изађе из игре. Такође, проверите судар између играча и непријатеља, и нацртајте објекте игре на екрану.
# Подесите петљу игре
трчање = Истинадок трчање:
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсе# Попуните екран белом бојом
сцреен.филл (бело)# Помери правоугаоник плејера
кључеви = пигаме.кеи.гет_прессед()ако кључеви [пигаме. К_ЛЕФТ]:
плаиер.к -= 5ако кључеви [пигаме. К_ДЕСНО]:
плаиер.к += 5ако кључеви [пигаме. К_УП]:
играч.и -= 5ако кључеви [пигаме. К_ДОВН]:
играч.и += 5# Проверите да ли постоји судар између играча и непријатеља
ако плаиер.цоллидерецт (непријатељ):
трчање = Фалсе# Нацртајте правоугаоник играча и непријатељски објекат на екрану
пигаме.драв.рецт (екран, црни, плејер)
пигаме.драв.рецт (екран, црни, непријатељ)# Ажурирајте екран
пигаме.дисплаи.упдате()
# Прекините игру
пигаме.куит()
Усмерите непријатеље ка играчу
Да бисте померили непријатеља према играчу, потребно је да израчунате растојање између њих двоје, што можете да урадите помоћу Питагорине теореме. Затим можете користити ову удаљеност да одредите брзину кретања и правац непријатеља према играчу.
Да бисте ово применили, креирајте променљиву брзине и користите је да ажурирате позицију непријатеља према играчу.
# Израчунајте растојање између непријатеља и играча
дистанце_к = плаиер.к - непријатељ.к
дистанце_и = плаиер.и - непријатељ.и
растојање = (дистанце_к ** 2 + дистанце_и ** 2) ** 0.5# Померите непријатеља према играчу
брзина = 2
ако удаљеност != 0:
непријатељ.к += брзина * растојање_к / растојање
непријатељ.и += брзина * растојање_и / растојање
Насумично кретање непријатеља на екрану
Такође можете натерати непријатеља да се насумично креће по екрану како бисте игру учинили изазовнијом.
Да бисте то урадили, генеришите насумични правац за кретање непријатеља користећи насумични модул у Питхон-у. Користити избор() функција да изаберете насумични правац са листе праваца у којима непријатељ може да се креће. Затим ажурирајте позицију непријатеља на основу изабраног правца.
увоз насумично
# Померајте непријатеља насумично по екрану
смер = случајни.избор(['лево', 'јел тако', 'горе', 'доле'])
ако правац == 'лево':
непријатељ.к -= 5
елиф правац == 'јел тако':
непријатељ.к += 5
елиф правац == 'горе':
непријатељ.и -= 5
елиф правац == 'доле':
непријатељ.и += 5
Непријатељски покрет заснован на близини
У неким играма, непријатељ се креће само када је играч близу њих. То можете постићи израчунавањем удаљености између непријатеља и играча.
Ако је растојање мање од одређене вредности, натерајте непријатеља да се креће према играчу. Ово чини игру стратешкијом и приморава играча да буде пажљивији у својим покретима.
# Померите непријатеља према играчу ако је играч близу
брзина = 2
ако растојање < 300:
ако удаљеност != 0:
непријатељ.к += брзина * растојање_к / растојање
непријатељ.и += брзина * растојање_и / растојање
Непријатељ избегава нападе играча
Такође можете натерати непријатеља да избегне кретање играча. Непријатељ ће покушати да избегне играча крећући се окомито на позицију играча.
Да бисте то постигли, израчунајте јединични вектор према играчу користећи дистанце_к и дистанце_и израчунате раније. Затим израчунајте окомити вектор да бисте померили непријатеља окомито на јединични вектор. Коначно, израчунајте тачкасти производ управног вектора и јединичног вектора да одредите правац кретања непријатеља.
Да бисте ово применили, додајте исечак кода испод након израчунавања удаљености.
брзина = 2
ако растојање < 400:
ако удаљеност != 0:
# Израчунајте јединични вектор према играчу
унит_вецтор_к = дистанце_к / дистанце
унит_вецтор_и = дистанце_и / дистанце# Израчунајте окомит вектор
перпендикуларни_вектор_к = -јединични_вектор_и
перпендикуларни_вектор_и = јединични_вектор_к# Израчунајте тачкасти производ управног вектора и
# јединични вектор
тачка_производ = перпендикуларни_вектор_к * јединични_вектор_к
+ перпендицулар_вецтор_и * унит_вецтор_и
# Померите непријатеља окомито на вектор јединице
ако тачка_производ > 0:
непријатељ.к += брзина * перпендикуларни_вектор_к
непријатељ.и += брзина * перпендикуларни_вектор_и
друго:
непријатељ.к -= брзина * управно_вектор_к
непријатељ.и -= брзина * управно_вектор_и
Са овим модификацијама, непријатељ ће покушати да избегне да се превише приближи играчу. Ово чини игру изазовнијом и забавнијом за играње.
Додавање додатних функција
Такође можете додати више функција у своју игру како бисте је учинили изазовнијом. На пример, можете додати више непријатеља који се насумично крећу по екрану, препреке које играч треба да избегне док се креће, појачања која побољшавају играчеве способности и тако даље.
Можете користите модул Сат да подесите брзину кадрова ваше игре и учините да она ради лакше. Испод је имплементација:
# Додајте више непријатеља који се насумично крећу по екрану
непријатељи = []за и ин домет(5):
непријатељ = пигаме. Рецт (рандом.рандинт(0, 750), рандом.рандинт(0, 550), 50,
50)непријатељи.додати (непријатељ)
# Додајте препреке које играч треба да избегне
препрека = пигаме. Рецт(200, 250, 50, 50)# Подесите петљу игре
сат = пигаме.тиме. сат()
трчање = Истинадок трчање:
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсе# Попуните екран белом бојом
сцреен.филл (бело)# Помери правоугаоник плејера
кључеви = пигаме.кеи.гет_прессед()ако кључеви [пигаме. К_ЛЕФТ]:
плаиер.к -= 5
ако кључеви [пигаме. К_ДЕСНО]:
плаиер.к += 5
ако кључеви [пигаме. К_УП]:
играч.и -= 5
ако кључеви [пигаме. К_ДОВН]:
играч.и += 5# Померајте непријатеље насумично по екрану
за непријатељ ин непријатељи:
смер = случајни.избор(['лево', 'јел тако', 'горе', 'доле'])ако правац == 'лево':
непријатељ.к -= 5
елиф правац == 'јел тако':
непријатељ.к += 5
елиф правац == 'горе':
непријатељ.и -= 5
елиф правац == 'доле':
непријатељ.и += 5# Проверите да ли постоји судар између играча и непријатеља
ако плаиер.цоллидерецт (непријатељ):
трчање = Фалсе# Нацртајте правоугаоник играча, непријатељске објекте и препреку
# екран
пигаме.драв.рецт (екран, црни, плејер)за непријатељ ин непријатељи:
пигаме.драв.рецт (екран, црни, непријатељ)пигаме.драв.рецт (екран, црно, препрека)
# Ажурирајте екран
пигаме.дисплаи.упдате()# Подесите брзину кадрова игре
цлоцк.тицк(60)
# Прекините игру
пигаме.куит()
Побољшајте своје искуство играња са непријатељима
Додавањем непријатеља са јединственим покретима, понашањем и способностима, можете учинити своје игре занимљивијим и изазовнијим за играче. Играчи ће морати да израде стратегију и прилагоде своју игру како би савладали различите врсте непријатеља. Ово може повећати ангажовање, побољшати вредност понављања и натерати играче да се враћају по још.