Advertisement
Lillgrinn

Custom event on timer

Apr 19th, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.43 KB | None | 0 0
  1. import pygame
  2.  
  3. pygame.init()
  4.  
  5. WIDTH = 400
  6. HEIGHT = 400
  7. screen = pygame.display.set_mode((WIDTH, HEIGHT))
  8.  
  9. clock = pygame.time.Clock()
  10. FPS = 30
  11.  
  12. # Создаём наш объект - прямоугольную область 50 на 50
  13. my_obj = pygame.rect.Rect(0, 0, 50, 50)
  14. my_obj.center = screen.get_rect().center  # Поместим наш объект в центр экрана
  15. my_obj_forma = 0  # 0 - Квадрат, 1 - Круг
  16. my_obj_color = 'red'
  17.  
  18. # Создаём своё событие в переменной next_form.
  19. # USEREVENT - это событие, которое настраивает пользователь
  20. next_form = pygame.USEREVENT + 1
  21. # Создаём таймер для нашего события,
  22. # указывая какое событие должно произойти, и время в миллисекундах 1 с = 1000 мс
  23. pygame.time.set_timer(next_form, 10000)
  24.  
  25. # Создадим ещё один таймер, для события смены цвета каждые 5 секунд
  26. # так как USEREVENT + 1 уже есть, то добавим 2
  27. change_color = pygame.USEREVENT + 2
  28. # Создаём таймер для нашего события,
  29. # указывая какое событие должно произойти, и время в миллисекундах 1 с = 1000 мс
  30. pygame.time.set_timer(change_color, 5000)
  31.  
  32. run = True
  33. while run:
  34.     for event in pygame.event.get():
  35.         if event.type == pygame.QUIT:
  36.             run = False
  37.         # Если произошло наше событие next_form, то изменить форму
  38.         if event.type == next_form:
  39.             my_obj_forma += 1
  40.         # Если произошло наше событие change_color, то изменить цвет
  41.         if event.type == change_color:
  42.             if my_obj_color == 'red':
  43.                 my_obj_color = 'green'
  44.             else:
  45.                 my_obj_color = 'red'
  46.  
  47.     # Тут проверяем, чтобы форма объекта была только 0 и 1,
  48.     # если большк 1, тогда снова 0
  49.     if my_obj_forma > 1:
  50.         my_obj_forma = 0
  51.  
  52.     screen.fill('white')
  53.     if my_obj_forma == 0:
  54.         pygame.draw.rect(screen, my_obj_color, my_obj)
  55.     else:
  56.         pygame.draw.circle(screen, my_obj_color, my_obj.center, my_obj.width // 2)
  57.     pygame.display.flip()
  58.     clock.tick(FPS)
  59.  
  60.  
  61. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement