def warrior(game_map, game_params, game_teams): global start global ticks while True: state = State(input(), game_teams, game_params) my_buildings = state.my_buildings() my_squads = state.my_squads() # сортируем по остаточному пути my_squads.sort(key=lambda c: c.way.left, reverse=False) enemy_buildings = state.enemy_buildings() enemy_squads = state.enemy_squads() neutral_buildings = state.neutral_buildings() forges_buildings = state.forges_buildings() if state.ability_ready(AbilityType.Area_damage): cast_aoe(enemy_squads, enemy_buildings, game_map, game_teams) move_units(enemy_buildings, my_buildings, enemy_squads, game_map, game_teams) ticks += 1 print("end")
my_buildings = state.my_buildings() my_squads = state.my_squads() # сортируем по остаточному пути my_squads.sort(key=lambda c: c.way.left, reverse=False) enemy_buildings = state.enemy_buildings() enemy_squads = state.enemy_squads() neutral_buildings = state.neutral_buildings() forges_buildings = state.forges_buildings() """ Играем за мага """ if game_teams.my_her.hero_type == HeroType.Mag: # проверяем доступность абилки Обмен башнями if state.ability_ready(AbilityType.Build_exchange): # если враг применил абилку обмен башнями build_exchange = state.enemy_active_abilities( AbilityType.Build_exchange) if len(build_exchange) > 0: print( game_teams.my_her.exchange(enemy_buildings[0].id, my_buildings[0].id)) else: if my_buildings[0].creeps_count < 10: print( game_teams.my_her.exchange(enemy_buildings[0].id, my_buildings[0].id)) # проверяем доступность абилки Чума if state.ability_ready(AbilityType.Plague):
my_buildings = state.my_buildings() my_squads = state.my_squads() # сортируем по остаточному пути my_squads.sort(key=lambda c: c.way.left, reverse=False) enemy_buildings = state.enemy_buildings() enemy_squads = state.enemy_squads() neutral_buildings = state.neutral_buildings() forges_buildings = state.forges_buildings() """ Играем за рунного кузнеца """ if game_teams.my_her.hero_type == HeroType.BlackSmith: # Проверяем доступность абилки Щит if state.ability_ready(AbilityType.Armor): print(game_teams.my_her.armor(my_buildings[0].id)) # Проверяем доступность абилки Разрушение if len(enemy_squads) > 4: if state.ability_ready(AbilityType.Area_damage): location = game_map.get_squad_center_position( enemy_squads[2]) print(game_teams.my_her.area_damage(location)) # Upgrade башни if my_buildings[0].level.id < len(game_params.tower_levels): # Если хватает стоимости на upgrade update_coast = game_params.get_tower_level( my_buildings[0].level.id + 1).update_coast if update_coast < my_buildings[0].creeps_count: