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

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

В Python библиотеката Arcade предлага лесен и ефективен начин за управление на резултати в игри. Чрез ефективно управление на резултатите можете да подобрите ангажираността на потребителите и да осигурите по-завладяващо игрово изживяване.

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

Преди да започнете, уверете се, че имате pip, инсталиран на вашето устройство. Използвайте тази команда, за да инсталирате аркадната библиотека:

pip инсталирайте аркада

Сега създайте проста игра, като използвате библиотеката Arcade на Python.

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

В тази игра играчът може да се движи наляво и надясно с помощта на клавишите със стрелки, докато препятствието е поставено на същата y-ос.

instagram viewer
импортиране аркада

# Настройте размерите на прозореца
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 3
self.score = 0

дефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАЛЯВО:
self.player_x -= 10
елиф ключ == arcade.key. ДЯСНО:
self.player_x += 10

дефактуализация(самостоятелно, делта_време):
# Актуализирайте логиката на играта тук
пас

дефon_draw(себе си):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arcade.color. СИН)
arcade.draw_rectangle_filled(400, 50, 100, 50, arcade.color. ЧЕРВЕН)

дефосновен():
игра = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

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

Проследяване и изчисляване на резултата

За да проследите резултата във вашата игра, можете да създадете механизъм за увеличаване на резултата, когато е изпълнено определено условие. Например, резултатът се увеличава всеки път, когато ходове на играча във вашата игра и успешно докосва препятствието. Можете да промените актуализация метод за включване на логиката за изчисляване на резултата:

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 3
self.score = 0

дефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАЛЯВО:
self.player_x -= 10
елиф ключ == arcade.key. ДЯСНО:
self.player_x += 10

дефактуализация(самостоятелно, делта_време):
ако self.player_x > 330и self.player_x < 470:
самостоятелен резултат += 1

Показване на резултата

За да покажете резултата на играча, променете on_draw метод за включване на изобразяване на текст:

класMyGame(аркадна. прозорец):
# ...

дефon_draw(себе си):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arcade.color. СИН)
arcade.draw_rectangle_filled(400, 300, 100, 50, arcade.color. ЧЕРВЕН)

резултат_текст = f"Резултат: {self.score}"
arcade.draw_text (score_text, 10, 10, arcade.color. БЯЛО, 14)

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

Съхраняване на високия резултат

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

Използвай натоварване_висок_резултат метод за четене на високия резултат от файл, наречен high_score.txt и го върнете. След това можете да запишете новия висок резултат във файла, като използвате save_high_score метод.

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 3
self.score = 0
self.high_score = self.load_high_score()

дефнатоварване_висок_резултат(себе си):
опитвам:
с отворен("high_score.txt", "р") като файл:
връщане int (file.read())
с изключение FileNotFoundError:
връщане0

дефsave_high_score(себе си):
с отворен("high_score.txt", "w") като файл:
file.write (str (self.high_score))

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

ако self.score > self.high_score:
self.high_score = self.score
self.save_high_score()

Показване на висок резултат

Подобно на показването на текущия резултат, можете да добавите изобразяване на текст, за да покажете високия резултат:

класMyGame(аркадна. прозорец):
# ...

дефon_draw(себе си):
# ...

high_score_text = f"Висок резултат: {self.high_score}"
arcade.draw_text (high_score_text, 10, 30, arcade.color. БЯЛО, 14)

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

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

Управлението на резултати в игрите често включва включване на допълнителни функции, за да направи играта по-ангажираща и динамична. Нека разгледаме някои примери за това как можете да въведете допълнителни функции заедно с управлението на резултата във вашата игра.

Усилвания

Усилванията са специални елементи, които предоставят на играчите временни предимства или бонус точки. Създайте активиране_захранване метод, който задейства активирането на захранването, настройка на power_up_active флаг на True.

Можете да планирате деактивиране_захранване метод за стартиране след определена продължителност (напр. 10 секунди) с помощта на аркада.разписание функция. По време на активния период на захранването можете да използвате apply_power_up_effects метод за прилагане на специфични подобрения на играта.

Ето пример за внедряване на функция за включване във вашата игра.

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 3
self.score = 0
self.power_up_active = Невярно

дефактуализация(самостоятелно, делта_време):
ако self.power_up_active:
# Приложете ефекти за включване на захранването по време на игра
self.apply_power_up_effects()
самостоятелен резултат += 10

дефapply_power_up_effects(себе си):
# Добавете специфична логика за включване тук
пас

дефактивиране_захранване(себе си):
self.power_up_active = Вярно
# Задайте таймер или продължителност за ефекта на включване
arcade.schedule (self.deactivate_power_up, 10.0)

дефдеактивиране_захранване(самостоятелно, делта_време):
self.power_up_active = Невярно

Комбинирана система

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

Можете да се обадите на reset_combo_counter метод и нулиране на комбинирания брояч обратно на нула, когато възникне неуспешно действие. Ето една проста реализация на комбинирана система:

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 3
self.score = 0
self.combo_counter = 0

дефактуализация(самостоятелно, делта_време):
# Проверка за успешни действия
ако self.check_successful_action():
self.increase_combo_counter()
друго:
self.reset_combo_counter()

дефувеличи_комбо_брояч(себе си):
self.combo_counter += 1
self.score += self.combo_counter

дефreset_combo_counter(себе си):
self.combo_counter = 0

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

Най-добри практики за управление на резултати

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

Смислени механизми за оценяване

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

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

Визуална обратна връзка

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

Звукови ефекти и анимации

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

Балансиране на трудност и скалиране на резултата

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

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

Подобрете ангажираността на играта с проследяване на резултати

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

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