Зачините своје аркадне игре увођењем непријатеља.

Непријатељи играју кључну улогу у стварању занимљивих и изазовних игара. Они пружају препреке и противнике за играче, чинећи искуство играња узбудљивијим. Питхон-ова библиотека Арцаде нуди једноставан начин да уградите непријатеље у своје игре.

Направите једноставну игру

Пре него што почнете, уверите се да имате пип инсталиран на вашем уређају. Користите ову команду да бисте инсталирали арцаде библиотека:

пип инсталл арцаде

Након тога, почните креирањем једноставне игре у којој играч може да се креће лево и десно помоћу тастера са стрелицама.

Код коришћен у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.

увоз арцаде

# Димензије прозора
СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600

# Атрибути играча
ПЛАИЕР_РАДИУС = 25
ПЛАИЕР_СПЕЕД = 5

класаГамеВиндов(аркада. прозор):
деф__у томе__(само, ширина, висина):
супер().__инит__(ширина, висина)
арцаде.сет_бацкгроунд_цолор (арцаде.цолор. БЕО)
селф.плаиер_к = ширина // 2

дефон_драв(сам):


арцаде.старт_рендер()
арцаде.драв_цирцле_филлед (селф.плаиер_к, ПЛАИЕР_РАДИУС, ПЛАИЕР_РАДИУС, арцаде.цолор. ПЛАВИ)

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ЛИЈЕВО:
селф.плаиер_к -= ПЛАИЕР_СПЕЕД
елиф кључ == арцаде.кеи. ЈЕЛ ТАКО:
селф.плаиер_к += ПЛАИЕР_СПЕЕД

дефажурирање(селф, делта_тиме):
проћи

дефглавни():
прозор = ГамеВиндов (СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ)
арцаде.рун()

ако __наме__ == "__главни__":
главни()

Стварање једноставног непријатеља

Да бисте створили непријатеља који убија играча након судара, направите још један круг на екрану. У он_драв функцију, можете нацртати овај непријатељски круг и проверити да ли има судара у ажурирање методом. Можете такође користите духове за непријатеље.

# Додај у класу ГамеВиндов

класаГамеВиндов(аркада. прозор):
# ...

деф__у томе__(само, ширина, висина):
# ...

# Непријатељски атрибути
селф.енеми_к = ширина // 2
селф.енеми_и = висина - ПЛАИЕР_РАДИУС
селф.енеми_радиус = 20

дефон_драв(сам):
# ...
арцаде.драв_цирцле_филлед (селф.енеми_к, селф.енеми_и, селф.енеми_радиус, арцаде.цолор. ЦРВЕНА)

дефажурирање(селф, делта_тиме):
ако селф.ис_цоллисион (селф.плаиер_к, селф.плаиер_и, селф.енеми_к, селф.енеми_и, ПЛАИЕР_РАДИУС, селф.енеми_радиус):
штампа ("Крај игре!")

дефје_судар(селф, к1, и1, к2, и2, радијус1, радијус2):
дистанце_скуаред = (к1 - к2) ** 2 + (и1 - и2) ** 2
радиус_сум_скуаред = (радијус1 + радијус2) ** 2
повратак дистанце_скуаред <= радиус_скуаред

Натерати непријатеља да прати играча

У неким играма, непријатељи могу да јуре играча, додајући динамички елемент игри. Да бисте креирали следећег непријатеља, морате да ажурирате његову позицију на основу позиције играча. Било кад играч се креће, непријатељ се креће у истом правцу. То можете постићи модификацијом ажурирање методом. Креирајте нову датотеку под називом енеми-фоллов-плаиер.пи и додајте код са ажурирањима у наставку:

# Додај у класу ГамеВиндов

класаГамеВиндов(аркада. прозор):
# ...

дефажурирање(селф, делта_тиме):
ако селф.плаиер_к < селф.енеми_к:
селф.енеми_к -= ПЛАИЕР_СПЕЕД
елиф селф.плаиер_к > селф.енеми_к:
селф.енеми_к += ПЛАИЕР_СПЕЕД

ако селф.ис_цоллисион (селф.плаиер_к, селф.плаиер_и,
селф.енеми_к, селф.енеми_и,
ПЛАИЕР_РАДИУС, ЕНЕМИ_РАДИУС):
штампа ("Крај игре!")

дефје_судар(селф, к1, и1, к2, и2, радијус1, радијус2):
дистанце_скуаред = (к1 - к2) ** 2 + (и1 - и2) ** 2
радиус_сум_скуаред = (радијус1 + радијус2) ** 2
повратак дистанце_скуаред <= радиус_скуаред

Испод је излаз:

Додавање непријатељских метака

Да бисте створили непријатеља који испаљује метке, креирајте а Буллет класу и листу за праћење активних метака. Непријатељ ће повремено стварати нови метак и ажурирати своју позицију. Креирајте нову датотеку под називом буллетс.пи и додајте код са ажурирањима у наставку:

# Додај у класу ГамеВиндов

класаБуллет:
деф__у томе__(сам, к, и, радијус, брзина):
селф.к = к
селф.и = и
селф.радиус = радијус
селф.брзина = брзина

дефажурирање(сам):
селф.и -= селф.спеед

класаГамеВиндов(аркада. прозор):
# ...

деф__у томе__(само, ширина, висина):
# ...

# Непријатељски атрибути
селф.буллетс = []
селф.буллет_радиус = 5
селф.буллет_спеед = 3
селф.буллет_цоолдовн = 60# Број оквира између појављивања метака
селф.буллет_тимер = 0

дефон_драв(сам):
# ...
за метак ин селф.буллетс:
арцаде.драв_цирцле_филлед (буллет.к, буллет.и,
селф.буллет_радиус, арцаде.цолор. ЦРН)

дефажурирање(селф, делта_тиме):
# ...

селф.буллет_тимер += 1
ако селф.буллет_тимер >= селф.буллет_цоолдовн:
селф.буллетс.аппенд (Метак (селф.енеми_к, селф.енеми_и - селф.енеми_радиус,
селф.буллет_радиус, селф.буллет_спеед))
селф.буллет_тимер = 0

за метак ин селф.буллетс:
буллет.упдате()
ако селф.ис_цоллисион (селф.плаиер_к, селф.плаиер_и, селф.енеми_к,
селф.енеми_и, ПЛАИЕР_РАДИУС, ЕНЕМИ_РАДИУС):
штампа ("Крај игре!")

дефје_судар(селф, к1, и1, к2, и2, радијус1, радијус2):
дистанце_скуаред = (к1 - к2) ** 2 + (и1 - и2) ** 2
радиус_сум_скуаред = (радијус1 + радијус2) ** 2
повратак дистанце_скуаред <= радиус_скуаред

Испод је излаз:

Додавање здравствених поена за непријатеље

У многим играма, непријатељи могу поседовати здравствене поене (ХП), што им омогућава да издрже више удараца пре него што буду поражени. Додавање здравствених поена непријатељима може увести стратешке елементе игре и пружити осећај прогресије и изазова. Креирајте нову датотеку под називом хетх-поинт.пи и додајте код са ажурирањима у наставку:

# Димензије прозора
СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600

# Атрибути играча
ПЛАИЕР_РАДИУС = 25
ПЛАИЕР_СПЕЕД = 5

# Непријатељски атрибути
ЕНЕМИ_РАДИУС = 20
ЕНЕМИ_ХЕАЛТХ = 100

класаГамеВиндов(аркада. прозор):
деф__у томе__(само, ширина, висина):
супер().__инит__(ширина, висина)
арцаде.сет_бацкгроунд_цолор (арцаде.цолор. БЕО)
селф.плаиер_к = ширина // 2
селф.плаиер_и = висина // 2
селф.енеми_к = ширина // 2
селф.енеми_и = висина - ПЛАИЕР_РАДИУС
селф.енеми_хеалтх = ЕНЕМИ_ХЕАЛТХ
штампа (селф.енеми_хеалтх)
дефон_драв(сам):
арцаде.старт_рендер()
арцаде.драв_цирцле_филлед (селф.плаиер_к,
селф.плаиер_и,
ПЛАИЕР_РАДИУС,
арцаде.цолор. ПЛАВИ)
ако селф.неми_хеалтх > 0:
арцаде.драв_цирцле_филлед (селф.енеми_к,
селф.енеми_и,
ЕНЕМИ_РАДИУС,
арцаде.цолор. ЦРВЕНА)

дефажурирање(селф, делта_тиме):
ако селф.ис_цоллисион (селф.плаиер_к, селф.плаиер_и,
селф.енеми_к, селф.енеми_и,
ПЛАИЕР_РАДИУС, ЕНЕМИ_РАДИУС):
селф.неми_хеалтх -= 10
штампа (селф.енеми_хеалтх)

Тхе ЕНЕМИ_ХЕАЛТХ константа има вредност од 100 да представља почетне здравствене поене непријатеља. Када се играч судари са непријатељем, можете одбити неке поене од непријатељског здравља. Да бисте приказали ажурирану вредност здравља, можете одштампати текстуални објекат селф.хеалтх_тект то показује тренутно здравље непријатеља.

Укључујући здравствене поене за непријатеље, можете увести слој изазова и стратегије за играче. Приказана вредност здравља пружа визуелну повратну информацију и омогућава играчима да прате преостало здравље непријатеља.

Поред тога, можете проширити код додавањем додатне логике и визуелних приказа, као што је приказивање трака здравља или имплементација услова пораза када здравље непријатеља достигне нулу.

Најбоље праксе за стварање непријатеља

Када дизајнирате непријатеље за своју игру, важно је размотрити неколико најбољих пракси како бисте осигурали да доприносе изазовном и пријатном искуству играња. Ево неколико смерница које треба следити када стварате непријатеље:

Диверсе Аттрибутес

Креирајте непријатеље са различитим атрибутима као што су брзина, величина, здравље и моћ напада. Различити типови непријатеља би требало да представљају различите нивое тежине, захтевајући од играча да у складу са тим прилагоде своје стратегије. Увођењем мешавине непријатељских атрибута, можете одржати игру свежом и занимљивом.

Јединствена понашања

Дајте сваком типу непријатеља своје јединствене обрасце понашања. Неки непријатељи могу да се крећу на предвидљив начин, док други могу показати сложеније или неправилније покрете. Размислите о уграђивању непријатељских АИ алгоритама како бисте њихово понашање учинили интелигентнијим и непредвидивијим, додајући додатни слој изазова за играче.

Здравствени поени (ХП)

Примените здравствене поене за непријатеље да бисте унели осећај прогресије и издржљивости. Ово омогућава непријатељима да издрже више удараца пре него што буду поражени. Додељивањем различитих количина ХП-а различитим типовима непријатеља, можете креирати хијерархију тежине и охрабрити играче да одреде стратегију и дају приоритет својим циљевима.

Учините игре забавнијим са непријатељима

Додавање непријатеља у ваше игре може значајно побољшати искуство играња. Они уводе изазове и мотивишу играче да унапреде своје вештине. Непријатељи могу доћи у различитим облицима, од једноставних препрека до сложених противника вођених вештачком интелигенцијом. Ефикасном применом непријатеља, можете учинити своје игре занимљивијим и пријатнијим за играче.