import pygame import random import ScoreManager from Particle import Particle class Sliceable: def __init__(self): self.particles = [] self.is_already_sliced = False self.is_bomb = random.randint(1, 5) == 1 self.x = random.choice([50, 750]) self.y = 600 self.color = (255, 0, 0) if self.is_bomb else (0, 255, 0) self.radius = 15 self.speed_y = random.randint(-18, -12) # self.speed_x = random.choice([-3, 3]) if self.x > 400: self.speed_x = -5 else: self.speed_x = 5 def update(self): self.x += self.speed_x self.y += self.speed_y self.speed_y += 0.3 # Przyciąganie w dół def draw(self, screen): if not self.is_already_sliced: pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), self.radius) for particle in self.particles: particle.update() particle.draw(screen) def check_collision(self, score_manager: ScoreManager, is_clicked): # Oblicz odległość między myszką a środkiem owocu sword = pygame.mouse.get_pos() distance = ((sword[0] - self.x) ** 2 + (sword[1] - self.y) ** 2) ** 0.5 # Sprawdź czy myszka jest w zasięgu owocu if distance <= self.radius + 3 and not self.is_already_sliced and is_clicked: self.is_already_sliced = True if self.is_bomb: return True # Bomba else: score_manager.add_points(100) self.generate_particles() return False # Owoc return None def generate_particles(self): for i in range(random.randint(3, 6)): self.particles.append(Particle(self.x, self.y, self.color, self.speed_x, self.speed_y)) def is_off_screen(self, screen_height): return self.y > screen_height