Било да судар даје појачање или води до завршетка игре, морате бити у могућности да га откријете. Ево како то учинити са Питхон-овом аркадном библиотеком.

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

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

Креирање једноставне игре

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

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

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

Можете пронаћи комплетан код у овом ГитХуб репо.

Ево кода за игру:

увоз арцаде

СЦРЕЕН_ВИДТХ = 640
СЦРЕЕН_ХЕИГХТ = 480
МОВЕМЕНТ_СПЕЕД = 5

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

дефон_драв(сам):
арцаде.старт_рендер()
селф.плаиер.драв()
селф.неми.драв()

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

дефажурирање(селф, делта_тиме):
ако арцаде.цхецк_фор_цоллисион (селф.плаиер, селф.енеми):
штампа ("Крај игре")

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

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

Арцаде-ове карактеристике детекције судара

Библиотека Арцаде пружа једноставан начин за откривање судара између духова. Тхе цхецк_фор_цоллисион функција узима два сприте-а као аргументе и враћа Булову вредност која показује да ли су се спрајтови сударили. Ову функцију можете користити за откривање судара између играча и непријатељских духова у вашој игри.

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

Ево ажурираног кода:

дефажурирање(селф, делта_тиме):
ако арцаде.цхецк_фор_цоллисион (селф.плаиер, селф.енеми):
штампа ("Крај игре")
друго:
селф.плаиер.упдате()

Са овом променом, ваша игра ће детектовати колизије и штампати Крај игре текст ако се играч судари са непријатељем.

Додавање више функција

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

На пример, можете креирати листу непријатеља и ажурирати игру како би се појавили нови непријатељи на насумичном положају након сваког судара. Можете померите играча лево и десно да избегнете непријатеља и постигнете поен. Ево примера како можете да примените ове функције:

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

дефон_драв(сам):
арцаде.старт_рендер()
селф.плаиер.драв()
селф.енемиес.драв()
арцаде.драв_тект(ф"Оцена: {селф.сцоре}", 10, СЦРЕЕН_ХЕИГХТ - 30, арцаде.цолор. ЦРН, 16)

дефажурирање(селф, делта_тиме):
ако арцаде.цхецк_фор_цоллисион_витх_лист (селф.плаиер, селф.енемиес):
штампа ("Крај игре")
арцаде.цлосе_виндов()
друго:
селф.плаиер.упдате()
за непријатељ ин селф.ненемиес:
енеми.центер_и -= МОВЕМЕНТ_СПЕЕД / 2
ако непријатељ.центер_и < 0:
енеми.центер_к = рандом.рандинт(0, СЦРЕЕН_ВИДТХ)
енеми.центер_и = рандом.рандинт (СЦРЕЕН_ХЕИГХТ // 2, СЦРЕЕН_ХЕИГХТ)
селф.сцоре += 1

Са овим променама, ваша игра сада има више непријатеља који се појављују на насумичне позиције и крећу се надоле. Играч зарађује поен за сваког успешно избегнутог непријатеља, а игра се завршава ако се играч судари са било којим непријатељем.

Побољшајте ангажовање корисника са колизијама

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

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