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
def test_create_defensive_guide(): return pathfind.create_defensive_guide(3, [(5, 9)], world_array)