Научитесь легко создавать игровые меню и проектировать пользовательские интерфейсы с помощью инструментов графического интерфейса Arcade.
Игровые меню и пользовательские интерфейсы (UI) играют решающую роль в улучшении пользовательского опыта и вовлеченности в игру. Arcade, популярная библиотека Python для разработки игр, предоставляет мощные инструменты GUI (графического пользовательского интерфейса), упрощающие разработку и реализацию игровых меню и элементов пользовательского интерфейса.
Создайте простую игру
Прежде чем начать, убедитесь, что у вас есть pip установлен на вашем устройстве. Используйте эту команду для установки аркадной библиотеки:
пип установить аркада
Начните с создания простой игры с помощью Arcade.
Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.
В этой игре будет объект игрока, который может двигаться влево и вправо, и объект противника. Вот код игры:
Импортировать аркада
ШИРИНА = 800
ВЫСОТА = 600
PLAYER_SPEED = 25сортИгра(аркада. Окно):
деф__в этом__(себя):
super().__init__(ШИРИНА, ВЫСОТА, «Простая игра»)
self.player_x = ШИРИНА // 2
self.enemy_x = ШИРИНА - 50
self.game_over = ЛОЖЬдефнастраивать(себя):
arcade.set_background_color (arcade.color. БЕЛЫЙ)дефon_draw(себя):
аркада.start_render()
arcade.draw_circle_filled (self.player_x, ВЫСОТА // 2, 20, аркада.цвет. СИНИЙ)
arcade.draw_circle_filled (self.enemy_x, ВЫСОТА // 2, 20, аркада.цвет. КРАСНЫЙ)дефобновлять(я, дельта_время):
self.enemy_x += 0.5
если self.enemy_x >= ШИРИНА:
self.game_over = Истинныйдефon_key_press(я, ключ, модификаторы):
если ключ == аркада.ключ. ЛЕВЫЙ:
self.player_x -= PLAYER_SPEED
Элиф ключ == аркада.ключ. ВЕРНО:
self.player_x += PLAYER_SPEED
игра = игра()
игра.настройка()
аркада.run()
Добавление экрана окончания игры
Добавьте экран завершения игры, который отображает сообщение, когда враг перемещается за пределы игрового окна. Использовать аркада.графический интерфейс. UIManager и аркада.графический интерфейс. UIMessageBox классы для достижения этого.
Создайте экземпляр UIManager и включите его. Внутри on_draw метод, проверьте, игра закончена флаг установлен, и если это так, нарисуйте диспетчер пользовательского интерфейса. show_game_over_screen метод создает UIMessageBox с сообщением об окончании игры и добавляет его в диспетчер пользовательского интерфейса. Вы также можете включать и отключать диспетчер пользовательского интерфейса в обновлять метод, основанный на состоянии игры.
Создайте новый файл с именем игра окончена.py и добавьте код со следующими обновлениями:
Импортировать аркада
от аркада.интерфейс Импортировать UIManager, UIMessageBoxШИРИНА = 800
ВЫСОТА = 600
PLAYER_SPEED = 25сортИгра(аркада. Окно):
деф__в этом__(себя):
super().__init__(ШИРИНА, ВЫСОТА, «Простая игра»)
self.player_x = ШИРИНА // 2
self.enemy_x = ШИРИНА - 50
self.ui_manager = UIManager()
self.game_over = ЛОЖЬдефнастраивать(себя):
arcade.set_background_color (arcade.color. БЕЛЫЙ)
self.ui_manager.enable() # Включить менеджер пользовательского интерфейсадефon_draw(себя):
аркада.start_render()
arcade.draw_circle_filled (self.player_x, ВЫСОТА // 2, 20, аркада.цвет. СИНИЙ)
arcade.draw_circle_filled (self.enemy_x, ВЫСОТА // 2, 20, аркада.цвет. КРАСНЫЙ)
если self.game_over:
self.ui_manager.draw()дефобновлять(я, дельта_время):
self.enemy_x += 0.5
если self.enemy_x >= ШИРИНА:
self.show_game_over_screen()
self.game_over = Истинный
если self.game_over:
self.ui_manager.enable()
еще:
self.ui_manager.disable()дефon_key_press(я, ключ, модификаторы):
если ключ == аркада.ключ. ЛЕВЫЙ:
self.player_x -= PLAYER_SPEED
Элиф ключ == аркада.ключ. ВЕРНО:
self.player_x += PLAYER_SPEEDдефshow_game_over_screen(себя):
message_box = UIMessageBox(
ширина =400,
высота=200,
сообщение_текст="Игра закончена!"
)
self.ui_manager.add (сообщение_окно)
игра = игра()
игра.настройка()
аркада.run()
Ниже приведен вывод:
Добавление кнопок
Теперь улучшите экран завершения игры, добавив кнопки для перезапуска игры или выхода. Вы можете выполнить это с помощью кнопки параметр UIMessageBox и предоставление функции обратного вызова для обработки нажатий кнопок.
Создайте новый файл с именем кнопки.py и добавьте код со следующими обновлениями:
дефshow_game_over_screen(себя):
message_box = UIMessageBox(
ширина =400,
высота=200,
сообщение_текст="Игра закончена!",
кнопки=("Перезапуск", "Выход"),
обратный вызов = self.on_game_over_button_click
)
self.ui_manager.add (сообщение_окно)дефon_game_over_button_click(я, текст_кнопки):
если кнопка_текст == "Перезапуск":
self.restart_game()
Элиф кнопка_текст == "Выход":
аркада.close_window()
дефперезагрузка_игры(себя):
self.game_over = ЛОЖЬ
self.enemy_x = ШИРИНА - 50
self.ui_manager.clear()
Ниже приведен вывод:
в show_game_over_screen метод, добавьте две кнопки, Перезапуск и Выход, к UIMessageBox указав их в кнопки параметр. Также предоставьте функцию обратного вызова, on_game_over_button_click, чтобы обрабатывать нажатия кнопок. Внутри функции обратного вызова проверьте, какая кнопка была нажата, и выполните соответствующее действие.
Инструменты графического интерфейса Arcade предлагают множество дополнительных функций, которые могут еще больше повысить функциональность и интерактивность ваших игровых меню и дизайнов пользовательского интерфейса. Вот несколько примеров:
UIDraggableMixin
UIDraggableMixin можно использовать, чтобы сделать любой виджет пользовательского интерфейса перетаскиваемым. Он предоставляет функциональные возможности для обработки поведения перетаскивания, позволяя пользователям перемещать элементы пользовательского интерфейса по экрану. Комбинируя этот миксин с другими виджетами пользовательского интерфейса, вы можете создавать перетаскиваемые окна или панели в своей игре.
UIMouseFilterMixin
UIMouseFilterMixin class позволяет вам перехватывать все события мыши, которые происходят внутри определенного виджета. Это особенно полезно для оконных виджетов, где вы хотите, чтобы события мыши не влияли на базовые элементы пользовательского интерфейса. Фильтруя события мыши, вы можете независимо контролировать взаимодействие внутри виджета.
UIWindowLikeMixin
UIWindowLikeMixin Класс обеспечивает оконное поведение виджета. Он обрабатывает все события мыши, происходящие в границах виджета, и позволяет перетаскивать виджет. Это идеально подходит для создания перетаскиваемых окон или панелей, с которыми пользователи могут взаимодействовать в вашей игре.
Поверхность
Поверхность класс представляет собой буфер для рисования элементов пользовательского интерфейса. Он абстрагирует отрисовку буфера и предоставляет методы для активации, очистки и отрисовки буфера на экране. Вы можете использовать этот класс для внутреннего рендеринга виджетов или пользовательских элементов пользовательского интерфейса в вашей игре.
Эти дополнительные функции открывают возможности для создания более интерактивного и динамичного взаимодействия с пользователем в ваших играх. Поэкспериментируйте с этими функциями, чтобы добавить уникальные функции и выделить игровые меню и дизайн пользовательского интерфейса.
Лучшие практики для включения графического интерфейса
При включении инструментов с графическим интерфейсом в ваши игры с помощью Arcade важно следовать некоторым передовым методам, чтобы обеспечить плавный и беспроблемный пользовательский интерфейс. Вот несколько советов, о которых следует помнить:
План и прототип
Прежде чем погрузиться в реализацию, потратьте время на планирование и прототипирование игровых меню и элементов пользовательского интерфейса. Подумайте о макете, функциональности и визуальной эстетике, чтобы обеспечить последовательный и удобный дизайн.
Держите это последовательным
Сохраняйте единый визуальный стиль и компоновку игровых меню и элементов пользовательского интерфейса. Это помогает пользователям легче ориентироваться в вашей игре и обеспечивает целостный опыт.
Отзывчивый дизайн
Создавайте элементы пользовательского интерфейса так, чтобы они реагировали и адаптировались к разным размерам и разрешениям экрана. Это гарантирует, что ваши игровые меню и пользовательский интерфейс останутся удобными и визуально привлекательными на различных устройствах.
Эффективная обработка событий
Эффективно обрабатывайте события пользовательского ввода, чтобы обеспечить быстрое и плавное взаимодействие. Избегайте ненужных вычислений или обработки событий, которые могут привести к отставанию или задержке отклика пользовательского интерфейса.
Отзывы пользователей
Обеспечьте четкую и немедленную обратную связь с пользователями, когда они взаимодействуют с вашими игровыми меню и элементами пользовательского интерфейса. Визуальные подсказки, анимация и звуковая обратная связь в играх может улучшить пользовательский опыт и сделать игру более отточенной.
Следуя этим рекомендациям, вы сможете создавать интуитивно понятные и визуально привлекательные игровые меню и дизайн пользовательского интерфейса.
Увеличьте вовлеченность пользователей с помощью визуально привлекательного пользовательского интерфейса
Добавление элементов графического интерфейса в вашу игру не только повышает удобство использования, но и повышает визуальную привлекательность и общее вовлечение игроков. Независимо от того, создаете ли вы меню «Пуск», экран «Игра поверх экрана» или любой другой элемент пользовательского интерфейса, инструменты графического интерфейса Arcade предлагают ряд функций и возможностей для улучшения пользовательского опыта вашей игры.