Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

PyGame е популярна библиотека за създаване на проекти с Python и предоставя мощен набор от инструменти за разработка на игри. В тази статия ще научите как да създадете стартово меню и екран за края на играта за проста игра с помощта на PyGame.

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

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

За да започнете, трябва да импортирате необходимите модули. Вие ще използвате pygame модул за достъп до функциите на PyGame. За да инсталирате модула, можете използвайте мениджъра на пакети pip:

пип Инсталирай pygame

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

instagram viewer

импортиране pygame
pygame.в него()

screen_width = 750
screen_height = 450
екран = pygame.display.set_mode((ширина_на_екрана, височина_на_екрана))

препятствие_x = 400
препятствие_y = 400
препятствие_ширина = 40
височина_на_препятствието = 40
player_x = 200
player_y = 400
player_width = 20
играч_височина = 20

докатоВярно:

засъбитиевpygame.събитие.get():

if event.type == pygame. ИЗХОД:
pygame.напусни()
напусни ()


ключове = pygame.key.get_pressed()
акоключове[pygame. K_LEFT]:
играч_х -= 5
акоключове[pygame. K_RIGHT]:
player_x += 5


ако player_x + player_width > obstacle_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + играч_височина > obstacle_y и player_y < пречка_y + височина_препятствие:
game_over = Вярно


екран.пълнете((0, 0, 0))
pygame.рисувам.право(екран, (255, 0, 0), (препятствие_x, пречка_y, препятствие_ширина, височина_на_препятствието))
pygame.рисувам.право(екран, (0, 255, 0), (player_x, player_y, player_width, играч_височина))
pygame.дисплей.актуализация()

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

Създаване на менюто "Старт".

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

game_state = "старт меню"

След това ще добавите функция за изчертаване на стартовото меню на екрана. Можете да използвате функциите на PyGame, за да рисувате текст, бутони и други елементи на екрана.

дефdraw_start_menu():
екран.пълнете((0, 0, 0))
шрифт = pygame.font. SysFont("arial", 40)
заглавие = font.render(„Моята игра“, Вярно, (255, 255, 255))
start_button = font.render("Старт", Вярно, (255, 255, 255))
screen.blit (заглавие, (screen_width/2 - title.get_width()/2, screen_height/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))
pygame.дисплей.актуализация()

След това можете да добавите draw_start_menu() функция към основния цикъл на играта.

докатоВярно: 

засъбитиевpygame.събитие.get():
if event.type == pygame. ИЗХОД:
pygame.напусни()
напусни ()

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

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

Сега стартовото меню ще бъде изтеглено на екрана. Последната стъпка е да се обработи въведеното от потребителя. Можеш добавете оператор if към основния цикъл на играта, за да провери дали потребителят е натиснал бутона за стартиране.

ако game_state == "старт меню":
ключове = pygame.key.get_pressed()
акоключове[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "игра"
game_over = Невярно

С този код играта ще започне, когато потребителят натисне бутона за стартиране.

Внедряване на екрана Game Over

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

дефdraw_game_over_screen():
екран.пълнете((0, 0, 0))
шрифт = pygame.font. SysFont("arial", 40)
заглавие = font.render('Играта приключи', Вярно, (255, 255, 255))
restart_button = font.render('R - Рестартиране', Вярно, (255, 255, 255))
quit_button = font.render('Q - Изход', Вярно, (255, 255, 255))
screen.blit (заглавие, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.дисплей.актуализация()

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

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

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

ако player_x + player_width > obstacle_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + играч_височина > obstacle_y и player_y < пречка_y + височина_препятствие:
game_over = Вярно
game_state = "играта приключи"

И накрая, трябва да обработите потребителския вход, за да обработите избора на потребителя. Можете да добавите оператор if към основния цикъл на играта, за да проверите дали потребителят е натиснал бутона за рестартиране или излизане.

ако game_state == "старт меню":
ключове = pygame.key.get_pressed()
акоключове[pygame. K_SPACE]:
game_state = "игра"
player_x = 200
player_y = 400
game_state = "игра"
game_over = Невярно

ако game_state == "играта приключи":
ключове = pygame.key.get_pressed()
акоключове[pygame. K_r]:
game_state = "старт меню"
акоключове[pygame. K_q]:
pygame.напусни()
напусни ()

С този код играта ще се рестартира, когато потребителят натисне бутона 'R' и ще излезе, когато потребителят натисне бутона 'Q' на клавиатурата.

По-долу е пълният код:

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

pygame.в него()
screen_width = 750
screen_height = 450
екран = pygame.display.set_mode((ширина_на_екрана, височина_на_екрана))
препятствие_x = 400
препятствие_y = 400
препятствие_ширина = 40
височина_на_препятствието = 40
player_x = 200
player_y = 400
player_width = 20
играч_височина = 20
game_state = "старт меню"

дефdraw_start_menu():
екран.пълнете((0, 0, 0))
шрифт = pygame.font. SysFont("arial", 40)
заглавие = font.render(„Моята игра“, Вярно, (255, 255, 255))
start_button = font.render("Старт", Вярно, (255, 255, 255))
screen.blit (заглавие, (screen_width/2 - title.get_width()/2, screen_height/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))
pygame.дисплей.актуализация()

дефdraw_game_over_screen():
екран.пълнете((0, 0, 0))
шрифт = pygame.font. SysFont("arial", 40)
заглавие = font.render('Играта приключи', Вярно, (255, 255, 255))
restart_button = font.render('R - Рестартиране', Вярно, (255, 255, 255))
quit_button = font.render('Q - Изход', Вярно, (255, 255, 255))
screen.blit (заглавие, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.дисплей.актуализация()

докатоВярно:
засъбитиевpygame.събитие.get():
if event.type == pygame. ИЗХОД:
pygame.напусни()
напусни ()
ако game_state == "старт меню":
draw_start_menu()
ключове = pygame.key.get_pressed()
акоключове[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "игра"
game_over = Невярно
елиф game_state == "играта приключи":
draw_game_over_screen()
ключове = pygame.key.get_pressed()
акоключове[pygame. K_r]:
game_state = "старт меню"
акоключове[pygame. K_q]:
pygame.напусни()
напусни ()

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

ако player_x + player_width > obstacle_x и player_x < препятствие_x + препятствие_ширинаиplayer_y + играч_височина > obstacle_y и player_y < пречка_y + височина_препятствие:
game_over = Вярно
game_state = "играта приключи"

екран.пълнете((0, 0, 0))
pygame.рисувам.право(екран, (255, 0, 0), (препятствие_x, пречка_y, препятствие_ширина, височина_на_препятствието))
pygame.рисувам.право(екран, (0, 255, 0), (player_x, player_y, player_width, играч_височина))
pygame.дисплей.актуализация()

елиф играта приключи:
game_state = "играта приключи"
game_over = Невярно

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

Кодът дефинира две функции, draw_start_menu() и draw_game_over_screen(), за да нарисувате стартовото меню и края на играта. Тези функции използват функциите на PyGame, за да рисуват текст и бутони на екрана.

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

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

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

Този процес се повтаря непрекъснато, докато прозорецът на играта се затвори.

Увеличете ангажираността на потребителите с визуално привлекателен потребителски интерфейс

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

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