Compare commits
	
		
			2 Commits
		
	
	
		
			d93b26e2be
			...
			cd2af582c2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cd2af582c2 | |||
| a860c17973 | 
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,9 +56,19 @@ class Spaceship(pygame.sprite.Sprite):
 | 
				
			||||||
            bullet_group.add(bullet)
 | 
					            bullet_group.add(bullet)
 | 
				
			||||||
            self.last_shot = time_now
 | 
					            self.last_shot = time_now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # 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))
 | 
					        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):
 | 
				
			||||||
| 
						 | 
					@ -70,6 +81,11 @@ class Bullets(pygame.sprite.Sprite):
 | 
				
			||||||
        self.rect.y -= 5
 | 
					        self.rect.y -= 5
 | 
				
			||||||
        if self.rect.bottom < 0:
 | 
					        if self.rect.bottom < 0:
 | 
				
			||||||
            self.kill() 
 | 
					            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
 | 
					# video for this https://www.youtube.com/watch?v=mqz1_wRSMwo
 | 
				
			||||||
class Aliens(pygame.sprite.Sprite): 
 | 
					class Aliens(pygame.sprite.Sprite): 
 | 
				
			||||||
    def __init__(self,x ,y):
 | 
					    def __init__(self,x ,y):
 | 
				
			||||||
| 
						 | 
					@ -95,13 +111,55 @@ class Alien_Bullets(pygame.sprite.Sprite):
 | 
				
			||||||
    def update(self):
 | 
					    def update(self):
 | 
				
			||||||
        self.rect.y += 2
 | 
					        self.rect.y += 2
 | 
				
			||||||
        if self.rect.top > HEIGHT:
 | 
					        if self.rect.top > HEIGHT:
 | 
				
			||||||
            self.kill() 
 | 
					            self.kill()
 | 
				
			||||||
 | 
					        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
 | 
					# 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)
 | 
				
			||||||
| 
						 | 
					@ -153,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