if bulletX > 1600:
bullet_fire == False
# ^^
Этот появляется , чтобы захотеть установить bullet_fire
на False
, когда он достигает определенной ординаты, но на самом деле сравнивает два и отбрасывает результат. Это означает, что первая выпущенная вами пуля все еще летит, покинула экран и, вероятно, уже находится на полпути к Юпитеру: -)
В качестве примера это похоже на следующую расшифровку:
>>> a = 7
>>> if a == 7:
... a == 14
... print(a)
...
False
7
Необходимо использовать ==
для сравнения и =
для присвоения.
Имейте в виду, что вероятная причина вашей проблемы. Поскольку ваш вопрос не содержит кода, который решает, следует ли создавать новую пулю, сложно сказать наверняка. Поэтому я основываю это на предположении, что все, что разрешено, - это одна пуля за раз (как и во многих аркадных играх). Следовательно, если вы никогда не «уничтожите» текущую пулю, вы никогда не сможете запустить другую.
Если это окажется, что не , то вам, вероятно, нужно опубликовать больше кода, чтобы мы могли провести исчерпывающий анализ.
В стороне, меня немного беспокоит физика, связанная с:
Screen.blit(bulletIMG, (bulletX + 100, playerY))
Кажется, что пуля отображается в текущей позиции игрока Y
, что означает, что после выстрела пули , он будет отслеживать игрока каким-то странным эйнштейновским «жутким действием на расстоянии». Хотя это значительно упрощает игру, поскольку вы можете направлять пули после выстрела, я не уверен, что он получит высокий балл в категории реализма: -)