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

При разработването на игри добавянето на базирани на времето събития може значително да подобри механиката на играта и да направи игрите по-ангажиращи за играчите. Чрез включване на таймери можете да въведете предизвикателства, да създадете ограничени във времето цели или да добавите усещане за неотложност към определени елементи на играта.

Създайте проста игра

Започнете, като създадете проста игра, за да разберете основите. Създайте игра, в която играчът може да се движи наляво и надясно и ще има една единствена платформа. Създайте нов файл с име проста-игра.py и импортирайте аркадния модул, който предоставя необходимите функционалности за създаване на играта.

Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.

След това дефинирайте GameWindow клас, който е подклас на аркада. прозорец. Вътре в класа GameWindow дефинирайте __в него__ метод, който инициализира прозореца със зададената ширина, височина и заглавие.

instagram viewer

The on_key_press методът открива натискания на клавиши със стрелка наляво или надясно. Натискането наляво намалява player_x с 10 единици, докато натискането надясно го увеличава с 10 единици. Това позволява на играча да се движи хоризонтално в прозореца на играта.

За да стартирате играта, дефинирайте основната функция, създайте екземпляр на GameWindow, извикайте метода за настройка, за да настроите прозореца на играта и накрая стартирайте цикъла на играта, като използвате arcade.run().

Проектиране на структурата на класа на таймера

За да внедрите таймери във вашата игра, можете да създадете клас Timer с необходимите атрибути и методи. Този клас ще предостави функционалности за стартиране на таймера, спирането му, извличане на изминалото време и проверка дали таймерът е изтекъл. Ето основната структура на класа Timer:

импортиране време

класТаймер:
деф__в него__(самостоятелно, продължителност):
self.duration = продължителност
self.start_time = 0
self.is_running = Невярно

дефзапочнете(себе си):
self.start_time = time.time()
self.is_running = Вярно

дефСпри се(себе си):
self.is_running = Невярно

дефget_izминало_време(себе си):
ако self.is_running:
връщане time.time() - self.start_time
връщане0

дефе_изтекъл(себе си):
връщане self.get_elapsed_time() >= self.duration

Класът Timer отнема a продължителност параметър в секунди по време на инициализацията. Класът съдържа атрибути като начален час за да запаметите времето, когато таймерът е стартиран, и бяга за проследяване на състоянието на таймера.

The начало() метод задава start_time на текущото време, използвайки време.време() и задава is_running на Вярно. The Спри се() методът просто задава is_running на Невярно. The get_elapsed_time() метод изчислява изминалото време чрез изваждане на start_time от текущото време.

Ако таймерът работи, той връща изминалото време; в противен случай връща 0. The is_expired() методът проверява дали изминалото време е по-голямо или равно на продължителността, което показва, че таймерът е изтекъл.

Внедряване на таймери за обратно броене

За да демонстрирате обратно броене във вашата игра, можете да стартирате таймера, когато играчът натисне определен клавиш, като например клавиша за интервал. Отпечатайте обратното броене в конзолата, като използвате командата за печат на Python. Създайте нов файл с име timer.py и добавете кода с тези актуализации:

импортиране време

класGameWindow(аркадна. прозорец):
деф__в него__(себе си):
super().__init__(WIDTH, HEIGHT, "Проста игра")
self.player_x = WIDTH // 2
self.player_y = ВИСОЧИНА // 2
self.timer = Таймер(10)

дефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. ПРОСТРАНСТВО:
self.timer.start()

дефon_draw(себе си):
# Съществуващ код
ако self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - изминало_време
оставащо_време = макс. (r_време, 0)
печат (f"Отброяване: {оставащо време:.1е} секунди")

Уверете се, че можете да видите прозореца на терминала и прозореца на играта едновременно. След това натиснете интервал и ще видите отброяването на таймера:

Обработка на събития на таймера и задействащи действия

Можете също така да задействате функция, която рисува правоъгълник когато таймерът за обратно отброяване изтече. Създайте нов файл с име handle-event.py и добавете кода със следните актуализации:

дефon_draw(себе си):
# Съществуващ код
ако self.timer.is_expired():
self.draw_rectangle()

