diff --git a/pygame/space_invaders/source/assets/images/explosionblue.png b/pygame/space_invaders/source/assets/images/explosionblue.png deleted file mode 100644 index 13533503..00000000 Binary files a/pygame/space_invaders/source/assets/images/explosionblue.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/images/explosiongreen.png b/pygame/space_invaders/source/assets/images/explosiongreen.png deleted file mode 100644 index a09097aa..00000000 Binary files a/pygame/space_invaders/source/assets/images/explosiongreen.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/images/explosionpurple.png b/pygame/space_invaders/source/assets/images/explosionpurple.png deleted file mode 100644 index d0b551b2..00000000 Binary files a/pygame/space_invaders/source/assets/images/explosionpurple.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_2.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_2.png deleted file mode 100644 index 69976745..00000000 Binary files a/pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_2.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_2.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_2.png deleted file mode 100644 index 1bbe5260..00000000 Binary files a/pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_2.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png deleted file mode 100644 index 97e26381..00000000 Binary files a/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png and /dev/null differ diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_cyan.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_cyan.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_lime.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_lime.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_magenta.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_magenta.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/mystery.png b/pygame/space_invaders/source/assets/sprites/enemies/mystery.png deleted file mode 100644 index 7f616811..00000000 Binary files a/pygame/space_invaders/source/assets/sprites/enemies/mystery.png and /dev/null differ diff --git a/pygame/space_invaders/source/space_invaders.py b/pygame/space_invaders/source/space_invaders.py index 52a63457..66a2b269 100644 --- a/pygame/space_invaders/source/space_invaders.py +++ b/pygame/space_invaders/source/space_invaders.py @@ -24,11 +24,12 @@ SPACESHIP = pygame.image.load(join(SPRITE_PATH, "playership.png")) # player PLAYER_MISSILE = pygame.image.load(join(SPRITE_PATH, "missiles", "playermissile.png")) # player missile # enemies -ENEMY_1 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy1", "enemy1_1.png")), (40, 35)) -ENEMY_2 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy2", "enemy2_1.png")), (40, 35)) -ENEMY_3 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy3", "enemy3_1.png")), (40, 35)) +ENEMY_1 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_magenta.png")), (40, 35)) +ENEMY_2 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_cyan.png")), (40, 35)) +ENEMY_3 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_lime.png")), (40, 35)) ENEMY_MISSILE = pygame.image.load(join(SPRITE_PATH, "missiles", "enemymissile.png")) # enemy missile +pygame.display.set_icon(ENEMY_3) # background BACKGROUND = pygame.transform.scale(pygame.image.load(join(BASE_PATH, "assets", "background.jpg")), (WIDTH, HEIGHT)) @@ -39,6 +40,7 @@ RED = (188, 2, 5) class Missile: + def __init__(self, x: int, y: int, img) -> None: self.x = x self.y = y @@ -59,9 +61,9 @@ class Missile: class Ship: - COOLDOWN = 30 + COOLDOWN = 30 # cooldown before shooting next missile - def __init__(self, x: int, y: int, lives: int = 5) -> None: + def __init__(self, x: int, y: int, lives: int = 3) -> None: self.x = x self.y = y self.lives = lives @@ -105,7 +107,8 @@ class Ship: class Player(Ship): - def __init__(self, x: int, y: int, lives: int = 5) -> None: + + def __init__(self, x: int, y: int, lives: int = 3) -> None: super().__init__(x, y, lives) self.ship_img = SPACESHIP self.missile_img = PLAYER_MISSILE @@ -145,30 +148,30 @@ class Enemy(Ship): def __init__(self, x: int, y: int, color: str) -> None: super().__init__(x, y) - self.ship_img = self.COLOR_MAP[color] self.missile_img = ENEMY_MISSILE + self.ship_img = self.COLOR_MAP[color] self.mask = pygame.mask.from_surface(self.ship_img) self.color = color - def move(self, vel_x: int, vel_y: int) -> None: + def move(self, vel_x: int, vel_y: int = 0) -> None: self.x += vel_x self.y += vel_y def main() -> None: + FPS = 60 run = True lost = False lost_count = 0 - FPS = 60 level = 0 enemies = [] player_vel = 7 - player_missile_vel = 7 + player_missile_vel = 15 enemy_x_vel = 2 + enemy_y_vel = 2 vel_x = enemy_x_vel - vel_y = 0 - enemy_missile_vel = 4 + enemy_missile_vel = 6 last_enemy_shot = 0 player = Player(WIDTH / 2, 650) @@ -217,11 +220,11 @@ def main() -> None: margin = 75 for x in range(margin, WIDTH - margin, margin): for y in range(margin, int(HEIGHT / 2), margin): - if y == margin: + if y == margin: # top row color = "magenta" - elif y == 2 * margin: + elif y == 2 * margin: # rows 2-3 color = "cyan" - elif y == 4 * margin: + elif y == 4 * margin: # rows 4-5 color = "lime" enemy = Enemy(x, y, color) enemies.append(enemy) @@ -244,14 +247,14 @@ def main() -> None: player.shoot() # enemies action - for enemy in enemies[:]: if enemy.x >= WIDTH - enemy.get_width(): + move(0, enemy_y_vel, enemies) vel_x = -enemy_x_vel - elif enemy.x <= 0: - vel_x = enemy_x_vel - enemy.move(vel_x, vel_y) + elif enemy.x <= 0: + move(0, enemy_y_vel, enemies) + vel_x = enemy_x_vel enemy.move_missiles(enemy_missile_vel, player) @@ -259,6 +262,9 @@ def main() -> None: player.score -= 10 player.lives -= 1 enemies.remove(enemy) + + move(vel_x, 0, enemies) + if pygame.time.get_ticks() - last_enemy_shot > 2000: choice(enemies).shoot() last_enemy_shot = pygame.time.get_ticks() @@ -271,6 +277,11 @@ set_font = lambda size, font=FONT: pygame.font.Font(font, size) # sets font siz collide = lambda obj1, obj2: obj1.mask.overlap(obj2.mask, (obj2.x - obj1.x, obj2.y - obj1.y)) != None # checks if 2 objs collide/overlap +def move(vel_x: int, vel_y: int, enemies: list) -> None: + for enemy in enemies: + enemy.move(vel_x, vel_y) + + def main_menu() -> None: while True: WINDOW.blit(BACKGROUND, (0, 0)) @@ -284,5 +295,5 @@ def main_menu() -> None: main() -if __name__ == '__main__': +if __name__ == "__main__": main_menu() \ No newline at end of file