import random import pygame pygame.init() WIDTH, HEIGHT = 640, 480 screen = pygame.display.set_mode((WIDTH, HEIGHT)) 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) speed = 5 sugar_img = pygame.image.load("honey.png").convert_alpha() sugar_img = pygame.transform.scale(sugar_img, (50, 50)) score = 0 def new_sugar(): return pygame.Rect(random.randint(0, WIDTH - 20), random.randint(0, HEIGHT - 20), 50, 50) #20,s sugar = new_sugar() #game loop running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False #movement keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] or keys[pygame.K_a]: player.x -= speed if keys[pygame.K_RIGHT] or keys[pygame.K_d]: player.x += speed if keys[pygame.K_UP] or keys[pygame.K_w]: player.y -= speed if keys[pygame.K_DOWN] or keys[pygame.K_s]: player.y += speed #keep player in player.clamp_ip(screen.get_rect()) # score if player.colliderect(sugar): score += 1 sugar = new_sugar() screen.fill((255, 228, 240)) #screen screen.blit(sugar_img, sugar) #sugar screen.blit(player_img, player) #player text = font.render(f"score: {score}", True, (90, 30, 60)) screen.blit(text, (10, 10)) pygame.display.flip() clock.tick(60) pygame.quit()