Exemplo n.º 1
0
    def do_setup(self, ants):
        self.rows = ants.rows
        self.cols = ants.cols
        #random.seed(ants.player_seed)

        #self.explore_map = ExploreMap(self.rows, self.cols, 3, ants.viewradius2)
        #self.explore_map = DiffusionMap.DiffusionMap(self.rows, self.cols, ants.viewradius2)
        self.explore_map = SimpleExploreMap(self.rows, self.cols)

        # precalculate squares around an ant, of radius sqrt(rad2)
        def get_pre_radius(rad2):
            offsets = []
            mx = int(sqrt(rad2))
            for d_row in range(-mx,mx+1):
                for d_col in range(-mx,mx+1):
                    d = d_row**2 + d_col**2
                    if d <= rad2:
                        offsets.append((
                            d_row%self.rows-self.rows,
                            d_col%self.cols-self.cols
                        ))
            return offsets

        extra_rad = 0
        # attack_rad*2 + extra_rad
        attack_rad2 = int(4*ants.attackradius2+(extra_rad**2)+4*extra_rad*sqrt(ants.attackradius2))

        extra_rad = -1
        # attack_rad + extra_rad
        defend_rad2 = int(ants.attackradius2+(extra_rad**2)+2*extra_rad*sqrt(ants.attackradius2))

        self.ant_view_area = get_pre_radius(ants.viewradius2)
        self.ant_attack_area = get_pre_radius(attack_rad2)
        self.ant_defend_area = get_pre_radius(defend_rad2)
        self.food_rad = get_pre_radius(ants.spawnradius2)