Guest User

Untitled

a guest
Dec 11th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. class TargetPriority(enum.Enum):
  2. LOW_HEALTH = 1
  3. HIGH_HEALTH = 2
  4. FIRST = 3
  5. LAST = 4
  6. CLOSEST = 5
  7.  
  8.  
  9. class Tower(Entity):
  10. def __init__(self, *args, **kwargs, target_priority=TargetPriority.FIRST):
  11. super().__init__(*args, **kwargs)
  12. self.target_priority = target_priority
  13.  
  14. def find_target(self, all_monsters):
  15. sort_functions = {
  16. TargetPriority.LOW_HEALTH: lambda monster: monster.health,
  17. TargetPriority.HIGH_HEALTH: lambda monster: -monster.health,
  18. TargetPriority.FIRST: ???,
  19. TargetPriority.LAST: ???,
  20. TargetPriority.CLOSEST: self.distance_to,
  21. }
  22. func = sort_functions[self.target_priority]
  23. return next(sorted(all_monsters, key=func), None)
  24.  
  25. class Monster(Entity):
  26. def __init__(self, *args, **kwargs, health, checkpoint):
  27. super().__init__(*args, **kwargs)
  28. self.health = health
  29. self.checkpoint = checkpoint
  30.  
  31. def update(self, dt):
  32. travel = self.velocity / 1000 * dt
  33. remaining_distance = self.distance_to(self.checkpoint)
  34. if travel.length < remaining_distance:
  35. self.position += travel
  36. else:
  37. self.checkpoint.check_in(self)
  38.  
  39. self.position += travel
  40. self.total_distance_travelled += travel.length
Add Comment
Please, Sign In to add comment