本文整理匯總了Python中FleetUtilsAI.get_fuel方法的典型用法代碼示例。如果您正苦於以下問題:Python FleetUtilsAI.get_fuel方法的具體用法?Python FleetUtilsAI.get_fuel怎麽用?Python FleetUtilsAI.get_fuel使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類FleetUtilsAI
的用法示例。
在下文中一共展示了FleetUtilsAI.get_fuel方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: can_travel_to_system_and_return_to_resupply
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_fuel [as 別名]
def can_travel_to_system_and_return_to_resupply(fleet_id, from_system_target, to_system_target):
"""
Filter systems where fleet can travel from starting system. # TODO rename function
:param fleet_id:
:type fleet_id: int
:param from_system_target:
:type from_system_target: universe_object.System
:param to_system_target:
:type to_system_target: universe_object.System
:return:
:rtype: list
"""
system_targets = []
if not from_system_target.id == to_system_target.id:
fleet_supplyable_system_ids = fo.getEmpire().fleetSupplyableSystemIDs
fuel = int(FleetUtilsAI.get_fuel(fleet_id)) # int to get actual number of jumps
max_fuel = int(FleetUtilsAI.get_max_fuel(fleet_id))
# try to find path without going resupply first
supply_system_target = get_nearest_supplied_system(to_system_target.id)
system_targets = __find_path_with_fuel_to_system_with_possible_return(from_system_target, to_system_target, system_targets, fleet_supplyable_system_ids, max_fuel, fuel, supply_system_target)
# resupply in system first is required to find path
if from_system_target.id not in fleet_supplyable_system_ids and not system_targets:
# add supply system to visit
from_system_target = get_nearest_supplied_system(from_system_target.id)
system_targets.append(from_system_target)
# find path from supplied system to wanted system
system_targets = __find_path_with_fuel_to_system_with_possible_return(from_system_target, to_system_target, system_targets, fleet_supplyable_system_ids, max_fuel, max_fuel, supply_system_target)
return system_targets
示例2: can_travel_to_system
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_fuel [as 別名]
def can_travel_to_system(fleet_id, from_system_target, to_system_target, ensure_return=False):
"""
Return list systems to be visited.
:param fleet_id:
:type fleet_id: int
:param from_system_target:
:type from_system_target: universe_object.System
:param to_system_target:
:type to_system_target: universe_object.System
:param ensure_return:
:type ensure_return: bool
:return:
:rtype: list
"""
empire = fo.getEmpire()
empire_id = empire.empireID
fleet_supplyable_system_ids = set(empire.fleetSupplyableSystemIDs)
# get current fuel and max fuel
universe = fo.getUniverse()
fuel = int(FleetUtilsAI.get_fuel(fleet_id)) # round down to get actually number of jumps
if fuel < 1.0 or from_system_target.id == to_system_target.id:
return []
if True: # TODO: sort out if shortestPath leaves off some intermediate destinations
path_func = universe.leastJumpsPath
else:
path_func = universe.shortestPath
start_sys_id = from_system_target.id
target_sys_id = to_system_target.id
if start_sys_id != INVALID_ID and target_sys_id != INVALID_ID:
short_path = list(path_func(start_sys_id, target_sys_id, empire_id))
else:
short_path = []
legs = zip(short_path[:-1], short_path[1:])
# suppliedStops = [ sid for sid in short_path if sid in fleet_supplyable_system_ids ]
# unsupplied_stops = [sid for sid in short_path if sid not in suppliedStops ]
unsupplied_stops = [sys_b for sys_a, sys_b in legs if ((sys_a not in fleet_supplyable_system_ids) and (sys_b not in fleet_supplyable_system_ids))]
# print "getting path from %s to %s "%(ppstring(PlanetUtilsAI.sys_name_ids([ start_sys_id ])), ppstring(PlanetUtilsAI.sys_name_ids([ target_sys_id ])) ),
# print " ::: found initial path %s having suppliedStops %s and unsupplied_stops %s ; tot fuel available is %.1f"%( ppstring(PlanetUtilsAI.sys_name_ids( short_path[:])), suppliedStops, unsupplied_stops, fuel)
if False:
if target_sys_id in fleet_supplyable_system_ids:
print "target has FleetSupply"
elif target_sys_id in ColonisationAI.annexable_ring1:
print "target in Ring 1"
elif target_sys_id in ColonisationAI.annexable_ring2 and foAI.foAIstate.character.may_travel_beyond_supply(2):
print "target in Ring 2, has enough aggression"
elif target_sys_id in ColonisationAI.annexable_ring3 and foAI.foAIstate.character.may_travel_beyond_supply(3):
print "target in Ring 2, has enough aggression"
if (not unsupplied_stops or not ensure_return or
target_sys_id in fleet_supplyable_system_ids and len(unsupplied_stops) <= fuel
or target_sys_id in ColonisationAI.annexable_ring1 and len(unsupplied_stops) < fuel
or target_sys_id in ColonisationAI.annexable_ring2 and foAI.foAIstate.character.may_travel_beyond_supply(2) and len(unsupplied_stops) < fuel - 1
or target_sys_id in ColonisationAI.annexable_ring3 and foAI.foAIstate.character.may_travel_beyond_supply(3) and len(unsupplied_stops) < fuel - 2):
return [universe_object.System(sid) for sid in short_path]
else:
# print " getting path from 'can_travel_to_system_and_return_to_resupply' ",
return can_travel_to_system_and_return_to_resupply(fleet_id, from_system_target, to_system_target)