Сделайте свой игровой процесс более захватывающим, внедрив диалоговую систему.

Реализация диалоговой системы в Pygame может значительно улучшить интерактивность игры. Система диалогов позволяет игре представлять игроку разговоры, сообщения и варианты выбора, создавая более захватывающий и увлекательный игровой процесс.

Библиотека Pygame предоставляет необходимые инструменты для создания графического пользовательского интерфейса (GUI) и обработки пользовательского ввода, что делает ее идеальным выбором для реализации диалоговой системы.

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

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

pip установить pygame

После этого начните с создания простой игры, в которой игрок может двигаться влево и вправо, избегая врагов.

Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

Фрагмент кода ниже настраивает окно игры, инициализирует свойства игрока и врага и запускает игровой цикл.

instagram viewer
# Импортировать необходимые библиотеки
Импортировать пигейм
от pygame.locals Импортировать *

pygame.init()

# Настраиваем окно игры
ширина_экрана, высота_экрана = 800, 600
экран = pygame.display.set_mode((ширина_экрана, высота_экрана))
pygame.display.set_caption("Моя игра")

# Определяем цвета
ЧЕРНЫЙ = (0, 0, 0)
БЕЛЫЙ = (255, 255, 255)
СЕРЫЙ = (128, 128, 128)

# Свойства игрока
игрок_х = 400
игрок_у = 500
player_speed = 5

# Свойства врага
враг_х = 400
враг_у = 100
вражеская_скорость = 3

работает = Истинный
часы = pygame.time. Часы()

пока бег:
для событие в pygame.event.get():
если event.type == ВЫЙТИ:
работает = ЛОЖЬ

ключи = pygame.key.get_pressed()

# Движение игрока
если ключи[K_LEFT] и игрок_х > 0:
player_x -= скорость_игрока
если ключи[K_RIGHT] и player_x < screen_width - player_speed:
player_x += player_speed

# Обновить позицию врага
вражеский_y += вражеская_скорость
если вражеский_y > screen_height:
враг_у = -50

# Проверить коллизию
если игра. Прямоугольник (player_x, player_y, 50, 50).colliderect (pygame. Прямоугольник (враг_х, враг_у, 50, 50)):
# Реализовать здесь диалоговое окно
проходить

screen.fill (ЧЕРНЫЙ)
pygame.draw.rect (экран, БЕЛЫЙ, (player_x, player_y, 50, 50))
pygame.draw.rect (экран, БЕЛЫЙ, (enemy_x, вражеский_y, 50, 50))
pygame.display.flip()
часы.тик(60)

pygame.выйти()

Ниже приведен вывод:

Создать диалоговое окно

Чтобы реализовать диалоговое окно, вам нужно отображать его всякий раз, когда игрок касается врага. Добавить диалог_окно переменная, которая определяет, должно ли отображаться диалоговое окно или нет.

Внутри игрового цикла, проверка на столкновение между игроком и противником, и если есть коллизия, установить диалог_окно к Истинный. В условиях, когда диалог_окно является Истинный, нарисуйте серый прямоугольник на экране с помощью pygame.draw.rect() представлять диалоговое окно.

Создайте новый файл с именем диалог.py и добавьте код со следующими обновлениями:

# Свойства диалогового окна
ширина_диалога_окна = 400
dialog_box_height = 200
dialog_box_x = (ширина_экрана - ширина_диалога_окна) // 2
dialog_box_y = (экран_высота - высота_диалога_бокса) // 2
диалог_окно = ЛОЖЬ
# ...
пока бег:
для событие в pygame.event.get():
если event.type == ВЫЙТИ:
работает = ЛОЖЬ
ключи = pygame.key.get_pressed()
# Движение игрока
если ключи[K_LEFT] и игрок_х > 0:
player_x -= скорость_игрока
если ключи[K_RIGHT] и player_x < screen_width - player_speed:
player_x += player_speed
# Обновить позицию врага
вражеский_y += вражеская_скорость
если вражеский_y > screen_height:
враг_у = -50
# Проверить коллизию
если игра. Прямоугольник (player_x, player_y, 50, 50).colliderect (pygame. Прямоугольник (враг_х, враг_у, 50, 50)):
диалог_окно = Истинный
screen.fill (ЧЕРНЫЙ)
если диалог_окно:
pygame.draw.rect (экран, СЕРЫЙ, (dialogue_box_x,
диалог_окно_у,
ширина диалогового_окна,
высота_диалога_окна))

# Добавляем текст диалога и кнопки сюда
еще:
pygame.draw.rect (экран, БЕЛЫЙ, (player_x, player_y, 50, 50))
pygame.draw.rect (экран, БЕЛЫЙ, (enemy_x, вражеский_y, 50, 50))
pygame.display.flip()
часы.тик(60)
pygame.выйти()

Ниже приведен вывод:

Теперь, чтобы сделать диалоговое окно более функциональным и интерактивным, можно перейти к добавлению кнопок и текста.

Добавить кнопки с помощью графического интерфейса Python

Чтобы добавить кнопки в диалоговое окно, вы можете использовать библиотеку графического интерфейса Python, например Pygame GUI или PySimpleGUI.

Установите и импортируйте pygame_gui модуль, затем создайте менеджер графического интерфейса Pygame, используя pygame_gui. UIManager. После этого создайте кнопку с помощью UIButton класс, предоставляемый библиотекой графического интерфейса Python.

Внутри игрового цикла добавьте manager.update(pygame.time.get_ticks()/1000.0) для обновления диспетчера графического интерфейса и manager.draw_ui (экран) для рисования элементов GUI на экране.

Создайте новый файл с именем кнопки.py и добавьте код со следующими обновлениями:


Импортировать pygame_gui

