From 654ab9f92f674da45f46c21f6c38fae0f8f1239a Mon Sep 17 00:00:00 2001 From: LuminoX Date: Sun, 24 Mar 2024 17:33:58 +0100 Subject: [PATCH] losowe spawn zwierzat, sprawdzanie typu wybiegu, dodanie bramek --- animal.py | 5 +++-- bear.py | 3 ++- elephant.py | 5 +++-- enclosure.py | 27 ++++++++++++++++++++++++--- giraffe.py | 3 ++- images/gate.png | Bin 0 -> 26081 bytes main.py | 47 ++++++++++++++++++++++++++++++++--------------- parrot.py | 3 ++- penguin.py | 3 ++- spawner.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 113 insertions(+), 26 deletions(-) create mode 100644 images/gate.png create mode 100644 spawner.py diff --git a/animal.py b/animal.py index b8491f6..2059ffe 100644 --- a/animal.py +++ b/animal.py @@ -2,7 +2,7 @@ import pygame from abc import ABC, abstractmethod class Animal: - def __init__(self, x, y,name, image, food_image, food, adult=False): + def __init__(self, x, y,name, image, food_image, food, environment, adult=False,): self.x = x - 1 self.y = y - 1 self.name = name @@ -10,7 +10,8 @@ class Animal: self.adult = adult self.food = food self.food_image = food_image - self._feed = 0 #nowe zwierze jest głodne + self._feed = 0 + self.environment = environment #hot/cold/medium def draw(self, screen, grid_size): self.image = pygame.transform.scale(self.image, (grid_size, grid_size)) diff --git a/bear.py b/bear.py index 7420f94..e0aafe3 100644 --- a/bear.py +++ b/bear.py @@ -8,9 +8,10 @@ class Bear(Animal): def __init__(self, x, y, adult=False): Bear_image = pygame.image.load('images/bear.png') name = 'bear' + environment = "cold" bear_food = 'meat' food_image = 'images/meat.png' - super().__init__(x, y,name, Bear_image, food_image,bear_food, adult) + super().__init__(x, y,name, Bear_image, food_image,bear_food,environment, adult) self._starttime = datetime.now() diff --git a/elephant.py b/elephant.py index 19698d7..4e63bfb 100644 --- a/elephant.py +++ b/elephant.py @@ -7,7 +7,8 @@ from datetime import datetime class Elephant(Animal): def __init__(self, x, y, adult=False): Elephant_image = pygame.image.load('images/elephant.png') - name = 'elphant' + name = 'elephant' + environment = "hot" if adult: elephant_food = 'leavs' food_image = 'images/leaves.png' @@ -15,7 +16,7 @@ class Elephant(Animal): elephant_food = 'milk' food_image = 'images/milk.png' - super().__init__(x, y,name, Elephant_image, food_image,elephant_food, adult) + super().__init__(x, y,name, Elephant_image, food_image,elephant_food, environment, adult) self._starttime = datetime.now() diff --git a/enclosure.py b/enclosure.py index dc80a67..2a79c52 100644 --- a/enclosure.py +++ b/enclosure.py @@ -1,18 +1,38 @@ import pygame class Enclosure: - def __init__(self, x1, y1, x2, y2, type, imageH, imageV): + def __init__(self, x1, y1, x2, y2, gate, type, imageH, imageV, imageGate): self.x1 = x1 - 1 self.y1 = y1 - 1 #(x1,y1) - wierzchołek przekątnej self.x2 = x2 - 1 self.y2 = y2 - 1 #(x2,y2) - 2 wierzchołek przekątnej - self.type = type #hot/cold/medium + self.gate = gate + self.type = type self.imageH = imageH self.imageV = imageV + self.imageGate = imageGate - def draw(self, screen, grid_size, blocked_fields): + def gatebuild(self, screen, grid_size): + self.imageGate = pygame.transform.scale(self.imageGate, (grid_size, grid_size)) + gate_x, gate_y = self.gate + gate_x-=1 + gate_y-=1 + rect = pygame.Rect(gate_x * grid_size, gate_y * grid_size, grid_size, grid_size) + pygame.draw.rect(screen, (0, 0, 0), rect) # Fill the area with + screen.blit(self.imageGate, (gate_x * grid_size, gate_y * grid_size)) + + def gateopen(self, blocked): + gate_x, gate_y = self.gate + gate_x -= 1 + gate_y -= 1 + if (gate_x, gate_y) in blocked: + blocked.remove((gate_x, gate_y)) + + + + def draw(self,screen, grid_size , blocked_fields): self.imageH = pygame.transform.scale(self.imageH, (grid_size, grid_size)) self.imageV = pygame.transform.scale(self.imageV, (grid_size, grid_size)) if self.x1 < self.x2: @@ -56,3 +76,4 @@ class Enclosure: + diff --git a/giraffe.py b/giraffe.py index bfb64b9..f5c191f 100644 --- a/giraffe.py +++ b/giraffe.py @@ -8,9 +8,10 @@ class Giraffe(Animal): def __init__(self, x, y, adult=False): Giraffe_image = pygame.image.load('images/giraffe.png') name = 'giraffe' + environment = "hot" food_image = 'images/leaves.png' giraffe_food = 'leaves' - super().__init__(x, y,name, Giraffe_image, food_image,giraffe_food, adult) + super().__init__(x, y,name, Giraffe_image, food_image,giraffe_food, environment, adult) self._starttime = datetime.now() diff --git a/images/gate.png b/images/gate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f062fa3f4def20843e2e2e6f9944d7be0b03c3e GIT binary patch literal 26081 zcmeFZXH=8h8a4XH2sRKE5CH+Vs7MVRslft>2#9o%VxbEtHPpndh=71fZvjC-x^#h1 zlqS6iC?)h>Lg+1U*Nc1av(Jxn$2aa6_uu!!$jFdYpE930pQY~|H6_}kEJq;-qE)_m z<1Pdp06!jp4pW1_Rxm%dz+Xq6-qd%1pkws#9|RN?a|VLWLCQC-YGGpL%MM}A>bfQK z29@E-Z?b!gd~$l&Q>5J|7u?FEN1sI%pXOw-z-gREyoYX@s{LGbb5RiTRlfb*_v-oA zG`I2!&+0svq-Q=S|Jd)y1%#kq$IGrJ3q_V3TS}Lq$%oRk(zMwasV*O5bgSzH@jImH zz4$E;L+`OGk16zcXYVOoN6^VERwBX2PE#|X;^(pS;nlZ1Z({w=OoT>18Y52sF} zZtA8b!s^9;?fJhJ zgu05?`ilE|4JWXFpJuE2e}?+cw?QKRU-tZ82h|6;{_8HTztldyfB)d)$oRkR`M>tu z>i*xi`Miox?L;iKo|Gnq`a)|21|Gmxs7w`CA)_Q78nUUsimpVlL$M1Hu z{#n_-zP+;izf7t1fA9Ifd@hgnE!Y1I0{=vg{~HAUZxHzZKM0_TF&EQ?<$8?YZH8Bc zMyeb32N!!jZXM~(nYm~e&@+}#{M5)+u3t1a(p-`>T4d#5*Pmv*wObQ=Y&WO$;qIR7 z9q~QnR*}w+xOP(iCqp-~l~YS`y7sS>EG>cELESaJtYWRm0-KL+!|xlr^!M87$bTNf zH~keX`t-sY5{c5s{0{1}OW#8oTlcQnZT?x|VZJ_EOd=4THjm3jN@r`EQ7C#& z6J!G?e>dB1{$jy<(VI8MoCds^m9)Q7F5j)T@pX!^pB}Gi_|T;p`e@dirzhRPaCyqb zPC|x^2#|Wy&G$=!z-z7XU@f6_i%deWW0ZeqncxtYGT})VMQh|8y4-flKy7~zXHCpe-<<(P_mS*ymv#QK?A$&4s~`1H+a1}^ zzb$X3%OMgvGHEft&T85Ikgd6~6A(vorqFW)>7Z`Sb4PW0Y>sC{ zKkE8r`Z!`|W1Wgl#`rhHcpu_2Jw7+coNl!8t-0hP*MjKd3U^Xh(t2ifU*-mDW9+Mb zj=0_{6rU0VMul zAiAumwEJGBIfeKkoq=5UM`Hf#{hKW#t&R2-xI=jBeGp@GiX8YPa=DbrSpQ2wqD4zw zT(deyc`jFDm`NT3I7dxv1uxpr)xCycJYbR|_Hwhqiy2L^ZLU>Tr^b-Z=mQPAp_(Db zN^>K8E6D35M<*`ZWqW8%^Sa))2|7gTO!(HGR%31P@?zuy(_-bLhW*o4IY4Z~*9m9o zn3YTFLQ%DP^)Tq`RB$wwD5OU|m-41Q-NZbtAlXmUm3s;rZ}@gF%4 zuGx+Tr%CE1_kU{EuC>k$ZJ()WC@9l!xH*1pya7+ukQ6@2JL%G_`^u%MtD!AWvSBFj zSA(>bqS3(%9(!Nj5KH4f7Pubs<7O$5vHGI45xYh1y;(*>uR?*2&G<4ROKWh*9=c|W~H5}j||PJ`}84LzScvJXI8 zl?d&!$9C^CQm(tO+Ix-M$WUHU-l5BgN;qpEaouw%0Dt=C?VWILlK2Eq(M;GU_1Tq! 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index ca708be..230a7f8 100644 --- a/main.py +++ b/main.py @@ -7,6 +7,7 @@ from parrot import Parrot from bear import Bear from agent import Agent from enclosure import Enclosure +from spawner import Spawner BLACK = (0, 0, 0) @@ -26,9 +27,10 @@ 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') -blocked = set() +fences = set() @@ -41,11 +43,11 @@ an4 = Elephant(4,3) Animals = [an1, an2, an3, an4, old_an1, old_an2] -en1 = Enclosure(1,5,9,11,"medium", fenceH, fenceV) -en2 = Enclosure(29,3, 13,1, 'medium', fenceH, fenceV) -en3 = Enclosure(11,5, 16,11, 'cold', fenceH, fenceV) -en4 = Enclosure(19,11, 30,5, 'hot', fenceH, fenceV) -en5 = Enclosure(4,13, 28,15, 'cold', fenceH, fenceV) +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] @@ -57,9 +59,17 @@ def draw_grid(): rect = pygame.Rect(x, y, GRID_SIZE, GRID_SIZE) pygame.draw.rect(screen, BLACK, rect, 1) -def draw_enclosures(set): +def draw_enclosures(): for enclosure in Enclosures: - enclosure.draw(screen, GRID_SIZE, blocked) + 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) def draw_Animals(): for Animal in Animals: @@ -69,28 +79,35 @@ def draw_Animals(): else: Animal.draw_food(screen,GRID_SIZE,Animal.x,Animal.y) +def spawn_all_animals(): + for Animal in Animals: + spawner1 = Spawner(Animal, Enclosures) + spawner1.spawn_animal(fences) + def main(): 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, blocked) + agent.handle_event(event, GRID_HEIGHT, GRID_WIDTH, Animals, fences) screen.blit(background_image,(0,0)) draw_grid() - draw_enclosures(blocked) - #draw_Animals() - - - + draw_enclosures() + draw_gates() + if not spawned: + spawn_all_animals() + spawned = True + draw_Animals() + opengates() agent.draw(screen) pygame.display.flip() clock.tick(10) diff --git a/parrot.py b/parrot.py index 6a7728f..1873b53 100644 --- a/parrot.py +++ b/parrot.py @@ -8,9 +8,10 @@ class Parrot(Animal): def __init__(self, x, y, adult=False): Parrot_image = pygame.image.load('images/parrot.png') name = 'parrot' + environment = "medium" food_image = 'images/grains.png' parrot_food = 'grains' - super().__init__(x, y,name, Parrot_image, food_image,parrot_food, adult) + super().__init__(x, y,name, Parrot_image, food_image,parrot_food, environment, adult) self._starttime = datetime.now() diff --git a/penguin.py b/penguin.py index 8982e5f..830f176 100644 --- a/penguin.py +++ b/penguin.py @@ -8,9 +8,10 @@ class Penguin(Animal): def __init__(self, x, y, adult=False): Penguin_image = pygame.image.load('images/penguin.png') name = 'penguin' + environment = "cold" food_image = 'images/fish.png' penguin_food = 'fish' - super().__init__(x, y,name, Penguin_image, food_image,penguin_food, adult) + super().__init__(x, y,name, Penguin_image, food_image,penguin_food,environment, adult) self._starttime = datetime.now() diff --git a/spawner.py b/spawner.py new file mode 100644 index 0000000..5dde57a --- /dev/null +++ b/spawner.py @@ -0,0 +1,43 @@ +import random + + +class Spawner: + def __init__(self, animal, enclosures): + self.animal = animal + self.enclosures = enclosures + + def spawn_animal(self, blocked): + possibilities = self.enclosures + fitting = [] + for option in possibilities: + if option.type == self.animal.environment: + fitting.append(option) + enclosure = random.choice(fitting) + while True: + if enclosure.x1 < enclosure.x2: + self.animal.x = random.randint(enclosure.x1, enclosure.x2) + if enclosure.y1 < enclosure.y2: + self.animal.y = random.randint(enclosure.y1, enclosure.y2) + if enclosure.y1 > enclosure.y2: + self.animal.y = random.randint(enclosure.y2, enclosure.y1) + if enclosure.x1 > enclosure.x2: + self.animal.x = random.randint(enclosure.x2, enclosure.x1) + if enclosure.y1 < enclosure.y2: + self.animal.y = random.randint(enclosure.y1, enclosure.y2) + if enclosure.y1 > enclosure.y2: + self.animal.y = random.randint(enclosure.y2, enclosure.y1) + if self.check(blocked): + break + + def check(self, blocked): + x = self.animal.x + y = self.animal.y + if (x,y) in blocked: + return False + return True + + + + + +