def update(self, screen, timer, player, enemy_sprites, item_sprites, interface): #move peon toward player if self.tracker: dx = player.rect.centerx - self.rect.centerx dy = player.rect.centery - self.rect.centery toPlayer = get_u(dx, dy) self.rect.centerx += toPlayer[0]*self.speed self.rect.centery += toPlayer[1]*self.speed #move linear elif self.direction == 'left': if self.rect.centerx > 20: self.rect.centerx -= self.speed else: self.grabGold(timer, item_sprites, interface) #return with gold elif self.direction == 'right': self.rect.centerx += self.speed+4 self.gold.rect.center = self.rect.center self.hitBox.center = self.rect.center #kill minion if dead if self.hitPoints <= 0: player.totalPoints += self.points self.kill() #or offscreen if self.rect.centerx > screen.get_width()+30: self.kill()
def update(self, screen, timer, player, enemy_sprites, item_sprites, interface): # hp bar pygame.draw.rect(screen, (0, 0, 0), (5, 459, 506, 18)) pygame.draw.rect(screen, (255, 0, 0), (8, 462, 500, 12)) if self.hitPoints > 0: pygame.draw.rect(screen, (0, 255, 0), (8, 462, self.hitPoints * 5, 12)) else: # boss died, drop powerup if player.largeFireball == False: item_sprites.add(minions.LargeFireball(self.rect.center)) player.totalPoints += self.points enemy_sprites.remove(self) # make kingknight flash red when hit if timer - self.hit_timer > 0.05: self.image = king_knight # move kingknight toward player dx = player.rect.centerx - self.rect.centerx dy = player.rect.centery - self.rect.centery toPlayer = get_u(dx, dy) self.rect.centerx += toPlayer[0] * self.speed self.rect.centery += toPlayer[1] * self.speed self.head = self.getHead() self.chest = self.getChest() self.legs = self.getLegs() self.hitBoxes = [self.head, self.chest, self.legs]
def update(self, player, dragon, enemy_sprites, projectile_sprites, item_sprites, screen, interface): # Change player angle mousePos = pygame.mouse.get_pos() playerRect = player.rect.center dx1 = mousePos[0] - playerRect[0] dy1 = mousePos[1] - playerRect[1] angle = math.atan2(-dy1, dx1)/math.pi*180 playerRot = pygame.transform.rotozoom(dragon,angle, 1) player.image = playerRot player.rect = player.image.get_rect(center = player.rect.center) # 3 - Event processing for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # create fireball on left mouse event elif event.type == pygame.MOUSEBUTTONDOWN: mouse = pygame.mouse.get_pos() dx = mouse[0] - player.rect.centerx dy = mouse[1] - player.rect.centery angle = math.atan2(dy, dx) u = get_u(dx, dy) #small fireball if event.button == LEFT: self.shoot.play() fireball = SmallFireball(angle, u, player) img = fireball.image angle = angle / math.pi * 180 fireball.image = pygame.transform.rotate(img, -angle) projectile_sprites.add(fireball) #large fireball if event.button == 3 and self.largeFireball == True and self.rightclick_cd <= 0: self.rightclick_cd = 3 self.shootbig.play() fireball = projectiles.BigFireball(angle, u, player) self.largeFireballId += 1 img = fireball.image angle = angle / math.pi * 180 fireball.image = pygame.transform.rotate(img, -angle) projectile_sprites.add(fireball) # fly toward mouse on spacebar if (event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE and self.flycd <= 0): mouse = pygame.mouse.get_pos() dx = mouse[0] - self.rect.centerx dy = mouse[1] - self.rect.centery angle = math.atan2(-dy, dx) angle = angle / math.pi * 180 self.flyAngle = angle self.flycd = 1 self.flyDuration = .2 # player movement if event.type == pygame.KEYDOWN: if event.key==K_w: keys[0]=True elif event.key==K_a: keys[1]=True elif event.key==K_s: keys[2]=True elif event.key==K_d: keys[3]=True if event.type == pygame.KEYUP: if event.key==pygame.K_w: keys[0]=False elif event.key==pygame.K_a: keys[1]=False elif event.key==pygame.K_s: keys[2]=False elif event.key==pygame.K_d: keys[3]=False # make player fly for duration if self.flyDuration <= .2 and self.flyDuration > 0: #self.rect.centerx += math.cos(self.flyAngle)*10 #self.rect.centery += math.sin(self.flyAngle)*10 u = get_u(dx1, dy1) self.rect.centerx += u[0]*18 self.rect.centery += u[1]*18 # move player if keys[0]: self.rect.centery -= 5 elif keys[2]: self.rect.centery += 5 if keys[1]: self.rect.centerx -= 5 elif keys[3]: self.rect.centerx += 5 self.hitBox.center = self.rect.center # Check for player vs enemy collisions for enemy in enemy_sprites: for box in enemy.hitBoxes: while self.hitBox.colliderect(box): self.hitPoints -= 20 #push dragon away from enemy collision if self.rect.centerx < box.centerx: self.rect.centerx -= 50 elif self.rect.centerx > box.centerx: self.rect.centerx += 50 if self.rect.centery < box.centery: self.rect.centery -= 50 elif self.rect.centery > box.centery: self.rect.centery += 50 self.hitBox.center = self.rect.center #check for item collisions for item in item_sprites: if self.hitBox.colliderect(item.rect): if hasattr(item, 'value'): interface.goldTotal += item.value if type(item) == minions.LargeFireball: self.largeFireball = True item.kill()