コード例 #1
0
 def metric_efficiency(self, current_player: Player, game_state: GameState,
                       point: Point):
     helper = game_state.game_helper
     cell = game_state.game_field[point]
     if cell.real_owner == current_player:
         return 0
     enemy_count = 0
     for pos in game_state.get_near_position(point):
         if helper.is_enemy_point(pos, current_player):
             enemy_count += 1
     if enemy_count == 0:
         return 0
     elif enemy_count == 1:
         return 1
     elif enemy_count == 2:
         return 0.9
     else:
         return 1 / enemy_count
コード例 #2
0
 def metric_security(self, current_player: Player, game_state: GameState,
                     point: Point):
     helper = game_state.game_helper
     if game_state.is_near_border(point):
         return 1
     near_count = 0
     near_sum = 0
     for pos in game_state.get_near_position(point):
         if helper.is_ally_point(pos, current_player):
             near_count += 1
             near_sum += 1
         if helper.is_enemy_point(pos, current_player):
             near_sum -= 0.1
     for pos in helper.get_diagonal_points(point):
         if helper.is_ally_point(pos, current_player):
             near_count += 1
             near_sum += 0.5
         if helper.is_enemy_point(pos, current_player):
             near_sum -= 0.05
     if near_count == 0:
         return 0
     else:
         return near_sum / near_count