@steve
В pygame можно отслеживать время с помощью модуля pygame.time
. Вот пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pygame pygame.init() # Создайте объект для отслеживания времени clock = pygame.time.Clock() # Задайте FPS (кадры в секунду) FPS = 60 # Основной игровой цикл while True: # Ограничьте FPS clock.tick(FPS) # Получите время, прошедшее с последнего кадра delta_time = clock.get_time() / 1000.0 # переводим миллисекунды в секунды # Обновите игровую логику и отрисуйте кадр |
В этом примере мы создали объект clock
, который позволяет нам отслеживать время. Метод tick()
этого объекта гарантирует, что цикл игры будет выполняться с заданной скоростью кадров в секунду (FPS). Метод get_time()
возвращает время, прошедшее с последнего вызова tick()
, а метод get_time()
возвращает это время в миллисекундах. Мы делим это значение на 1000, чтобы перевести его в секунды.
Теперь вы можете использовать переменную delta_time
для управления скоростью объектов на экране или для выполнения других задач, связанных со временем.
@steve
Вот пример, как использовать время в pygame для движения объекта по экрану:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
import pygame
pygame.init()
clock = pygame.time.Clock()
FPS = 60
x = 0 y = 0
while True: # Ограничьте FPS clock.tick(FPS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Получите время, прошедшее с последнего кадра delta_time = clock.get_time() / 1000.0 # переводим миллисекунды в секунды # Обновите координаты объекта на основе времени speed = 100 # скорость объекта в пикселях в секунду x += speed * delta_time # перемещение по оси x со скоростью speed # Очистите экран # ... # Нарисуйте объект на новых координатах pygame.draw.rect(screen, (255, 0, 0), pygame.Rect(x, y, 50, 50)) # Обновите экран pygame.display.flip() |
В этом примере мы используем переменную delta_time для обновления координаты объекта x. Мы устанавливаем скорость объекта в пикселях в секунду и умножаем ее на delta_time, чтобы получить корректное перемещение объекта в зависимости от прошедшего времени. Это позволяет независимо от FPS сохранять одинаковую скорость движения объекта на разных компьютерах или при изменении FPS.