Хорошо, у меня есть игра, созданная с помощью pygame. Игра состоит в том, что в нижней части экрана есть человек, стреляющий вверх по верхней части экрана, чтобы ударить врагов. Человек может двигаться влево и вправо.
Чтобы выстрелить, нажмите пробел.
Когда вы стреляете, я хочу, чтобы маленький спрайт появлялся в конце ствола орудия, чтобы он выглядел так, как будто пламя выходит, как стрельба из настоящего оружия.
Мне удалось заставить спрайт огня появляться при нажатии пробела, НО я также хочу, чтобы спрайт исчезал, возможно, через 0,3 секунды (я настрою время, как только он исчезнет).
Как мне на самом деле это сделать? Я чувствую себя потерянным здесь
Я пытался зайти в Google, посмотреть и посмотреть на stackoverflow, но не могу найти то, что мне нужно.
game.py
# -- SNIP --
def run_game():
# -- SNIP ---
# Start the main loop for the game.
while True:
# Watch for keyboard and mouse events.
gf.check_events(ai_settings, screen, stats, sb, play_button, man,
enemies, bullets)
if stats.game_active:
man.update()
gf.update_bullets(ai_settings, screen, stats, sb, man, enemies,
bullets)
gf.update_enemies(ai_settings, stats, screen, sb, man, enemies,
bullets)
gf.update_screen(ai_settings, screen, stats, sb, man, enemies,
bullets, play_button)
run_game()
game_functions.py
# -- SNIP --
def check_events(ai_settings, screen, stats, sb, play_button, man, enemies,
bullets):
"""Respond to keypresses and mouse events."""
# -- SNIP --
elif event.type == pygame.KEYDOWN:
check_keydown_events(event, ai_settings, screen, stats, sb, man,
enemies, bullets)
# -- SNIP --
def check_keydown_events(event, ai_settings, screen, stats, sb, man, enemies, bullets):
"""Respond to key presses."""
if event.key == pygame.K_RIGHT:
man.moving_right = True
man.orientation = "Right"
elif event.key == pygame.K_LEFT:
man.moving_left = True
man.orientation = "Left"
# Draw sprite if space is pressed
elif event.key == pygame.K_SPACE:
fire_bullet(ai_settings, bullets, screen, man)
man.fire_screen.blit(man.fire, man.fire_rect)
# --- SNIP ---
# -- SNIP --
man.py
class Man(Sprite):
# -- SNIP --
# Load the man image and get its rect.
self.image = pygame.image.load('images/man_gun_large.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
# Gun fire sprite
self.fire = pygame.image.load('images/fire.bmp')
self.fire_rect = self.fire.get_rect()
self.screen_fire_rect = self.image.get_rect()
self.fire_screen = self.image
self.ai_settings = ai_settings
# Start each new man at the bottom center of the screen.
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
# Load the fire sprite at the end of the mans gunbarrel
self.fire_rect.centerx = self.screen_fire_rect.left + 20
self.fire_rect.top = self.screen_fire_rect.top
# ---SNIP---
# Movement flags
self.moving_right = False
self.moving_left = False
self.orientation = False
def blitme(self):
"""Draw the man at its current location."""
self.screen.blit(self.image, self.rect)
if self.orientation == "Right":
self.screen.blit(self.image, self.rect)
elif self.orientation == "Left":
self.screen.blit(pygame.transform.flip(self.image, True, False), self.rect)