# Менеджер графического интерфейса Pygame
менеджер = pygame_gui. UIManager((ширина_экрана, высота_экрана))

# Создаем кнопку
ширина_кнопки = 100
кнопка_высота = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - высота_кнопки) // 2
кнопка = pygame_gui.elements. UIButton (relative_rect=pygame. Прямоугольник (button_x, button_y, button_width, button_height),
текст='Нажми на меня',
менеджер = менеджер)

работает = Истинный
часы = pygame.time. Часы()

пока бег:
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
работает = ЛОЖЬ

manager.process_events (событие)

ключи = pygame.key.get_pressed()

# Проверить коллизию
если игра. Прямоугольник (player_x, player_y, 50, 50).colliderect (pygame. Прямоугольник (враг_х, враг_у, 50, 50)):
диалог_окно = Истинный

screen.fill (ЧЕРНЫЙ)

если диалог_окно:
pygame.draw.rect (экран, СЕРЫЙ, (dialogue_box_x,
диалог_окно_у,
ширина диалогового_окна,
высота_диалога_окна))
manager.update(pygame.time.get_ticks()/ 1000.0)
manager.draw_ui (экран)
еще:
pygame.draw.rect (экран, БЕЛЫЙ, (player_x, player_y, 50, 50))
pygame.draw.rect (экран, БЕЛЫЙ, (enemy_x, вражеский_y, 50, 50))

pygame.display.flip()
часы.тик(60)

pygame.выйти()

Ниже приведен вывод:

С этими изменениями кнопка теперь должна быть видна внутри диалогового окна, когда оно появляется.

Добавить текст с помощью графического интерфейса Python

Чтобы отобразить пользовательский текст в диалоговом окне, вы можете использовать текстовые функции, предоставляемые библиотекой графического интерфейса Python.

Определите свойства шрифта, используя pygame.font. Шрифт(). Создать текст переменную с желаемым содержимым, а затем визуализировать ее с использованием указанного шрифта и цвета.

Создайте новый файл с именем текст.py и добавьте код со следующими обновлениями:


# Инициализировать менеджер графического интерфейса Pygame
менеджер = pygame_gui. UIManager((ширина_экрана, высота_экрана))

# Определяем свойства шрифта
шрифт = pygame.font. Шрифт(Никто, 24)
text_color = ЧЕРНЫЙ

# ...

пока бег:
# ...

если диалог_окно:
pygame.draw.rect (экран, СЕРЫЙ, (dialogue_box_x,
диалог_окно_у,
ширина диалогового_окна,
высота_диалога_окна))

# Добавляем текст в диалоговое окно
текст = "Здравствуйте, добро пожаловать в игру!"
rendered_text = font.render (текст, Истинный, цвет текста)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width// 2,
dialog_box_y + dialog_box_height // 2))

screen.blit(rendered_text, text_rect)

Ниже приведен вывод:

Включая дополнительные функции

В дополнение к кнопкам и тексту есть несколько других функций, которые вы можете добавить в свою диалоговую систему в Pygame. Вот еще несколько примеров:

Эмоции персонажей

Отображайте эмоции или выражение лица персонажей во время диалога, чтобы передать их настроение или реакцию. Этого можно добиться, используя анимированные спрайты или наложения изображений, которые меняются в зависимости от контекста разговора.

Условные диалоги

Используйте условные операторы, чтобы вызывать определенные диалоги на основе определенных критериев, таких как прогресс игрока, предыдущие выборы или внутриигровые события. Это добавляет глубину и персонализированное взаимодействие, основанное на действиях игрока.

Озвучка

Улучшите эффект погружения в диалоговую систему, включив озвучку диалогов персонажей. Воспроизведение аудиоклипов в Pygame которые соответствуют тексту, отображаемому в диалоговом окне, чтобы дать персонажам отчетливый голос.

Включив эти дополнительные функции, вы можете создать более динамичную и увлекательную диалоговую систему, которая усиливает погружение игрока и обеспечивает уникальный игровой процесс.

Лучшие практики добавления диалоговой системы

При реализации диалоговой системы в Pygame важно следовать определенным рекомендациям, чтобы обеспечить эффективность, удобство сопровождения и удобство для игроков. Вот некоторые дополнительные рекомендации, которые следует учитывать:

Используйте дизайн, управляемый данными

Храните содержимое диалога, включая текст, информацию о докладчике и параметры диалога, во внешних файлах данных (например, JSON, XML). Это позволяет легко модифицировать, локализовать и управлять содержимым диалога, не требуя изменения кода.

Реализовать диалоговый менеджер

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

Тестирование и балансировка

Регулярно тестируйте и балансируйте диалоговую систему, чтобы убедиться, что диалоги протекают естественно, выбор имеет значимые последствия, а темп соответствует общему игровому процессу. Собирайте отзывы игроков и меняйте содержание и структуру диалогов, чтобы повысить вовлеченность игроков.

Поддержка локализации

С самого начала проектируйте диалоговую систему с учетом локализации. Отделяйте текстовые строки от кода и используйте языковые файлы или библиотеки локализации для поддержки нескольких языков. Это позволяет упростить перевод и локализацию содержания диалога.

Следуя этим передовым методам, вы можете убедиться, что ваша диалоговая система хорошо спроектирована, эффективна и гибка, что упрощает обслуживание и обновление по мере развития вашей игры.

Сделайте игры более увлекательными с помощью диалоговой системы

Добавление диалоговой системы в вашу игру может сделать ее более увлекательной, позволяя игрокам взаимодействовать с неигровыми персонажами (NPC), раскрывать сюжетные линии, делать выбор и получать ценную информацию.

Не забудьте тщательно продумать структуру диалогов, использовать модульный подход и рассмотреть возможность интеграции предметов коллекционирования и уровней, чтобы еще больше обогатить игровой опыт.