Пример #1
0
def move_up(obs):
    army = scaux.select_army(obs, sc2_env.Race.terran)
    xs = [unit.x for unit in army]
    ys = [unit.y for unit in army]

    new_army_x = int(mean(xs))
    new_army_y = int(mean(ys)) - VER_THRESHOLD

    for unit in army:
        PENDING_ACTIONS.append(actions.RAW_FUNCTIONS.Move_pt("now", unit.tag, [new_army_x, new_army_y]))
Пример #2
0
    def move_up(self, obs):
        army = scaux.select_army(obs, sc2_env.Race.terran)
        xs = [unit.x for unit in army]
        ys = [unit.y for unit in army]

        new_army_x = int(mean(xs))
        new_army_y = int(mean(ys)) - self.ver_threshold

        for unit in army:
            self.pending_actions.append(
                actions.RAW_FUNCTIONS.Move_pt("now", unit.tag,
                                              [new_army_x, new_army_y]))
Пример #3
0
    def attack_nearest_inside_radius(self, obs, radius):
        #get army coordinates
        race = sc2_env.Race.terran 
        army_x, army_y = self.get_race_unit_avg(obs, race) 

        #get nearest unit
        enemy_unit = self.get_nearest_enemy_unit_inside_radius(army_x, army_y, obs, radius)

        #tell each unit in army to attack nearest enemy
        if enemy_unit is not None:
            army = scaux.select_army(obs, race)
            for unit in army:
                #self.pending_actions.append(actions.RAW_FUNCTIONS.Attack_pt("now", unit.tag, [enemy_unit.x, enemy_unit.y]))
                self.pending_actions.append(actions.RAW_FUNCTIONS.Attack_unit("now", unit.tag, enemy_unit.tag))
Пример #4
0
def attack_nearest_inside_radius(obs, radius):
    #get army coordinates
    army = scaux.select_army(obs, sc2_env.Race.terran)
    xs = [unit.x for unit in army]
    ys = [unit.y for unit in army]
    army_x = int(mean(xs))
    army_y = int(mean(ys)) - VER_THRESHOLD

    #get nearest unit
    enemy_unit = get_nearest_enemy_unit_inside_radius(army_x, army_y, obs, radius)

    #tell each unit in army to attack nearest enemy
    for unit in army:
        PENDING_ACTIONS.append(actions.RAW_FUNCTIONS.Attack_pt("now", unit.tag, [enemy_unit.x, enemy_unit.y]))
Пример #5
0
    def get_race_unit_avg(self, obs, race):
        army = scaux.select_army(obs, race)

        xs, ys = [], []
        for unit in army:
            try: 
                xs.append(unit.x)
                ys.append(unit.y)
            except AttributeError as ae:
                if not "'str' object has no attribute" in str(ae):
                    raise

        army_x = int(mean(xs))
        army_y = int(mean(ys))
        return army_x, army_y
Пример #6
0
    def run_(self, obs):
        #TODO
        #get player x and y avg
        p_army_x, p_army_y = self.get_race_unit_avg(obs, sc2_env.Race.terran)
        #get enemy x and y avg
        e_army_x, e_army_y = self.get_race_unit_avg(obs, sc2_env.Race.zerg)

        new_x = 0
        new_y = 0

        if p_army_x - e_army_x < 0:
            new_x = DefeatEnemiesStarcraftIIActionWrapper.MAP_X_CORNER_LEFT
        else:
            new_x = DefeatEnemiesStarcraftIIActionWrapper.MAP_X_CORNER_RIGHT

        if p_army_y - e_army_y < 0:
            new_y = DefeatEnemiesStarcraftIIActionWrapper.MAP_Y_CORNER_UP
        else:
            new_y = DefeatEnemiesStarcraftIIActionWrapper.MAP_Y_CORNER_DOWN

        army = scaux.select_army(obs, sc2_env.Race.terran)
        for unit in army:
            self.pending_actions.append(
                actions.RAW_FUNCTIONS.Move_pt("now", unit.tag, [new_x, new_y]))
Пример #7
0
def print_army_mean(obs):
    army = scaux.select_army(obs, sc2_env.Race.terran)
    xs = [unit.x for unit in army]
    ys = [unit.y for unit in army]

    print("Army position is [{x}, {y}]".format(x=int(mean(xs)),y=int(mean(ys))))