Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

PyGame — это популярная библиотека для создания проектов с помощью Python, которая предоставляет мощный набор инструментов для разработки игр. В этой статье вы узнаете, как создать меню «Пуск» и экран окончания игры для простой игры с помощью PyGame.

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

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

Для начала вам необходимо импортировать необходимые модули. Вы будете использовать пигейм модуль для доступа к функциям PyGame. Для установки модуля вы можете используйте менеджер пакетов pip:

точка установить пигейм

Теперь, когда наш модуль готов к использованию, давайте создадим простую игру с игроком, который может двигаться влево или вправо, используя клавиши со стрелками и препятствие. Если вы столкнетесь с препятствием, игра закончится. Вот код для того же:

instagram viewer

Импортировать пигейм
пигейм.в этом()

ширина_экрана = 750
высота_экрана = 450
экран = pygame.display.set_mode((ширина_экрана, высота_экрана))

препятствие_x = 400
препятствие_у = 400
ширина_препятствия = 40
высота_препятствия = 40
игрок_х = 200
игрок_у = 400
игрок_ширина = 20
player_height = 20

покаИстинный:

длясобытиевпигейм.событие.получать():

если event.type == pygame. ПОКИДАТЬ:
пигейм.покидать()
покидать()


ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_LEFT]:
игрок_х -= 5
еслиключи[пигейм. K_RIGHT]:
игрок_х += 5


если player_x + player_width > препятствие_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + player_height > препятствие_y и игрок_y < препятствие_y + высота_препятствия:
игра_овер = Истинный


экран.наполнять((0, 0, 0))
пигейм.рисовать.прямо(экран, (255, 0, 0), (препятствие_x, препятствие_y, препятствие_ширина, препятствие_высота))
пигейм.рисовать.прямо(экран, (0, 255, 0), (player_x, player_y, player_width, player_height))
пигейм.отображать.обновлять()

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

Создание меню «Пуск»

Теперь, когда у вас есть базовая игра, давайте создадим стартовое меню. Для этого вам нужно будет объявить глобальную переменную для состояния игры. Эта переменная будет отслеживать текущее состояние игры, например, активно ли меню «Пуск» или запущена игра. Вам нужно добавить эту переменную в начало кода вашей игры:

игра_состояние = "стартовое меню"

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

дефdraw_start_menu():
экран.наполнять((0, 0, 0))
шрифт = pygame.font. SysFont('ариал', 40)
название = шрифт.рендер('Моя игра', Истинный, (255, 255, 255))
start_button = шрифт.рендер('Начинать', Истинный, (255, 255, 255))
screen.blit (заголовок, (ширина_экрана/2 - title.get_width()/2, высота_экрана/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
пигейм.отображать.обновлять()

Затем вы можете добавить draw_start_menu() функции основного игрового цикла.

покаИстинный: 

длясобытиевпигейм.событие.получать():
если event.type == pygame. ПОКИДАТЬ:
пигейм.покидать()
покидать()

если game_state == "стартовое меню":
draw_start_menu()

если game_state == "игра":
ключи = pygame.key.get_pressed()
# остальная часть кода

Теперь меню «Пуск» будет отображено на экране. Последним шагом является обработка пользовательского ввода. Ты можешь добавить оператор if в основной цикл игры, чтобы проверить, нажал ли пользователь кнопку запуска.

если game_state == "стартовое меню":
ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_SPACE]:
игрок_х = 200
игрок_у = 400
игра_состояние = "игра"
игра_овер = ЛОЖЬ

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

Реализация экрана Game Over

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

дефdraw_game_over_screen():
экран.наполнять((0, 0, 0))
шрифт = pygame.font. SysFont('ариал', 40)
название = шрифт.рендер('Игра закончена', Истинный, (255, 255, 255))
перезагрузка_кнопка = шрифт.рендер('R - Перезагрузить', Истинный, (255, 255, 255))
quit_button = font.render('В - Выйти', Истинный, (255, 255, 255))
screen.blit (заголовок, (ширина_экрана/2 - title.get_width()/2, высота_экрана/2 - title.get_height()/3))
screen.blit (кнопка_перезапуска, (ширина_экрана/2 - кнопка_перезапуска.get_width()/2, высота_экрана/1.9 + кнопка_перезапуска.get_height())))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
пигейм.отображать.обновлять()

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

если game_state == "стартовое меню":
draw_start_menu()
если game_state == "игра закончена":
draw_game_over_screen()

если game_state == "игра":
ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_LEFT]:
игрок_х -= 5
еслиключи[пигейм. K_RIGHT]:
игрок_х += 5

если player_x + player_width > препятствие_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + player_height > препятствие_y и игрок_y < препятствие_y + высота_препятствия:
игра_овер = Истинный
игра_состояние = "игра закончена"

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

если game_state == "стартовое меню":
ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_SPACE]:
игра_состояние = "игра"
игрок_х = 200
игрок_у = 400
игра_состояние = "игра"
игра_овер = ЛОЖЬ

