diff --git a/PyGame/practice/gameprac/hybrid.py b/PyGame/practice/gameprac/hybrid.py index 06e7379..5908087 100644 --- a/PyGame/practice/gameprac/hybrid.py +++ b/PyGame/practice/gameprac/hybrid.py @@ -3,6 +3,7 @@ import os os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" from pygame.sprite import Group import pygame +from pygame import mixer from pygame.locals import * import random @@ -57,12 +58,17 @@ class Spaceship(pygame.sprite.Sprite): # update mask self.mask = pygame.mask.from_surface(self.image) # this does pixel perfect collison becasue it ignores anything that is not spaceship - + pygame.draw.rect(screen, RED, (self.rect.x, (self.rect.bottom +10), self.rect.width, 15)) if self.health_remaining > 0: pygame.draw.rect(screen, GREEN, (self.rect.x, (self.rect.bottom +10), int(self.rect.width * (self.health_remaining / self.health_start)), 15) ) + elif self.health_remaining <= 0: + explosion = Explosion(self.rect.centerx, self.rect.centery, 3) + explosion_group.add(explosion) + self.kill() + class Bullets(pygame.sprite.Sprite): @@ -77,6 +83,8 @@ class Bullets(pygame.sprite.Sprite): self.kill() if pygame.sprite.spritecollide(self, alien_group, True): self.kill() + explosion = Explosion(self.rect.centerx, self.rect.centery, 2) + explosion_group.add(explosion) # video for this https://www.youtube.com/watch?v=mqz1_wRSMwo class Aliens(pygame.sprite.Sprite): @@ -107,12 +115,51 @@ class Alien_Bullets(pygame.sprite.Sprite): if pygame.sprite.spritecollide(self, spaceship_group, False, pygame.sprite.collide_mask): self.kill() spaceship.health_remaining -= 1 + explosion = Explosion(self.rect.centerx, self.rect.centery, 1) + explosion_group.add(explosion) + + +#create exploxion class +class Explosion(pygame.sprite.Sprite): + def __init__(self, x, y, size): + pygame.sprite.Sprite.__init__(self) + self.images = [] + for num in range(1, 6): + img = pygame.image.load(f"img/exp{num}.png") + if size == 1: + img = pygame.transform.scale(img, (20, 20)) + if size == 2: + img = pygame.transform.scale(img, (40, 40)) + if size == 3: + img = pygame.transform.scale(img, (160, 160)) + self.images.append(img) + self.index = 0 + self.image = self.images[self.index] + self.rect = self.image.get_rect() + self.rect.center = [x, y] + self.counter = 0 + + def update(self): + expolosion_speed = 3 + self.counter += 1 + + if self.counter >= expolosion_speed and self.index < len(self.images) - 1: + self.counter = 0 + self.index += 1 + self.image = self.images[self.index] + + if self.index >= len(self.images) - 1 and self.counter >= expolosion_speed: + self.kill() + + + # create sprite groups spaceship_group = pygame.sprite.Group() bullet_group = pygame.sprite.Group() alien_group = pygame.sprite.Group() alien_bullet_group = pygame.sprite.Group() +explosion_group = pygame.sprite.Group() # create player spaceship = Spaceship(int(WIDTH / 2), HEIGHT - 100, 3) spaceship_group.add(spaceship) @@ -164,11 +211,13 @@ while running: bullet_group.update() alien_group.update() alien_bullet_group.update() + explosion_group.update() # draw sprite groups on screen spaceship_group.draw(screen) bullet_group.draw(screen) alien_group.draw(screen) alien_bullet_group.draw(screen) + explosion_group.draw(screen) pygame.display.update()