ADDING EXPLOSIONS
This commit is contained in:
parent
a860c17973
commit
cd2af582c2
|
@ -3,6 +3,7 @@ import os
|
||||||
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
|
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
|
||||||
from pygame.sprite import Group
|
from pygame.sprite import Group
|
||||||
import pygame
|
import pygame
|
||||||
|
from pygame import mixer
|
||||||
from pygame.locals import *
|
from pygame.locals import *
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
@ -57,12 +58,17 @@ class Spaceship(pygame.sprite.Sprite):
|
||||||
|
|
||||||
# update mask
|
# update mask
|
||||||
self.mask = pygame.mask.from_surface(self.image) # this does pixel perfect collison becasue it ignores anything that is not spaceship
|
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))
|
pygame.draw.rect(screen, RED, (self.rect.x, (self.rect.bottom +10), self.rect.width, 15))
|
||||||
if self.health_remaining > 0:
|
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) )
|
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):
|
class Bullets(pygame.sprite.Sprite):
|
||||||
|
@ -77,6 +83,8 @@ class Bullets(pygame.sprite.Sprite):
|
||||||
self.kill()
|
self.kill()
|
||||||
if pygame.sprite.spritecollide(self, alien_group, True):
|
if pygame.sprite.spritecollide(self, alien_group, True):
|
||||||
self.kill()
|
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
|
# video for this https://www.youtube.com/watch?v=mqz1_wRSMwo
|
||||||
class Aliens(pygame.sprite.Sprite):
|
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):
|
if pygame.sprite.spritecollide(self, spaceship_group, False, pygame.sprite.collide_mask):
|
||||||
self.kill()
|
self.kill()
|
||||||
spaceship.health_remaining -= 1
|
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
|
# create sprite groups
|
||||||
spaceship_group = pygame.sprite.Group()
|
spaceship_group = pygame.sprite.Group()
|
||||||
bullet_group = pygame.sprite.Group()
|
bullet_group = pygame.sprite.Group()
|
||||||
alien_group = pygame.sprite.Group()
|
alien_group = pygame.sprite.Group()
|
||||||
alien_bullet_group = pygame.sprite.Group()
|
alien_bullet_group = pygame.sprite.Group()
|
||||||
|
explosion_group = pygame.sprite.Group()
|
||||||
# create player
|
# create player
|
||||||
spaceship = Spaceship(int(WIDTH / 2), HEIGHT - 100, 3)
|
spaceship = Spaceship(int(WIDTH / 2), HEIGHT - 100, 3)
|
||||||
spaceship_group.add(spaceship)
|
spaceship_group.add(spaceship)
|
||||||
|
@ -164,11 +211,13 @@ while running:
|
||||||
bullet_group.update()
|
bullet_group.update()
|
||||||
alien_group.update()
|
alien_group.update()
|
||||||
alien_bullet_group.update()
|
alien_bullet_group.update()
|
||||||
|
explosion_group.update()
|
||||||
# draw sprite groups on screen
|
# draw sprite groups on screen
|
||||||
spaceship_group.draw(screen)
|
spaceship_group.draw(screen)
|
||||||
bullet_group.draw(screen)
|
bullet_group.draw(screen)
|
||||||
alien_group.draw(screen)
|
alien_group.draw(screen)
|
||||||
alien_bullet_group.draw(screen)
|
alien_bullet_group.draw(screen)
|
||||||
|
explosion_group.draw(screen)
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user