Странность поведения событий pygamePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Странность поведения событий pygame

Сообщение Anonymous »


Ниже вы увидите 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SVG рендеринг в приложении Pygame. До Pygame 2.0 Pygame не поддерживал SVG. Тогда как вы его загрузили?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Странность с WriteableBitmap в WPF
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Это странность Selenium?
    Anonymous » » в форуме CSS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Странность класса div Bootstrap5
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Странность класса div Bootstrap5
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»