Научите како да мерите време и користите га за контролу различитих аспеката ваше игре.

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

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

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

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

Затим дефинишите ГамеВиндов класе, која је поткласа арцаде. Прозор. Унутар класе ГамеВиндов дефинишите __у томе__ метод, који иницијализује прозор са наведеном ширином, висином и насловом.

Тхе он_кеи_пресс метод детектује притискање тастера са стрелицом лево или десно. Притиском на лево се смањује

плаиер_к за 10 јединица док притиснете десно повећава се за 10 јединица. Ово омогућава играчу да се креће хоризонтално унутар прозора игре.

Да бисте покренули игру, дефинишите главну функцију, креирајте инстанцу ГамеВиндов-а, позовите метод подешавања да бисте подесили прозор игре и на крају покрените петљу игре користећи арцаде.рун().

Дизајнирање структуре класе тајмера

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

увоз време

класаТајмер:
деф__у томе__(самостално, трајање):
селф.дуратион = трајање
селф.старт_тиме = 0
селф.ис_руннинг = Фалсе

дефпочетак(сам):
селф.старт_тиме = тиме.тиме()
селф.ис_руннинг = Истина

дефзауставити(сам):
селф.ис_руннинг = Фалсе

дефгет_елапсед_тиме(сам):
ако селф.ис_руннинг:
повратак тиме.тиме() - селф.старт_тиме
повратак0

дефис_екпиред(сам):
повратак селф.гет_елапсед_тиме() >= селф.дуратион

Час Тајмер траје а трајање параметар у секундама током иницијализације. Класа садржи атрибуте као што су Почетно време да меморишете време када је тајмер покренут, и трчи за праћење стања тајмера.

Тхе почетак() метода поставља старт_тиме на тренутно време користећи тиме.тиме() и поставља ис_руннинг на Истина. Тхе зауставити() метод једноставно поставља ис_руннинг на Фалсе. Тхе гет_елапсед_тиме() метода израчунава протекло време одузимањем старт_тиме од тренутног времена.

Ако тајмер ради, враћа протекло време; у супротном, враћа 0. Тхе ис_екпиред() метода проверава да ли је протекло време веће или једнако трајању, што указује да је тајмер истекао.

Примена тајмера за одбројавање

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

увоз време

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(ВИДТХ, ХЕИГХТ, "Једноставна игра")
селф.плаиер_к = ВИДТХ // 2
селф.плаиер_и = ВИСИНА // 2
селф.тимер = Тајмер(10)

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ПРОСТОР:
селф.тимер.старт()

дефон_драв(сам):
# Постојећи код
ако селф.тимер.ис_руннинг:
елапсед_тиме = селф.тимер.гет_елапсед_тиме()
р_тиме = селф.тимер.дуратион - протекло_време
преостало_време = мак (р_време, 0)
штампа (ф"Одбројавање: {Преостало време:.1ф} секунди")

Уверите се да можете видети прозор терминала и прозор игре у исто време. Затим притисните размак и видећете одбројавање тајмера:

Руковање догађајима тајмера и акције покретања

Такође можете покренути функцију која црта правоугаоник када тајмер за одбројавање истекне. Креирајте нову датотеку под називом хандле-евент.пи и додајте код са ажурирањима у наставку:

дефон_драв(сам):
# Постојећи код
ако селф.тимер.ис_екпиред():
селф.драв_рецтангле()

дефнацртати правоугаоник(сам):
арцаде.драв_рецтангле_филлед (ВИДТХ // 2, ВИСИНА // 2, 100, 100, црвена)

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

Паузирање, ресетовање и настављање тајмера

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

класаТајмер:
# Постојећи код

дефпауза(сам):
селф.дуратион -= селф.гет_елапсед_тиме()
селф.ис_руннинг = Фалсе

дефресетовати(сам):
селф.старт_тиме = 0
селф.ис_руннинг = Фалсе

дефРезиме(сам):
селф.старт_тиме = тиме.тиме()
селф.ис_руннинг = Истина

Додавање визуелних повратних информација у тајмер

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

дефон_драв(сам):
# Постојећи код
ако селф.тимер.ис_руннинг:
текст = ф"Одбројавање: {Преостало време:.1ф} секунди"
арцаде.драв_тект (текст, 10, 10, црн, 18)

Сада ћете видети тајмер директно у прозору игре уместо на конзоли:

Укључујући додатне функције

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

Појачања или бонуси засновани на времену

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

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

Временски ограничени изазови

Креирајте временски ограничене изазове у којима играчи морају да заврше задатак у одређеном временском оквиру. На пример, део загонетке или платформе који захтева решавање у датом времену.

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

Временске препреке или непријатељи

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

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

Најбоље праксе за догађаје засноване на времену

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

Тест и баланс

Темељно тестирајте своје догађаје засноване на времену како бисте били сигурни да су праведни и уравнотежени. Фино подесите трајање, тежину и награде да бисте створили пријатно искуство играња.

Повратне информације корисника

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

Конзистентно мерење времена

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

Руковати ивицама

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

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

Учините игре забавнијим уз догађаје засноване на времену

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

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