Male_zoo_Projekt_SI/main.py

118 lines
3.0 KiB
Python
Raw Normal View History

import pygame
import sys
2024-03-22 16:59:39 +01:00
from elephant import Elephant
2024-03-22 20:11:58 +01:00
from giraffe import Giraffe
from penguin import Penguin
from parrot import Parrot
from bear import Bear
2024-03-22 16:59:39 +01:00
from agent import Agent
from enclosure import Enclosure
from spawner import Spawner
BLACK = (0, 0, 0)
2024-03-22 20:11:58 +01:00
GRID_SIZE = 50
GRID_WIDTH = 30
GRID_HEIGHT = 15
pygame.init()
WINDOW_SIZE = (GRID_WIDTH * GRID_SIZE, GRID_HEIGHT * GRID_SIZE)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Mini Zoo")
2024-03-22 16:59:39 +01:00
2024-03-22 20:11:58 +01:00
background_image = pygame.image.load('images/tło.jpg')
background_image = pygame.transform.scale(background_image, WINDOW_SIZE)
fenceH = pygame.image.load('images/fenceHor.png')
fenceV = pygame.image.load('images/fenceVer.png')
gate = pygame.image.load('images/gate.png')
fences = set()
2024-03-24 17:46:13 +01:00
animals_position = set()
2024-03-23 13:55:16 +01:00
an1 = Parrot(16, 2)
an2 = Penguin(8, 6)
an3 = Bear(14, 9)
2024-03-22 20:11:58 +01:00
old_an2 = Giraffe(18,4, adult=True)
2024-03-23 13:55:16 +01:00
old_an1 = Elephant(4, 7, adult=True)
an4 = Elephant(4,3)
2024-03-23 13:55:16 +01:00
Animals = [an1, an2, an3, an4, old_an1, old_an2]
2024-03-10 17:40:26 +01:00
en1 = Enclosure(1,5,9,11,(9,6),"medium", fenceH, fenceV, gate)
en2 = Enclosure(29,3, 13,1,(16,3), 'medium', fenceH, fenceV, gate)
en3 = Enclosure(11,5, 16,11, (12,5),'cold', fenceH, fenceV, gate)
en4 = Enclosure(19,11, 30,5, (25,5),'hot', fenceH, fenceV, gate)
en5 = Enclosure(4,13, 28,15, (16,13),'cold', fenceH, fenceV, gate)
Enclosures = [en1, en2, en3, en4, en5]
def draw_grid():
for y in range(0, GRID_HEIGHT * GRID_SIZE, GRID_SIZE):
for x in range(0, GRID_WIDTH * GRID_SIZE, GRID_SIZE):
rect = pygame.Rect(x, y, GRID_SIZE, GRID_SIZE)
pygame.draw.rect(screen, BLACK, rect, 1)
def draw_enclosures():
for enclosure in Enclosures:
enclosure.draw(screen, GRID_SIZE, fences)
def draw_gates():
for enclosure in Enclosures:
enclosure.gatebuild(screen, GRID_SIZE)
def opengates():
for enclosure in Enclosures:
enclosure.gateopen(fences)
2024-03-22 16:59:39 +01:00
2024-03-22 17:16:34 +01:00
def draw_Animals():
for Animal in Animals:
Animal.draw(screen, GRID_SIZE)
if Animal.feed() == 'True':
2024-03-23 13:55:16 +01:00
Animal.draw_exclamation(screen, GRID_SIZE, Animal.x, Animal.y)
else:
Animal.draw_food(screen,GRID_SIZE,Animal.x,Animal.y)
def spawn_all_animals():
for Animal in Animals:
spawner1 = Spawner(Animal, Enclosures)
2024-03-24 17:46:13 +01:00
spawner1.spawn_animal(fences, animals_position)
2024-03-10 17:40:26 +01:00
def main():
2024-03-22 20:11:58 +01:00
agent = Agent(0, 0, 'images/avatar.png', GRID_SIZE)
clock = pygame.time.Clock()
spawned = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
agent.handle_event(event, GRID_HEIGHT, GRID_WIDTH, Animals, fences)
2024-03-22 17:16:34 +01:00
screen.blit(background_image,(0,0))
draw_grid()
draw_enclosures()
draw_gates()
if not spawned:
spawn_all_animals()
spawned = True
draw_Animals()
opengates()
2024-03-22 16:59:39 +01:00
agent.draw(screen)
pygame.display.flip()
clock.tick(10)
if __name__ == "__main__":
main()