#S0018. 物品合成与配方验证

物品合成与配方验证

1. 问题描述

🎮 游戏中的合成机制

在《塞尔达传说》或《原神》中,玩家可以通过收集材料合成道具:

  • 配方:如 "火焰箭 = 木箭×3 + 红宝石×1"
  • 合成规则:若材料足够则扣除材料并生成道具,否则失败
  • 动态配方:允许运行时添加新配方(如游戏更新)

🛠️ 任务

实现一个合成系统,支持以下命令:

  1. add_recipe 配方名 材料1×数量 材料2×数量...(如 add_recipe 火焰箭 木箭×3 红宝石×1
  2. collect 玩家 材料 数量(如 collect 林克 木箭 5
  3. craft 玩家 配方名(如 craft 林克 火焰箭
  4. end 结束并输出玩家背包

规则

  • 合成前检查玩家材料是否足够
  • 成功时扣除材料并添加成品,输出 [成功] 玩家 合成了 配方名
  • 失败时输出 [失败] 材料不足

2. 输入和输出

输入方式

  • 多行指令,最后一行是 end

输出方式

  1. 每次合成尝试立即输出结果
  2. 最终按玩家名字顺序输出背包(格式:玩家: 材料1×数量, 材料2×数量...

示例

# 输入:  
add_recipe 火焰箭 木箭×3 红宝石×1  
collect 林克 木箭 10  
collect 林克 红宝石 2  
craft 林克 火焰箭  
craft 林克 火焰箭  
end  

# 过程输出:  
[成功] 林克 合成了 火焰箭  
[成功] 林克 合成了 火焰箭  

# 最终输出:  
林克: 木箭×4, 红宝石×0, 火焰箭×2  
# 输入:  
add_recipe 药水 草药×2 水×1  
collect 塞尔达 草药 1  
craft 塞尔达 药水  
end  

# 过程输出:  
[失败] 材料不足  
# 最终输出:  
塞尔达: 草药×1, 水×0