From b29f027943419328b962b38c56d438bbad82ae7a Mon Sep 17 00:00:00 2001 From: Yakudami Date: Thu, 30 Apr 2020 16:36:55 +0200 Subject: [PATCH] =?UTF-8?q?dodanie=20skr=C4=99cania=20i=20tekstury=20w?= =?UTF-8?q?=C3=B3zka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent.py | 30 ++++++++++++++++++++++++++++-- attributes.py | 9 ++++++++- forklift.png | Bin 0 -> 1103 bytes main.py | 14 +++++++------- 4 files changed, 43 insertions(+), 10 deletions(-) create mode 100755 forklift.png diff --git a/agent.py b/agent.py index 6271134..087f8cd 100644 --- a/agent.py +++ b/agent.py @@ -103,10 +103,36 @@ class Agent: return else: next = self.path.pop() + star_dir = self.direction print(next.x, next.y) - self.x = next.x - self.y = next.y + if self.x > next.x and not self.direction == 'left': + if self.direction == 'down': + self.turn_right() + else: + self.turn_left() + elif self.x < next.x and not self.direction == 'right': + if self.direction == 'down': + self.turn_left() + else: + self.turn_right() + elif self.y > next.y and not self.direction == 'up': + if self.direction == 'left': + self.turn_right() + else: + self.turn_left() + elif self.y < next.y and not self.direction == 'down': + if self.direction == 'right': + self.turn_right() + else: + self.turn_left() + + if star_dir == self.direction: + self.x = next.x + self.y = next.y + else: + self.path.append(next) self.closed = [] + def check_if_can_move(self, next_coords: Coordinates): tile_on_map = 0 <= next_coords.x < self.warehouse.width and 0 <= next_coords.y < self.warehouse.height if not tile_on_map: diff --git a/attributes.py b/attributes.py index f0f938c..204b476 100644 --- a/attributes.py +++ b/attributes.py @@ -41,4 +41,11 @@ TURN_RIGHT_DIRECTIONS = { "up": "right", "right": "down", "down": "left" -} \ No newline at end of file +} + +DIRECTION_ANGLES = { + "left": 0, + "up": -90, + "right": 180, + "down": 90 +} diff --git a/forklift.png b/forklift.png new file mode 100755 index 0000000000000000000000000000000000000000..7450bc5d1423d2cfa244472163354d75134c6943 GIT binary patch literal 1103 zcmV-V1hD&wP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY0FD3v0FD7`-`2?h00Xm0L_t(o!|jz#Xk1kk z$A9;}``(**laEOzA5)s7W=t27K%3NRTC75FVYLikLwtZsxbUaJc8(^Z(y-ph1HM z4gP0D9Wh6N7QppfD|hbX!QEyRREx+F1<>A_r znHwd}PA~J)6a7lnQNSz^0~w&ZxDnCUk>rc-Z!wn_L}7?h7O7Oz8(=U7eBY2s6?Szs6HPAAmvQJwwlg=q z4nVUFgMDqx_p~{euFkCV@9bzF$)(k2Qww~0=@xA%Tc3D#z>M6NwklzGKmjA$NbnBu zDsUS38Q5bhNfgH@OA>}5K@ebB764Hc;rl*X$8i+nHzh1qih-HESrS8iEp)azrsPMV zlvseN#{)UwOW+vL3Y`4AJpu@VfNVC)=;$Z_Qc5zJ44!TDVu|c`S5{R|dqTUme6GXA0v=ND=LPc1XxFd2s9r(Q_!6!8dN(P#! z8OCuO78e(pnwo;zxuc^KscaKL#j*s4hr7cIzvk`sCP!q`Zd}?3LjegOrGU%Zn6L|Q zfahy*8)2kTmO~V4Y}>|h9O5|Me34Rko`;mu0+I{2E6gpHWoN4^JjWu_>)lg)-ws;XY(6oJl8sS_N@a9^)~<0AmZ*pG&b1A z<9oU(`XQYyE@7mN5CRQisZasKWA}6v7kn+&{6Mc)V(;SB{PbnJ$}W^c3gtU7#o_UZH@CSbf7ddqOkQ2BBYlGg4I12I{sNp( Vimp=d7Ht3k002ovPDHLkV1hy5@uvU) literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 5d43c83..ee832a2 100644 --- a/main.py +++ b/main.py @@ -3,23 +3,24 @@ import warehouse import agent import random import sys -from attributes import PackSize, PackStatus, COLORS +from attributes import PackSize, PackStatus, COLORS, DIRECTION_ANGLES -WINDOW_SIZE = (600, 600) +WINDOW_SIZE = (640, 640) COLOR_OF_FIELD = { 'Floor': 'gray', 'Rack': 'white', 'Pack': 'yellow', 'path': 'orange' } -TILE_WIDTH = 30 -TILE_HEIGHT = 30 +TILE_WIDTH = 32 +TILE_HEIGHT = 32 CIRCLE_CENTER_X, CIRCLE_CENTER_Y = int(TILE_WIDTH/2), int(TILE_HEIGHT/2) class MainGameFrame: def __init__(self): self.display = pygame.display.set_mode(WINDOW_SIZE) agent_radius = int(TILE_WIDTH/2) + self.agent_tex = pygame.image.load('forklift.png') self.warehouse_map = warehouse.Warehouse(20, 20, 150, 20) starting_x, starting_y = self.set_starting_agent_position() self.agent = agent.Agent(starting_x, starting_y, self.warehouse_map, agent_radius) @@ -78,9 +79,8 @@ class MainGameFrame: ((pack_x * TILE_WIDTH) + 3, (pack_y * TILE_HEIGHT) + 3, TILE_WIDTH - 5, TILE_HEIGHT - 5)) def draw_agent(self): - agent_position_x, agent_position_y = self.agent.x, self.agent.y - agent_screen_position = ((agent_position_x*TILE_WIDTH) + CIRCLE_CENTER_X, (agent_position_y*TILE_HEIGHT) + CIRCLE_CENTER_Y) - pygame.draw.circle(self.display, COLORS['black'], agent_screen_position, self.agent.radius, int(self.agent.radius/2)) + rotated = pygame.transform.rotate(self.agent_tex, DIRECTION_ANGLES.get(self.agent.direction)) + self.display.blit(rotated, (self.agent.x*TILE_WIDTH, self.agent.y*TILE_WIDTH)) def set_starting_agent_position(self): starting_x, starting_y = random.randrange(self.warehouse_map.width), random.randrange(self.warehouse_map.height)