import pygame from config import * class Agent(pygame.sprite.Sprite): def __init__(self, game, x, y): self.game = game self.groups = self.game.all_sprites pygame.sprite.Sprite.__init__(self, self.groups) self.x = x * TILE_SIZE self.y = y * TILE_SIZE self.width = TILE_SIZE self.height = TILE_SIZE self.x_change = 0 self.y_change = 0 self.AGENT_IMG = pygame.image.load("./zdjecia/gandalf.png") self.AGENT = pygame.transform.scale(self.AGENT_IMG,(64,64)) self.image = pygame.Surface([self.width, self.height]) self.image.blit(self.AGENT, (0,0)) self.image.set_colorkey((0, 0, 0)) self.rect = self.image.get_rect() self.rect.x = self.x self.rect.y = self.y self.level = 1 def update(self): self.movement() self.collide_mob() 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 def movement(self): keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and self.rect.x > 0: self.x_change -= TILE_SIZE if keys[pygame.K_RIGHT] and self.rect.x < 832 - 64: self.x_change += TILE_SIZE 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 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 def collide_mob(self): hits_archer_ork = pygame.sprite.spritecollide(self, self.game.archer_orks, False) hits_infantry_ork = pygame.sprite.spritecollide(self, self.game.infantry_orks, False) hits_infantry_ork2 = pygame.sprite.spritecollide(self, self.game.infantry_orks2, False) hits_sauron = pygame.sprite.spritecollide(self, self.game.sauronL, False) if hits_archer_ork: if self.game.archer_ork.level > self.level: self.kill() self.game.new() else: self.game.archer_ork.kill() if hits_infantry_ork: if self.game.infantry_ork.level > self.level: self.kill() self.game.new() else: self.game.infantry_ork.kill() if hits_infantry_ork2: if self.game.infantry_ork2.level > self.level: self.kill() self.game.new() else: self.game.infantry_ork2.kill() if hits_sauron: if self.game.sauron.level > self.level: self.kill() self.game.new() else: self.game.sauron.kill() # brakuje levelowania postaci gdy zabije moba, jest zrobione tylko, że jeśli za wysoki poziom to ginie i od nowa zaczyna