import pygame import random from game_object import GameObject class Prey(GameObject): def __init__(self, size: int, color: tuple, window_size: tuple): self.__bounding_box = pygame.rect.Rect(0, 0, size, size) self.__color = color self.__window_size = window_size self.__next_pos = None self.__place_randomly() def __place_randomly(self) -> None: self.__next_pos = [random.randint(0, max_val) for max_val in self.__window_size] def __collides_with_other(self, pos: tuple, game_objs: list[GameObject]) -> bool: box = pygame.rect.Rect(self.__bounding_box) box.center = pos for obj in game_objs: if not isinstance(obj, Prey) and box.collidelist(obj.get_bounding_boxes()) > -1: return True def draw(self, surface: pygame.surface.Surface) -> None: pygame.draw.rect(surface, color=self.__color, rect=self.__bounding_box) def update(self, user_input: int, game_objs: list[GameObject]): self.__bounding_box.center = self.__next_pos while self.__collides_with_other(self.__next_pos, game_objs): self.__place_randomly() def get_bounding_boxes(self) -> list[pygame.rect.Rect]: return [self.__bounding_box]