Искали ли сте някога да създадете вълнуваща игра, използвайки библиотеката PyGame на Python, но сте се почувствали претоварени от концепцията за управление на времето? Ако е така, не сте сами.
Времето е един от най-критичните компоненти на разработването на игри и разбирането как работи времето в PyGame е от съществено значение за създаването на ангажиращи и успешни игри. PyGame предоставя няколко полезни функции и модули, които ви позволяват да контролирате времето във вашите игри.
Създаване на проста игра
Започнете, като създадете проста игра, в която правоъгълник се движи надясно. Да започна, инсталирайте pip на вашето устройство и използвайте командата по-долу, за да инсталирате модула PyGame:
pip инсталирайте pygame
Можете да намерите всички примери за код тук GitHub репо.
Веднъж инсталиран, импортирайте модула PyGame. След това създайте екран с размер 800x600 и бял фонов цвят и добавете правоъгълен обект. Кодът трябва да изглежда така:
импортиране pygame
pygame.init()
екран = pygame.display.set_mode((800, 600))
фон = pygame. Повърхност (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)
След това използвайте цикъл while, за да поддържате играта да работи и да държите правоъгълния обект да се движи надясно, докато достигне края на екрана.
бягане = Вярно
докато работи:
за събитие в pygame.event.get():
ако event.type == pygame. ИЗХОД:
бягане = Невярно
rect.x += 1
ако rect.x > 780:
rect.x = 0
screen.blit (фон, (0, 0))
pygame.draw.rect (екран, (0, 0, 0), прав)
pygame.display.update()
Можете също да добавите потребителски входове и сблъсъци в играта. По-долу е резултатът:
Преглед на модула за време на PyGame
За да контролирате времето в тази игра, можете да използвате pygame.time модул. Този модул предоставя различни полезни функции, включително a Часовник обект с методи като get_ticks(), изчакайте(), и забавяне (). Използвайки тези функции, можете лесно да контролирате времето във вашата игра.
Създаване на часовников обект за проследяване на времето
В PyGame можете да използвате обект Clock за проследяване на времето. За да създадете часовник, просто използвайте следния ред код:
часовник = pygame.time. Часовник()
С този обект Clock вече можете да следите времето във вашата игра. Има и няколко други полезни функции, свързани с обекта Clock, като например:
-
get_time(): С помощта на тази функция можете да извлечете времето, необходимо за всеки кадър от играта. За да използвате тази функция, просто добавете следния ред код след цикъла while:
Добавяне на текстов обект за показване на времето:време = clock.get_time()
шрифт = pygame.font. SysFont("Arial", 18)
текст = font.render(„Отнето време: {} ms“.format (време), Вярно, (0, 0, 0))
screen.blit (текст, (0, 0)) -
тик(): Използвайте тази функция, за да зададете кадровата честота на играта. По подразбиране честотата на кадрите е зададена на 60 FPS. За да го настроите на 30 FPS, просто добавете следния ред код:
clock.tick(30)
-
get_fps(): Можете да извлечете текущата скорост на кадрите на играта, като използвате get_fps. За да използвате тази функция, просто добавете следния ред код:
Можете да добавите текстов обект за показване на кадровата честота:fps = clock.get_fps()
шрифт = pygame.font. SysFont("Arial", 18)
текст = font.render(„FPS: {}“.format (fps), Вярно, (0, 0, 0))
screen.blit (текст, (0, 20)) -
tick_busy_loop(): Тази функция ви позволява да изчислите колко милисекунди са изминали от последното извикване на отметка () функция. За да го използвате, просто добавете следния ред код:
clock.tick_busy_loop(30)
Получаване на времето с помощта на get_ticks
The get_ticks() функцията връща времето в милисекунди от инициализиране на PyGame. За да използвате тази функция, добавете следния ред код:
time_elapsed = pygame.time.get_ticks()
Добавяне на текстов обект за показване на времето:
шрифт = pygame.font. SysFont("Arial", 18)
текст = font.render(„Изминало време: {} ms“.format (изминало време), Вярно, (0, 0, 0))
screen.blit (текст, (0, 40))
Можете да използвате изминалото време, за да внедрите базирани на времето елементи на играта, като например бонуси, които продължават за определен период от време. Например, можете да приложите включване, което увеличава скоростта на правоъгълния обект за 5 секунди:
ако изминало време / 5000 > 0:
rect.x += 5
По-долу е резултатът:
Пауза на играта Използване на функциите за изчакване и забавяне
PyGame също предоставя две функции, които можете да използвате, за да поставите играта на пауза за определен период от време: изчакайте функция и забавяне функция.
За да използвате изчакайте просто добавете следния ред код в цикъла while:
pygame.time.wait(1000)
Това ще постави играта на пауза за 1000 милисекунди (1 секунда). За да използвате забавяне просто добавете следния ред код в цикъла while:
pygame.time.delay(1000)
Това ще забави следващия кадър от играта с 1000 милисекунди (1 секунда).
Разлики между чакане и забавяне
Има няколко разлики между изчакайте и забавяне функции. The изчакайте функцията заспива процеса, за да сподели процесора с други програми. The забавяне функцията ще използва процесора, за да направи забавянето по-точно. Това означава, че забавяне функцията изисква повече мощност на процесора от изчакайте функция и е подходящ за игри, които се нуждаят от точно време.
Създаване на събитие с помощта на set_timer
Можете да използвате set_timer() функция за създаване на събитие, което се задейства след определен период от време.
Събитията в PyGame са обекти, които съдържат информация за потребителско въвеждане или генерирани от програма съобщения. За да използвате тази функция, създайте персонализирано събитие и добавете следния ред код:
pygame.time.set_timer (CUSTOM_EVENT, 1000)
Това ще създаде събитие, което се задейства след 1000 милисекунди — 1 секунда. Има различни типове събития, които можете да задействате, като движение на мишката, въвеждане от клавиатурата и събития на прозорец. След това вашият код може да реагира на тези събития по най-подходящия начин.
Например, ако искате да промените y-оста на обекта rect след 1 секунда или когато персонализираното събитие се задейства, можете да добавите следния ред код:
ако event.type == CUSTOM_EVENT:
rect.y += 20
По този начин можете лесно да създавате базирани на времето събития във вашата игра, които можете да използвате, за да създадете интересен и предизвикателен геймплей.
Подобрете контролите на играта с времето
С помощта на контрола на времето можете да подобрите контролите на играта. Можете да използвате времето, за да приложите условия за ускорение, забавяне и дори игра. Много игри въвеждат концепцията за bullet time, където действието се забавя за кратък период.
Използвайки функциите за контрол на времето в PyGame, можете лесно да внедрите такива функции - и повече - в собствените си игри.