Exemple #1
0
 def assign_defense(self, ants):
     # "Assign defensive perimeter based on attack radius"
     # l.log_on = True
     a = []
     num_hills = max(len(self.my_hills), 1)
     ant_hill_ratio = self.total_ants / num_hills
     defense_guide, num_dest, run_status = pathfind.create_defensive_guide(
         self.attack_radius - 1, self.my_hills, self.level_tiles_seen, ants
     )
     if run_status == "stop":
         return ["stop"]
     if ant_hill_ratio >= 4 and ant_hill_ratio <= 7:
         ant_num = 1 * num_hills
     elif ant_hill_ratio > 7:
         ant_num = min(self.total_ants / 7, num_dest) * num_hills
     else:
         ant_num = 0
     if ant_num > 0:
         rankings = self.rank_ants_proximity(defense_guide)
         # l.log("Rankings: ", rankings)
         for ant in rankings:
             if self.ant_lookup[ant] == None:
                 self.ant_lookup[ant] = defense_guide
                 a.append(ant)
             if len(a) >= ant_num:
                 # l.log("Defense Ants: ", str(len(a)) + ' ' + str(a))
                 # l.log("Defense Guide: \n", util.array_to_string(defense_guide, True))
                 return a
             # l.log("Defense Ants: ", str(len(a)) + ' ' + str(a))
             # l.log("Defense Guide: \n", util.array_to_string(defense_guide, True))
     return a
Exemple #2
0
def test_create_defensive_guide():
  return pathfind.create_defensive_guide(3, [(5, 9)], world_array)