import random import pygame from abc import abstractmethod class Animal: def choose_picture(self, name): ran = random.randint(0, 1) if ran == 0: path = f'images/{name}.png' return path else: path = f'images/{name}2.png' return path def __init__(self, x, y,name, image_path, food_image, food, environment, activity, ill=False, adult=False,): self.x = x - 1 self.y = y - 1 self.name = name self.image_path = image_path self.image = pygame.image.load(image_path) self.adult = adult self.food = food self.food_image = food_image self._feed = 0 self.environment = environment # hot/cold/medium self.activity = activity # diurnal/nocturnal self.ill = ill def draw(self, screen, grid_size): if self.adult: # Jeśli zwierzę jest dorosłe, skaluj obrazek na większy rozmiar new_width = grid_size * 2 new_height = grid_size * 2 scaled_image = pygame.transform.scale(self.image, (new_width, new_height)) screen.blit(scaled_image, (self.x * grid_size, self.y * grid_size)) else: # Jeśli zwierzę nie jest dorosłe, skaluj obrazek na rozmiar jednej kratki scaled_image = pygame.transform.scale(self.image, (grid_size, grid_size)) screen.blit(scaled_image, (self.x * grid_size, self.y * grid_size)) def draw_exclamation(self, screen, grid_size, x, y): exclamation_image = pygame.image.load('images/exclamation.png') exclamation_image = pygame.transform.scale(exclamation_image, (int(grid_size * 0.45), int(grid_size * 0.45))) screen.blit(exclamation_image, (x * grid_size, y * grid_size)) def draw_food(self, screen, grid_size, x, y,food_image): scale = 0.45 food_image = pygame.image.load(food_image) if(self.adult): y = y + 1 scale = 0.7 food_image = pygame.transform.scale(food_image, (int(grid_size * scale), int(grid_size * scale))) screen.blit(food_image, (x * grid_size, (y + 1) * grid_size - int(grid_size * scale))) def is_ill(self): chance = random.randint(1, 100) if chance >= 90: return True else: return False def draw_illness(self, screen, grid_size, x, y): scale = 0.45 illness_image = pygame.image.load('images/ill.png') y = y if self.adult: x = x + 1 y = y scale = 0.7 x_blit = x * grid_size + (grid_size - int(grid_size * scale)) illness_image = pygame.transform.scale(illness_image, (int(grid_size * scale), int(grid_size * scale))) screen.blit(illness_image, (x_blit, y * grid_size)) @abstractmethod def getting_hungry(self): pass