You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Ogame交易脚本:按指定条件计算资源买卖数量

Ogame资源交易配比自动计算方案

需求核心

基于现有资源、自定义交易比例、目标资源配比,自动计算各资源的买卖调整量,输出最终资源量及配比,支持任意类型资源的售卖场景。以下提供Excel表格和Python脚本两种实现方案。


Excel表格实现

1. 输入区设置

直接在表格中定义以下输入单元格:

  • 现有资源:A2(金属)、B2(晶体)、C2(重氢),比如填入100, 0, 0
  • 交易比例:E2(1晶体兑换金属数)、F2(1重氢兑换金属数),比如填入1.35, 2.61
  • 目标配比:H2(金属占比)、I2(晶体占比)、J2(重氢占比),比如填入10, 6, 2

2. 核心计算公式

在对应单元格输入以下公式:

  • 等价金属总量(所有资源换算成金属后的总价值):=A2 + B2*E2 + C2*F2(放在D2)
  • 目标总份数:=SUM(H2:J2)(放在K2)
  • 各资源需要的等价金属量:
    • 金属:=D2*(H2/K2)(L2)
    • 晶体:=D2*(I2/K2)(M2)
    • 重氢:=D2*(J2/K2)(N2)
  • 资源调整量(正数=买入,负数=卖出):
    • 金属:=L2 - A2(O2)
    • 晶体:=(M2/E2) - B2(P2)
    • 重氢:=(N2/F2) - C2(Q2)
  • 最终资源及配比:
    • 最终金属:=A2 + O2(R2)
    • 最终晶体:=B2 + P2(S2)
    • 最终重氢:=C2 + Q2(T2)
    • 最终配比:=ROUND(R2/MAX(R2:S2:T2),2)&":"&ROUND(S2/MAX(R2:S2:T2),2)&":"&ROUND(T2/MAX(R2:S2:T2),2)(U2)

Python脚本实现

代码示例

def calculate_resource_trade(current_resources, exchange_rates, target_ratio):
    # 计算所有资源等价的金属总量
    total_equivalent_metal = (
        current_resources['metal']
        + current_resources['crystal'] * exchange_rates['crystal_to_metal']
        + current_resources['deuterium'] * exchange_rates['deuterium_to_metal']
    )

    # 计算目标配比的总份数及各资源占比
    total_ratio = sum(target_ratio)
    ratio_m, ratio_c, ratio_d = target_ratio

    # 换算各资源需要的等价金属量
    required_metal_eq = total_equivalent_metal * (ratio_m / total_ratio)
    required_crystal_eq = total_equivalent_metal * (ratio_c / total_ratio)
    required_deuterium_eq = total_equivalent_metal * (ratio_d / total_ratio)

    # 计算各资源的调整量(正=买入,负=卖出)
    metal_adjust = required_metal_eq - current_resources['metal']
    crystal_adjust = (required_crystal_eq / exchange_rates['crystal_to_metal']) - current_resources['crystal']
    deuterium_adjust = (required_deuterium_eq / exchange_rates['deuterium_to_metal']) - current_resources['deuterium']

    # 计算最终资源量
    final_metal = current_resources['metal'] + metal_adjust
    final_crystal = current_resources['crystal'] + crystal_adjust
    final_deuterium = current_resources['deuterium'] + deuterium_adjust

    # 生成简化的最终配比
    max_final = max(final_metal, final_crystal, final_deuterium)
    final_ratio = (
        f"{round(final_metal/max_final, 2)}:"
        f"{round(final_crystal/max_final, 2)}:"
        f"{round(final_deuterium/max_final, 2)}"
    )

    return {
        'metal_adjust': round(metal_adjust, 2),
        'crystal_adjust': round(crystal_adjust, 2),
        'deuterium_adjust': round(deuterium_adjust, 2),
        'final_resources': {
            'metal': round(final_metal, 2),
            'crystal': round(final_crystal, 2),
            'deuterium': round(final_deuterium, 2)
        },
        'final_ratio': final_ratio
    }

# 示例调用(对应题目中的初始条件)
if __name__ == "__main__":
    current = {'metal': 100, 'crystal': 0, 'deuterium': 0}
    rates = {'crystal_to_metal': 1.35, 'deuterium_to_metal': 2.61}
    target = [10, 6, 2]

    result = calculate_resource_trade(current, rates, target)
    print("资源调整量(正买入/负卖出):")
    print(f"金属:{result['metal_adjust']}")
    print(f"晶体:{result['crystal_adjust']}")
    print(f"重氢:{result['deuterium_adjust']}")
    print("\n最终资源:")
    for res, val in result['final_resources'].items():
        print(f"{res}: {val}")
    print(f"\n最终配比:{result['final_ratio']}")

扩展说明

  • 支持任意资源售卖:调整量为负数时,自动对应卖出该资源,等价价值会纳入总金属量计算
  • 灵活修改参数:直接修改current、rates、target变量即可适配不同场景
  • 精度控制:代码中用round保留两位小数,可根据需求调整保留位数

内容的提问来源于stack exchange,提问作者Sanyo4ever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:14:53