diff --git a/Bouncer.png b/Bouncer.png new file mode 100644 index 0000000..6752298 Binary files /dev/null and b/Bouncer.png differ diff --git a/Chaser.png b/Chaser.png new file mode 100644 index 0000000..5dc664e Binary files /dev/null and b/Chaser.png differ diff --git a/Dasher.png b/Dasher.png new file mode 100644 index 0000000..1cc8e59 Binary files /dev/null and b/Dasher.png differ diff --git a/Heart.png b/Heart.png new file mode 100644 index 0000000..510be04 Binary files /dev/null and b/Heart.png differ diff --git a/main.py b/main.py index 8824030..9f5b79b 100644 --- a/main.py +++ b/main.py @@ -65,6 +65,38 @@ class DasherEnemy: if self.timer <= 0: self.state = "wait" self.timer = 90 +class BouncerEnemy: + def __init__(self, avoid_rect): + self.rect = pygame.Rect(0, 0, 36, 36) + while True: + self.rect.x = random.randint(0, WIDTH - 36) + self.rect.y = random.randint(0, HEIGHT - 36) + if abs(self.rect.x - avoid_rect.x) > 150 or abs(self.rect.y - avoid_rect.y) > 150: + break + self.vx = random.choice([-3, -2, 2, 3]) + self.vy = random.choice([-3, -2, 2, 3]) + self.spawn_timer = 60 + + def update(self): + self.rect.x += self.vx + self.rect.y += self.vy + if self.rect.left < 0 or self.rect.right > WIDTH: + self.vx = -self.vx + if self.rect.top < 0 or self.rect.bottom > HEIGHT: + self.vy = -self.vy + + +def enemy_for_level(level): #idk if I'll add the levels + if level == 2: + return ChaserEnemy + if level == 3: + return DasherEnemy + if level == 4: + return DasherEnemy + return random.choice([BouncerEnemy, DasherEnemy, ChaserEnemy]) + + + player_img = pygame.image.load("player.png").convert_alpha() @@ -72,13 +104,34 @@ player_img = pygame.transform.scale(player_img, (40, 60)) player = pygame.Rect(300, 220, 40, 60) speed = 5 +Bouncer_img = pygame.image.load("Bouncer.png").convert_alpha() +Bouncer_img = pygame.transform.scale(Bouncer_img, (30, 45)) + +Chaser_img = pygame.image.load("Chaser.png").convert_alpha() +Chaser_img = pygame.transform.scale(Chaser_img, (30, 45)) + +Dasher_img = pygame.image.load("Dasher.png").convert_alpha() +Dasher_img = pygame.transform.scale(Dasher_img, (30, 45)) + + sugar_img = pygame.image.load("honey.png").convert_alpha() sugar_img = pygame.transform.scale(sugar_img, (50, 50)) score = 0 +Enemies = [] + + +heart_img = pygame.image.load("Heart.png").convert_alpha() +heart_img = pygame.transform.scale(heart_img,(40, 40)) + + def new_sugar(): return pygame.Rect(random.randint(0, WIDTH - 20), random.randint(0, HEIGHT - 20), 50, 50) #20,s sugar = new_sugar() +lives = 3 +hit_timer = 0 + + #game loop @@ -99,6 +152,22 @@ while running: if keys[pygame.K_DOWN] or keys[pygame.K_s]: player.y += speed + for enemy in Enemies: + if enemy.spawn_timer > 0: + enemy.spawn_timer -= 1 + else: + enemy.update() + if hit_timer > 0: + hit_timer -= 1 + else: + for enemy in Enemies: + if enemy.spawn_timer <= 0 and player.colliderect(enemy.rect): + lives -= 1 + hit_timer = 90 + break + if lives <= 0: + running = False + #keep player in player.clamp_ip(screen.get_rect()) @@ -106,13 +175,27 @@ while running: if player.colliderect(sugar): score += 1 sugar = new_sugar() + if score % 10 == 0: + Enemies.append(BouncerEnemy(player)) - screen.fill((255, 228, 240)) #screen + + screen.fill((255, 228, 240)) # screen screen.blit(sugar_img, sugar) #sugar screen.blit(player_img, player) #player + if hit_timer % 10 < 5: + screen.blit(player_img, player) text = font.render(f"score: {score}", True, (90, 30, 60)) screen.blit(text, (10, 10)) - + for enemy in Enemies: + if enemy.spawn_timer % 10 < 5: + screen.blit(Bouncer_img, enemy.rect) + screen.blit(player_img, player) + if hit_timer > 0 and hit_timer % 10 < 5: + red = player_img.copy() + red.fill((255, 40, 40, 0), special_flags=pygame.BLEND_RGBA_ADD) + screen.blit(red, player) + for i in range(lives): + screen.blit(heart_img, (10 + i * 35, 40)) pygame.display.flip() clock.tick(60)