дефчертеж_правоъгълник(себе си):
arcade.draw_rectangle_filled (ШИРИНА // 2, ВИСОЧИНА // 2, 100, 100, червен)

По-долу е резултатът:

Пауза, нулиране и възобновяване на таймера

За да добавите функционалност за пауза, нулиране и възобновяване на таймера, можете да разширите Таймер клас с подходящи методи. Ето един пример:

класТаймер:
# Съществуващ код

дефпауза(себе си):
self.duration -= self.get_elapsed_time()
self.is_running = Невярно

дефнулиране(себе си):
self.start_time = 0
self.is_running = Невярно

дефпродължи(себе си):
self.start_time = time.time()
self.is_running = Вярно

Добавяне на визуална обратна връзка към таймера

За да осигурите визуална обратна връзка за таймера, можете да включите текст или графични елементи на екрана на играта. Създайте нов файл с име visual.py и добавете кода със следните актуализации:

дефon_draw(себе си):
# Съществуващ код
ако self.timer.is_running:
текст = f"Отброяване: {оставащо време:.1е} секунди"
arcade.draw_text (текст, 10, 10, черно, 18)

Вече ще виждате таймера директно в прозореца на играта вместо в конзолата:

Включително допълнителни функции

За да подобрите допълнително базираните на времето събития, можете да обмислите внедряването на следните допълнителни функции във вашите игри.

Увеличения или бонуси, базирани на времето

Въведете бонуси или бонуси, които се появяват периодично по време на играта. Тези бонуси могат да предоставят временни способности, допълнителни точки, увеличена скорост или подобрени оръжия.

Като ги правят ограничени във времето, играчите трябва стратегически да ги събират в рамките на определен период от време, за да получат предимство. Това добавя вълнение и възнаграждава бързото мислене.

Ограничени във времето предизвикателства

Създавайте ограничени във времето предизвикателства, при които играчите трябва да изпълнят задача в рамките на определен период от време. Например пъзел или раздел за платформинг, който изисква решаване в рамките на определено време.

Това предизвиква играчите да мислят и действат бързо, добавяйки вълнуващо усещане за неотложност към играта. Успешното завършване на тези предизвикателства може да отключи награди или да напредне в историята.

Времеви препятствия или врагове

Внедрете определени във времето препятствия или врагове, които представляват заплаха за играча. Например движещи се платформи, които се появяват и изчезват на редовни интервали, или врагове, които стават непобедими за ограничен период от време.

Играчите трябва да определят правилно времето за своите действия и движения, за да се придвижват през тези препятствия или да победят врагове, преди времето да изтече. Това добавя ниво на стратегия и координация към играта.

Най-добри практики за събития, базирани на времето

Когато внедрявате базирани на времето събития във вашите игри, важно е да следвате тези най-добри практики.

Тест и баланс

Тествайте внимателно своите базирани на време събития, за да сте сигурни, че са справедливи и балансирани. Настройте фино продължителността, трудността и наградите, за да създадете приятни геймплей изживявания.

Потребителски отзиви

Осигурете ясна и интуитивна обратна връзка на играчите относно статуса на таймера и всякакви събития, базирани на времето. Добавяне на звукови ефекти, визуални индикатори или текстови знаци могат да помогнат на играчите да разберат времевите ограничения и последствията от техните действия.

Последователно измерване на времето

Използвайте последователна система за измерване на времето през цялата си игра. Например, използвайте секунди като единица за всички таймери и изчисления, свързани с времето. Това гарантира последователност и лекота на разбиране както за играчите, така и за разработчиците.

Handle Edge Cases

Обмислете сценарии, при които играта може да бъде поставена на пауза, минимизирана или да работи във фонов режим. Справяйте се с тези ситуации елегантно, за да поддържате точно време и да предотвратите нежелано поведение, когато играта се възобнови.

Като следвате тези най-добри практики, можете да създавате базирани на времето събития, които подобряват играта, предизвикват играчите и осигуряват балансирано и приятно изживяване.

Направете игрите по-забавни със събития, базирани на времето

Като включите базирани на времето събития във вашите игри, можете да създадете динамично и ангажиращо изживяване за играчите. Ограничените във времето предизвикателства добавят вълнение и неотложност, докато усилванията или препятствията във времето могат да създадат възможности за вземане на стратегически решения.

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