diff --git a/Animals/animal.py b/Animals/animal.py index a4a40bc..fb27c16 100644 --- a/Animals/animal.py +++ b/Animals/animal.py @@ -30,9 +30,9 @@ class Animal: 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): + def draw_food(self, screen, grid_size, x, y,food_image): scale = 0.45 - food_image = pygame.image.load(self.food_image) + food_image = pygame.image.load(food_image) if(self.adult): y = y + 1 @@ -40,9 +40,6 @@ class Animal: 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))) - @abstractmethod - def feed(self): - pass @abstractmethod def getting_hungry(self): diff --git a/Animals/animals.py b/Animals/animals.py index b228a52..27f00f4 100644 --- a/Animals/animals.py +++ b/Animals/animals.py @@ -41,7 +41,13 @@ def create_animals(): def draw_Animals(Animals, const): for Animal in Animals: Animal.draw(const.screen, const.GRID_SIZE) - if Animal.feed() == 'True': + if Animal.getting_hungry() == 5: Animal.draw_exclamation(const.screen, const.GRID_SIZE, Animal.x, Animal.y) - else: - Animal.draw_food(const.screen,const.GRID_SIZE,Animal.x,Animal.y) \ No newline at end of file + Animal.draw_food(const.screen,const.GRID_SIZE,Animal.x,Animal.y,'images/empty_bowl.png') + if Animal.getting_hungry() >= 4 and Animal.getting_hungry() < 5: + Animal.draw_exclamation(const.screen, const.GRID_SIZE, Animal.x, Animal.y) + Animal.draw_food(const.screen,const.GRID_SIZE,Animal.x,Animal.y,'images/almost_empty.png') + if Animal.getting_hungry() >= 2 and Animal.getting_hungry() < 4: + Animal.draw_food(const.screen,const.GRID_SIZE,Animal.x,Animal.y,'images/half_bowl.png') + if Animal.getting_hungry() < 2: + Animal.draw_food(const.screen,const.GRID_SIZE,Animal.x,Animal.y,'images/full_bowl.png') \ No newline at end of file diff --git a/Animals/bear.py b/Animals/bear.py index 3eb5c65..89862f6 100644 --- a/Animals/bear.py +++ b/Animals/bear.py @@ -13,13 +13,6 @@ class Bear(Animal): self._starttime = datetime.now() - - def feed(self): - self.getting_hungry() - if self._feed < 2: - return 'False' - else: - return 'True' def getting_hungry(self): @@ -27,4 +20,7 @@ class Bear(Animal): delta = checktime - self._starttime minutes_passed = delta.total_seconds() / 60 self._feed += minutes_passed - self._starttime = checktime \ No newline at end of file + self._starttime = checktime + if self._feed > 5: + self._feed = 5 + return self._feed \ No newline at end of file diff --git a/Animals/elephant.py b/Animals/elephant.py index 4e63bfb..8603ac6 100644 --- a/Animals/elephant.py +++ b/Animals/elephant.py @@ -21,17 +21,12 @@ class Elephant(Animal): - def feed(self): - self.getting_hungry() - if self._feed < 0.3: - return 'False' - else: - return 'True' - - def getting_hungry(self): checktime = datetime.now() delta = checktime - self._starttime - minutes_passed = delta.total_seconds() / 60 + minutes_passed = delta.total_seconds() / 50 self._feed += minutes_passed - self._starttime = checktime \ No newline at end of file + self._starttime = checktime + if self._feed > 5: + self._feed = 5 + return self._feed \ No newline at end of file diff --git a/Animals/giraffe.py b/Animals/giraffe.py index f5c191f..e288877 100644 --- a/Animals/giraffe.py +++ b/Animals/giraffe.py @@ -14,19 +14,14 @@ class Giraffe(Animal): super().__init__(x, y,name, Giraffe_image, food_image,giraffe_food, environment, adult) self._starttime = datetime.now() - - - def feed(self): - self.getting_hungry() - if self._feed < 0.8: - return 'False' - else: - return 'True' def getting_hungry(self): checktime = datetime.now() delta = checktime - self._starttime - minutes_passed = delta.total_seconds() / 60 + minutes_passed = delta.total_seconds() / 30 self._feed += minutes_passed - self._starttime = checktime \ No newline at end of file + self._starttime = checktime + if self._feed > 5: + self._feed = 5 + return self._feed \ No newline at end of file diff --git a/Animals/parrot.py b/Animals/parrot.py index 1873b53..b1e6ce2 100644 --- a/Animals/parrot.py +++ b/Animals/parrot.py @@ -16,17 +16,12 @@ class Parrot(Animal): - def feed(self): - self.getting_hungry() - if self._feed < 1.5: - return 'False' - else: - return 'True' - - def getting_hungry(self): checktime = datetime.now() delta = checktime - self._starttime - minutes_passed = delta.total_seconds() / 60 + minutes_passed = delta.total_seconds() / 20 self._feed += minutes_passed - self._starttime = checktime \ No newline at end of file + self._starttime = checktime + if self._feed > 5: + self._feed = 5 + return self._feed \ No newline at end of file diff --git a/Animals/penguin.py b/Animals/penguin.py index 830f176..be55982 100644 --- a/Animals/penguin.py +++ b/Animals/penguin.py @@ -14,19 +14,14 @@ class Penguin(Animal): super().__init__(x, y,name, Penguin_image, food_image,penguin_food,environment, adult) self._starttime = datetime.now() - - - def feed(self): - self.getting_hungry() - if self._feed < 2: - return 'False' - else: - return 'True' def getting_hungry(self): checktime = datetime.now() delta = checktime - self._starttime - minutes_passed = delta.total_seconds() / 60 + minutes_passed = delta.total_seconds() / 15 self._feed += minutes_passed - self._starttime = checktime \ No newline at end of file + self._starttime = checktime + if self._feed > 5: + self._feed = 5 + return self._feed \ No newline at end of file diff --git a/agent.py b/agent.py index bcfc27f..6c2e638 100644 --- a/agent.py +++ b/agent.py @@ -63,7 +63,7 @@ def feed_animal(self, animals, goal): if self.x == goal_x and self.y == goal_y: for animal in animals: if animal.x == goal_x and animal.y == goal_y: - if animal._feed < self._food : + if animal.getting_hungry() < self._food : self._food -= animal._feed animal._feed = 0 print(animal.name, "fed with", animal.food) @@ -79,5 +79,5 @@ def take_food(self): house_y = 1 if self.x == house_x and self.y == house_y: if self._food == 0: - self._food = 15 + self._food = 25 print("Agent took food and current food level is", self._food) diff --git a/images/almost_empty.png b/images/almost_empty.png new file mode 100644 index 0000000..f6b404d Binary files /dev/null and b/images/almost_empty.png differ diff --git a/images/empty_bowl.png b/images/empty_bowl.png new file mode 100644 index 0000000..975e256 Binary files /dev/null and b/images/empty_bowl.png differ diff --git a/images/full_bowl.png b/images/full_bowl.png new file mode 100644 index 0000000..9f45a3b Binary files /dev/null and b/images/full_bowl.png differ diff --git a/images/half_bowl.png b/images/half_bowl.png new file mode 100644 index 0000000..992ebab Binary files /dev/null and b/images/half_bowl.png differ diff --git a/main.py b/main.py index e747808..84d6851 100644 --- a/main.py +++ b/main.py @@ -97,7 +97,7 @@ def main(): spawn_obstacles() cost_map = generate_cost_map(Animals, Terrain_Obstacles) for animal in Animals: - animal._feed = 2 # Ustawienie, aby zwierzę było głodne + animal._feed = 3 spawned = True draw_Animals(Animals, const)