import pygame import random class Explosion(pygame.sprite.Sprite): def __init__(self, center, explosion_images): super().__init__() self.explosion_images = explosion_images self.image = self.explosion_images[0] self.rect = self.image.get_rect() self.rect.center = center self.frame = 0 self.last_update = pygame.time.get_ticks() self.frame_rate = 60 self.explosion_sounds = [ pygame.mixer.Sound('game_sounds/explosions/explosion1.wav'), pygame.mixer.Sound('game_sounds/explosions/explosion2.wav'), pygame.mixer.Sound('game_sounds/explosions/explosion3.wav') ] for sound in self.explosion_sounds: sound.set_volume(0.3) self.explosion_sound = random.choice(self.explosion_sounds) self.sound_played = False def update(self): now = pygame.time.get_ticks() if now - self.last_update > self.frame_rate: self.last_update = now self.frame += 1 if self.frame == len(self.explosion_images): self.kill() else: center = self.rect.center self.image = self.explosion_images[self.frame] self.rect = self.image.get_rect() self.rect.center = center if not self.sound_played: self.explosion_sound.play() self.sound_played = True class Explosion2(pygame.sprite.Sprite): def __init__(self, center, explosion2_images): super().__init__() self.explosion2_images = explosion2_images self.image = self.explosion2_images[0] self.rect = self.image.get_rect() self.rect.center = center self.frame = 0 self.last_update = pygame.time.get_ticks() self.frame_rate = 60 self.explosion2_sounds = [ pygame.mixer.Sound('game_sounds/explosions/explosion3.wav') ] for sound in self.explosion2_sounds: sound.set_volume(0.3) self.explosion2_sound = random.choice(self.explosion2_sounds) self.sound_played = False def update(self): now = pygame.time.get_ticks() if now - self.last_update > self.frame_rate: self.last_update = now self.frame += 1 if self.frame == len(self.explosion2_images): self.kill() else: center = self.rect.center self.image = self.explosion2_images[self.frame] self.rect = self.image.get_rect() self.rect.center = center if not self.sound_played: self.explosion2_sound.play() self.sound_played = True