cookertron

Hubert Grzelka - Alien Bullets

Jul 5th, 2022 (edited)
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.18 KB | None | 0 0
  1. import random
  2. import pygame
  3.  
  4. WIDTH = 1200
  5. HEIGHT = 800
  6. FPS = 120
  7. pygame.init()
  8. window = pygame.display.set_mode((WIDTH, HEIGHT))
  9.  
  10. def load_image(filename, scale = 1):
  11.     surface = pygame.image.load(filename).convert_alpha()
  12.     size = surface.get_rect().size
  13.     scaled_image = pygame.transform.scale(surface, (size[0] * scale, size[1] * scale))
  14.     rect = scaled_image.get_rect()
  15.     return rect, scaled_image
  16.  
  17. class red_alien:
  18.     class laser:
  19.         rect, sprite = load_image('images/enemies/red_alien_bullet.png')
  20.         damage = 2
  21.         def __init__(self, pos):
  22.             self.pos = pos
  23.  
  24.     rect, sprite = load_image('images/enemies/red_alien.png', 0.3)
  25.     def __init__(self):
  26.         self.pos = [random.randint(10, WIDTH - 10), random.randint(10, 100)]
  27.         self.speed = random.randint(2, 5)
  28.         self.bullets = []
  29.         self.bullet_timer = random.randint(1, FPS)
  30.  
  31.     def update(self):
  32.         window.blit(self.sprite, self.pos)
  33.         self.pos[0] += self.speed
  34.         if self.pos[0] > WIDTH - self.rect.w:
  35.             self.pos[0] = WIDTH - self.rect.w
  36.             self.speed = -self.speed
  37.         if self.pos[0] < 0:
  38.             self.pos[0] = 0
  39.             self.speed = -self.speed
  40.         self.bullet_timer -= 1
  41.         if self.bullet_timer == 0:
  42.             self.bullets.append(self.laser(list(self.pos)))
  43.             self.bullet_timer = random.randint(1, FPS)
  44.  
  45.     def update_lasers(self):
  46.         deadbullets = []
  47.         for bullet in self.bullets:
  48.             window.blit(bullet.sprite, bullet.pos)
  49.             bullet.pos[1] += 5
  50.             if bullet.pos[1] > HEIGHT + bullet.rect.h:
  51.                 deadbullets.append(bullet)
  52.         for bullet in deadbullets:
  53.             self.bullets.remove(bullet)
  54.  
  55.  
  56. red_aliens = [red_alien() for _ in range(5)]
  57.  
  58. exit_demo = False
  59. while not exit_demo:
  60.     events = pygame.event.get()
  61.     for event in events:
  62.         if event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE:
  63.             exit_demo = True
  64.     window.fill((0, 0, 0))
  65.     for alien in red_aliens:
  66.         alien.update()
  67.         alien.update_lasers()
  68.    
  69.     pygame.display.update()#
  70.     pygame.time.Clock().tick(120)
  71.  
Add Comment
Please, Sign In to add comment