class Enemy(pygame.sprite.Sprite): def __init__(self, health, manager, x, game, asset): super().__init__() self.game = game self.health = health self.asset = asset self.velocity = 1 self.image = pygame.image.load('assets/enemy.png') self.image = pygame.transform.scale(self.image, (50, 50)) self.ennemyImage = UIImage(relative_rect=pygame.Rect((0, 0), (50, 50)), manager=manager, image_surface=self.image) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = -100 def down(self): if not self.game.checkColision(self, self.game.allPlayers): self.rect.y += self.velocity self.ennemyImage.set_position((self.rect.x, self.rect.y)) else: if self.game.player.hit(): self.remove() if self.rect.y > 530: self.game.score -= 50 self.game.setLabelScore() self.remove() def remove(self): self.ennemyImage.kill() self.game.allEnemy.remove(self)
class Missile(pygame.sprite.Sprite): def __init__(self, player, manager, x): super().__init__() self.velocity = 10 self.player = player self.image = pygame.image.load('assets/missile.png') self.image = pygame.transform.scale(self.image, (10, 50)) # self.rectImage = self.image.get_rect() self.missileImage = UIImage(relative_rect=pygame.Rect( (self.player.rect.x + 25 - 5, self.player.rect.y - 50), (10, 50)), manager=manager, image_surface=self.image) self.rect = self.image.get_rect() self.rect.x = player.rect.x + 25 - 5 + x self.rect.y = player.rect.y - 50 def remove(self): self.player.allMissile.remove(self) self.missileImage.kill() def hit(self, enemy): if enemy.health > 0: enemy.health -= self.player.damage return True def isDead(self, enemy): if enemy.health <= 0: return True return False def move(self): self.rect.y -= self.velocity self.missileImage.set_position((self.rect.x, self.rect.y)) if self.player.game.checkColision(self, self.player.game.allEnemy): for enemy in self.player.game.checkColision( self, self.player.game.allEnemy): self.hit(enemy) if self.isDead(enemy): enemy.remove() self.player.getSurprise(enemy.asset) enemy.ennemyImage.kill() self.player.game.score += self.player.game.addScore self.player.game.setLabelScore() self.player.game.setLabelCredit() self.remove() if self.rect.y < 0: self.remove()