если game_state == "игра закончена":
ключи = pygame.key.get_pressed()
еслиключи[пигейм. К_р]:
игра_состояние = "стартовое меню"
еслиключи[пигейм. K_q]:
пигейм.покидать()
покидать()

С этим кодом игра перезапускается, когда пользователь нажимает кнопку «R», и завершается, когда пользователь нажимает кнопку «Q» на клавиатуре.

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

Импортировать пигейм

пигейм.в этом()
ширина_экрана = 750
высота_экрана = 450
экран = pygame.display.set_mode((ширина_экрана, высота_экрана))
препятствие_x = 400
препятствие_у = 400
ширина_препятствия = 40
высота_препятствия = 40
игрок_х = 200
игрок_у = 400
игрок_ширина = 20
player_height = 20
игра_состояние = "стартовое меню"

дефdraw_start_menu():
экран.наполнять((0, 0, 0))
шрифт = pygame.font. SysFont('ариал', 40)
название = шрифт.рендер('Моя игра', Истинный, (255, 255, 255))
start_button = шрифт.рендер('Начинать', Истинный, (255, 255, 255))
screen.blit (заголовок, (ширина_экрана/2 - title.get_width()/2, высота_экрана/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
пигейм.отображать.обновлять()

дефdraw_game_over_screen():
экран.наполнять((0, 0, 0))
шрифт = pygame.font. SysFont('ариал', 40)
название = шрифт.рендер('Игра закончена', Истинный, (255, 255, 255))
перезагрузка_кнопка = шрифт.рендер('R - Перезагрузить', Истинный, (255, 255, 255))
quit_button = font.render('В - Выйти', Истинный, (255, 255, 255))
screen.blit (заголовок, (ширина_экрана/2 - title.get_width()/2, высота_экрана/2 - title.get_height()/3))
screen.blit (кнопка_перезапуска, (ширина_экрана/2 - кнопка_перезапуска.get_width()/2, высота_экрана/1.9 + кнопка_перезапуска.get_height())))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
пигейм.отображать.обновлять()

покаИстинный:
длясобытиевпигейм.событие.получать():
если event.type == pygame. ПОКИДАТЬ:
пигейм.покидать()
покидать()
если game_state == "стартовое меню":
draw_start_menu()
ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_SPACE]:
игрок_х = 200
игрок_у = 400
игра_состояние = "игра"
игра_овер = ЛОЖЬ
Элиф game_state == "игра закончена":
draw_game_over_screen()
ключи = pygame.key.get_pressed()
еслиключи[пигейм. К_р]:
игра_состояние = "стартовое меню"
еслиключи[пигейм. K_q]:
пигейм.покидать()
покидать()

Элиф game_state == "игра":
ключи = pygame.key.get_pressed()
еслиключи[пигейм. K_LEFT]:
игрок_х -= 5
еслиключи[пигейм. K_RIGHT]:
игрок_х += 5

если player_x + player_width > препятствие_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + player_height > препятствие_y и игрок_y < препятствие_y + высота_препятствия:
игра_овер = Истинный
игра_состояние = "игра закончена"

экран.наполнять((0, 0, 0))
пигейм.рисовать.прямо(экран, (255, 0, 0), (препятствие_x, препятствие_y, препятствие_ширина, препятствие_высота))
пигейм.рисовать.прямо(экран, (0, 255, 0), (player_x, player_y, player_width, player_height))
пигейм.отображать.обновлять()

Элиф игра закончена:
игра_состояние = "игра закончена"
игра_овер = ЛОЖЬ

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

Код определяет две функции, draw_start_menu() и draw_game_over_screen(), чтобы нарисовать стартовое меню и экран завершения игры. Эти функции используют функции PyGame для вывода текста и кнопок на экран.

Основной игровой цикл начинается с обработки событий и проверки состояния игры. Если состояние игры стартовое меню, меню «Пуск» отображается на экране. Если состояние игры игра закончена, экран завершения игры отображается на экране. Если состояние игры другое, игра обновляется и рисует игрока и препятствие на экране.

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

После обновления игры игрок и препятствие отрисовываются на экране. Наконец, код проверяет, игра закончена флаг установлен, и если это так, он сбрасывает флаг и устанавливает состояние игры в игра закончена.

Этот процесс повторяется непрерывно, пока игровое окно не будет закрыто.

Увеличьте вовлеченность пользователей с помощью визуально привлекательного пользовательского интерфейса

Использование хорошо продуманного пользовательского интерфейса (UI) может значительно увеличить вовлеченность пользователей в игру PyGame. Четкий и легко читаемый шрифт, визуально привлекательная графика, удобная навигация и обратная связь с пользователем — все это важные элементы, которые следует учитывать при разработке пользовательского интерфейса. Реализуя эти элементы, вы можете создать пользовательский интерфейс, который поможет поддерживать интерес игрока и погрузить его в игру.

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