На самом деле пуля просто рисуется при нажатии пробел . Вы должны рисовать пулю непрерывно в каждом кадре.
Функция fire_bullet
просто устанавливает состояние и положение маркера. Переменные находятся в глобальном пространстве имен. Следовательно, вы должны использовать оператор global
, чтобы установить их:
bullet_state = "ready"
bullet_x = 0
bullet_y = 0
# Firing the bullet
def fire_bullet(x, y):
global bullet_state, bullet_x, bullet_y
bullet_state = "fire"
bullet_x = x
bullet_y = y
Когда нажата пробел , то вызывается fire_bullet
. Аргументы - текущее положение струи. Когда bullet_state
равно "fire"
, то пуля должна быть нарисована в основном приложении l oop:
while True:
# [...]
if pressed[pygame.K_SPACE]:
fire_bullet(jet_rect.centerx - 28, jet_rect.top + 7)
if bullet_state == "fire":
bullet_y -= 10
screen.blit(bullet, (bullet_x, bullet_y))
# [...]