Странность поведения событий pygame ⇐ Python
Странность поведения событий pygame
Ниже вы увидите 2 фрагмента кода. Первый — оригинальный, все работает очень хорошо, функция check_shooting() вызывается из непрерывно работающего цикла игры в другом .py-файле. Во втором фрагменте кода переменная self.shoot закомментирована, а функция self.shoot_ammo перемещена в область событий нажатия клавиши пробела. Во втором случае, когда я удерживаю клавишу пробела, я получаю только 1 выстрел, а не выстрел каждые 500 миллисекунд, как в первом фрагменте кода, и меня раздражает то, что я не знаю почему. Я новичок в Python.
Первый фрагмент кода
импортировать pygame как pg из импорта звуков * класс GameManager(): защита __init__(сам): self.shoot = Ложь self.shoot_interval = 0 print("Создание нового GameManager...") защита check_shooting (сам, события, мс): # Уменьшите Shoot_interval, чтобы мы могли # знать, когда мы сможем снова выстрелить, пока #удерживая клавишу нажатой если self.shoot_interval > 0: self.shoot_interval -= мс # Посмотрите, нажата или отпущена клавиша пробела # который скажет нам, стоит ли нам стрелять или нет. для события в событиях: если event.type == pg.KEYDOWN: если event.key == pg.K_SPACE: self.shoot = Истина если event.type == pg.KEYUP: если event.key == pg.K_SPACE: self.shoot = Ложь # Сбросьте интервал, позволяющий игроку стрелять # быстрее, чем 'shoot_interval', нажав # пробел. self.shoot_interval = 0 если self.shoot == True: self.shoot_ammo() защита Shoot_ammo (сам): если self.shoot_interval 0: self.shoot_interval -= мс # Посмотрите, нажата или отпущена клавиша пробела # который скажет нам, стоит ли нам стрелять или нет. для события в событиях: если event.type == pg.KEYDOWN: если event.key == pg.K_SPACE: self.shoot_ammo() ###self.shoot = Истина если event.type == pg.KEYUP: если event.key == pg.K_SPACE: ###self.shoot = Ложь # Сбросьте интервал, позволяющий игроку стрелять # быстрее, чем 'shoot_interval', нажав # пробел. self.shoot_interval = 0 ###if self.shoot == True: ###self.shoot_ammo() защита Shoot_ammo (сам): если self.shoot_interval
Ниже вы увидите 2 фрагмента кода. Первый — оригинальный, все работает очень хорошо, функция check_shooting() вызывается из непрерывно работающего цикла игры в другом .py-файле. Во втором фрагменте кода переменная self.shoot закомментирована, а функция self.shoot_ammo перемещена в область событий нажатия клавиши пробела. Во втором случае, когда я удерживаю клавишу пробела, я получаю только 1 выстрел, а не выстрел каждые 500 миллисекунд, как в первом фрагменте кода, и меня раздражает то, что я не знаю почему. Я новичок в Python.
Первый фрагмент кода
импортировать pygame как pg из импорта звуков * класс GameManager(): защита __init__(сам): self.shoot = Ложь self.shoot_interval = 0 print("Создание нового GameManager...") защита check_shooting (сам, события, мс): # Уменьшите Shoot_interval, чтобы мы могли # знать, когда мы сможем снова выстрелить, пока #удерживая клавишу нажатой если self.shoot_interval > 0: self.shoot_interval -= мс # Посмотрите, нажата или отпущена клавиша пробела # который скажет нам, стоит ли нам стрелять или нет. для события в событиях: если event.type == pg.KEYDOWN: если event.key == pg.K_SPACE: self.shoot = Истина если event.type == pg.KEYUP: если event.key == pg.K_SPACE: self.shoot = Ложь # Сбросьте интервал, позволяющий игроку стрелять # быстрее, чем 'shoot_interval', нажав # пробел. self.shoot_interval = 0 если self.shoot == True: self.shoot_ammo() защита Shoot_ammo (сам): если self.shoot_interval 0: self.shoot_interval -= мс # Посмотрите, нажата или отпущена клавиша пробела # который скажет нам, стоит ли нам стрелять или нет. для события в событиях: если event.type == pg.KEYDOWN: если event.key == pg.K_SPACE: self.shoot_ammo() ###self.shoot = Истина если event.type == pg.KEYUP: если event.key == pg.K_SPACE: ###self.shoot = Ложь # Сбросьте интервал, позволяющий игроку стрелять # быстрее, чем 'shoot_interval', нажав # пробел. self.shoot_interval = 0 ###if self.shoot == True: ###self.shoot_ammo() защита Shoot_ammo (сам): если self.shoot_interval
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение