diff --git a/__pycache__/agent.cpython-310.pyc b/__pycache__/agent.cpython-310.pyc index 8c9f5e9..7a51826 100644 Binary files a/__pycache__/agent.cpython-310.pyc and b/__pycache__/agent.cpython-310.pyc differ diff --git a/__pycache__/map_add_ons.cpython-310.pyc b/__pycache__/map_add_ons.cpython-310.pyc index 2e6e836..1b7c964 100644 Binary files a/__pycache__/map_add_ons.cpython-310.pyc and b/__pycache__/map_add_ons.cpython-310.pyc differ diff --git a/agent.py b/agent.py index 52a2876..5600741 100644 --- a/agent.py +++ b/agent.py @@ -34,7 +34,9 @@ class Agent(pygame.sprite.Sprite): self.movement() self.rect.x += self.x_change + self.collide_blocks('x') self.rect.y += self.y_change + self.collide_blocks('y') self.x_change = 0 self.y_change = 0 @@ -48,4 +50,21 @@ class Agent(pygame.sprite.Sprite): if keys[pygame.K_UP] and self.rect.y > 0: self.y_change -= TILE_SIZE if keys[pygame.K_DOWN] and self.rect.y < 832 - 64: - self.y_change += TILE_SIZE \ No newline at end of file + self.y_change += TILE_SIZE + + def collide_blocks(self, direction): + if direction == "x": + hits = pygame.sprite.spritecollide(self,self.game.rock_sprites, False) + if hits: + if self.x_change > 0: + self.rect.x = hits[0].rect.left - self.rect.width + if self.x_change < 0: + self.rect.x = hits[0].rect.right + + if direction == "y": + hits = pygame.sprite.spritecollide(self,self.game.rock_sprites, False) + if hits: + if self.y_change > 0: + self.rect.y = hits[0].rect.top - self.rect.height + if self.y_change < 0: + self.rect.y = hits[0].rect.bottom diff --git a/main.py b/main.py index e846585..4f08412 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,7 @@ class Game: def new(self): # tworzy się nowa sesja grania self.all_sprites = pygame.sprite.LayeredUpdates() - self.rock_sprites = pygame.sprite.Group() + self.rock_sprites = pygame.sprite.LayeredUpdates() self.agent = Agent(self,1,1) self.archer_ork = Archer_ork(self,10,10) self.infantry_ork = Infantry_ork(self,5,10) @@ -35,8 +35,7 @@ class Game: def update(self): # update postaci na mapie, związane z poruszaniem się self.all_sprites.update() - pygame.sprite.spritecollide(self.agent, self.rock_sprites, True) - #ograniczyć ruch agenta gdy jest kolizja ze skałami + def events(self): for event in pygame.event.get(): diff --git a/map_add_ons.py b/map_add_ons.py index 8167430..7a2c052 100644 --- a/map_add_ons.py +++ b/map_add_ons.py @@ -5,7 +5,7 @@ class Rocks(pygame.sprite.Sprite): def __init__(self,game,x,y): self.game = game - self.groups = self.game.rock_sprites + self.groups = self.game.all_sprites, self.game.rock_sprites pygame.sprite.Sprite.__init__(self, self.groups) self.x = x * TILE_SIZE