建造相关文件位于example文件夹下的build.py文件
该文件为一直建造舰船,一般用于生煎期间,下面是相关函数
class BuildManager:
# TODO: 获取建造舰船名称; 正确处理异常情况; 使用内部记忆代替查询
def __init__(self, timer: Timer) -> None:
self.timer = timer
# -1代表空位. None代表未开通
self.slot_eta = {
"ship": [None] * 4,
"equipment": [None] * 4,
}
self.update_slot_eta("ship")
self.update_slot_eta("equipment")
def update_slot_eta(self, type="ship"):
"""更新建造队列的剩余时间"""
def get_timedelta(self, type="ship"):
"""获取建造队列的最小剩余时间
Args:
type (str): "ship"/"equipment"
Returns:
datetime.timedelta: 剩余时间
"""
def get_min_eta(self, type="ship"):
"""获取建造队列的最小结束时间
Args:
type (str): "ship"/"equipment"
Returns:
datetime.datetime: 结束时间
"""
return min(self.slot_eta[type])
def has_empty_slot(self, type="ship") -> bool:
"""检查是否有空位
Args:
type (str): "ship"/"equipment"
Returns:
bool: 是否有空位
"""
# 检查是否包含 -1 或当前时间是否大于任何非 None 的时间
return -1 in self.slot_eta[type] or any(datetime.datetime.now() > eta for eta in self.slot_eta[type] if eta is not None)
def get_build(self, type="ship", allow_fast_build=False) -> bool:
"""获取已经建造好的舰船或装备
Args:
type (str): "ship"/"equipment"
allow_fast_build: 是否允许快速建造
Returns:
bool: 是否获取成功
"""
def build(self, type="ship", resources=None, allow_fast_build=False):
"""建造操作
Args:
type (str): "ship"/"equipment"
resources: 一个列表, 表示油弹钢铝四项资源. Defaults to None.
allow_fast_build (bool, optional): 如果队列已满, 是否立刻结束一个以开始建造. Defaults to False.
"""
def choose_build_resources():
"""移动资源
Args:
resource_id (int): 资源编号
dst (int): 目标值
"""
def value_to_digits(value):
# 拆分为3位数
return [value // 100, value // 10 % 10, value % 10]
def detect_build_resources(resource_id) -> list:
"""检查四项资源余量
Args:
resource_id (int): 具体哪一项资源 [0,3]
Returns:
list: 拆分为3位数的资源
"""