From 2ace3e9ceabf97862cf022df50ad82ad6192f868 Mon Sep 17 00:00:00 2001 From: kojtech Date: Wed, 21 Oct 2026 21:21:07 +0200 Subject: [PATCH] added 2 new classes --- main.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/main.py b/main.py index 99ddb01..8824030 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,64 @@ pygame.display.set_caption("Sugarmania") clock = pygame.time.Clock() font = pygame.font.SysFont(None, 36) +class ChaserEnemy: + 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.speed = 2 + self.spawn_timer = 60 + + def update(self, target): + if self.rect.centerx < target.centerx: + self.rect.x += self.speed + elif self.rect.centerx > target.centerx: + self.rect.x -= self.speed + if self.rect.y < target.centery: + self.rect.y += self.speed + elif self.rect.centery > target.centery: + self.rect.y -= self.speed +class DasherEnemy: + 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.x = float(self.rect.x) + self.y = float(self.rect.y) + self.vx = 0 + self.vy = 0 + self.state = "wait" + self.timer = 90 + self.spawn_timer = 60 + + def update(self, target): + self.timer -= 1 + if self.state == "wait": + dx = target.centerx - self.rect.centerx + dy = target.centery - self.rect.centery + dist = max(1, (dx ** 2 + dy ** 2) ** 0,5) + self.vx = dx / dist * 9 + self.vy = dy / dist * 9 + self.state = "dash" + self.timer = 30 + else: + self.x += self.vx + self.y += self.vy + self.rect.x = int(self.x) + self.rect.y = int(self.y) + self.rect.clamp_ip(screen.get_rect()) + self.x, self.y = float(self.rect.x), float(self.rect.y) + if self.timer <= 0: + self.state = "wait" + self.timer = 90 + + player_img = pygame.image.load("player.png").convert_alpha() player_img = pygame.transform.scale(player_img, (40, 60)) player = pygame.Rect(300, 220, 40, 60)