Сброс таймера в Pygame - PullRequest
       0

Сброс таймера в Pygame

1 голос
/ 22 января 2020

Я понимаю, что кто-то задавал этот вопрос раньше, но я обнаружил, что ответ не работает для меня. У меня есть такой код.

fire_event = pygame.USEREVENT + 1
pygame.time.set_timer(fire_event, 900)

while exit:
 for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == fire_event:
            index_rand = random.randint(0, len(enemies) - 1)
 if something:
    pygame.time.set_timer(fire_event, 200)

Далее следует основной l oop, в котором я хочу изменить время. Использование строки pygame.time.set_timer(fire_event, 500) не сработало для меня. Я смог остановить таймер, заменив значение на 0, но мне кажется, что я не могу сбросить таймер.

1 Ответ

1 голос
/ 22 января 2020

Возможно, ваш главный l oop является проблемой, так как он проверяет exit (истинно), но тест закрытия окна, кажется, на run.

while exit:                           # <-- HERE, should this be "while run"?
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

In В любом случае, вот минимальный пример изменения и остановки таймера.

import pygame

# Window size
WINDOW_WIDTH    = 400
WINDOW_HEIGHT   = 400

### initialisation
pygame.init()
window = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ) ) 
pygame.display.set_caption( "Timers" )

# Events
USER_EVENT = pygame.USEREVENT + 1
pygame.time.set_timer( USER_EVENT, 2000 )
event_count = 0

### Main Loop
clock = pygame.time.Clock()
done = False
while not done:

    # Handle user-input
    for event in pygame.event.get():
        if ( event.type == pygame.QUIT ):
            done = True
        elif ( event.type == USER_EVENT ):
            print( "USER-EVENT" )
            event_count += 1
            if ( event_count < 10 ):
                pygame.time.set_timer( USER_EVENT, 500 )
            else:
                print( "Timer Cancelled" )
                pygame.time.set_timer( USER_EVENT, 0 )

    # Update the window, but not more than 60fps
    window.fill( (0,0,0) ) # Paint it black
    pygame.display.flip()

    # Clamp FPS
    clock.tick_busy_loop(60)

pygame.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...