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
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