Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Как замедлить часть кода,но не замедлять весь код?

#python #pygame


Делаю небольшую игру на Pygame. 

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

Нужно сделать так, чтоб замедлился не весь код, а только этот блок (чтоб спрайт перемещался
не моментально, а с задержкой в 3 секунды). 

Использовал pygame.time.delay() и time.sleep(), но они замедляют весь код. 
Подскажите, что можно сделать. Если нужно, то скину код. 😁
    


Ответы

Ответ 1



Задержек быть не должно. Чтобы выполнять некоторый код с какой-то периодичностью, надо генерировать события с этой периодичностью и обрабатывать их: import pygame screen = pygame.display.set_mode((300, 200)) clock = pygame.time.Clock() pygame.display.set_caption('Timer demo') MOVE_DOWN_DELAY = 500 MOVE_DOWN_EVENT = pygame.USEREVENT + 1 pygame.time.set_timer(MOVE_DOWN_EVENT, MOVE_DOWN_DELAY) dot = pygame.Rect(150, 10, 10, 10) while True: clock.tick(50) if pygame.event.get(pygame.QUIT): break for e in pygame.event.get(): if e.type == MOVE_DOWN_EVENT: dot.move_ip(0, 10) screen.fill((0, 0, 0)) pygame.draw.rect(screen, (150, 150, 150), dot) pygame.display.flip()

Комментариев нет:

Отправить комментарий