在游戏中计算卡车载货量

Posted

技术标签:

【中文标题】在游戏中计算卡车载货量【英文标题】:Calculating truck cargo capacity in a game 【发布时间】:2012-05-15 05:02:14 【问题描述】:

这更像是一道数学/算法问题,而不是编程问题,但我还是希望你们能提供帮助。

场景 #1:

玩家 1 的库存中有 40 个crates

玩家 1 有 2 个trucks

1x small(容量:8 箱)

1x medium(容量:16 个板条箱)


给定capacity

一辆 small 卡车可以装 8 个板条箱

一辆 medium 卡车可以装 16 个板条箱

一辆 large 卡车可以装 30 个板条箱

玩家 1 需要多少卡车才能带走所有 40 个板条箱?

场景 #2,如果卡车上已经有货物会怎样?

玩家 1 有 40 个板条箱和 2 辆卡车,如上述场景。

如果small 的负载中已经有 2 个板条箱,则给他 8-2 = 6 个空间

如果medium 已经有 4 个板条箱,给他 16-4 = 8 个空间

玩家 1 需要多少卡车才能拿走所有 40 个板条箱?算法是什么?

场景 #3:没有卡车

玩家 1 总共有 0 辆卡车。他需要多少辆卡车才能带走所有 40 个板条箱?同样,您将使用什么算法?

场景 #4:卡车太多

玩家 1 有 10 辆卡车,全部容量为large。运送全部 40 个板条箱需要多少辆卡车?

我在想。

场景 1,

2 trucks, 1 small = 8 and 1 medium = 16
8+16 = 24 crates
40 - 24 = 16 trucks?? // This looks wrong.

卡车的成本是较早完成的(您先购买它们)。

我认为我的算法是错误的。我需要将其除以基数吗?用卡车分开吗?

对此的任何帮助都会非常有帮助。

【问题讨论】:

虽然玩家 1 的箱子数量是偶数,但它应该适用于奇数。卡车只能乘坐偶数(以 2 为底) 卡车不必满载。虽然这样会更容易。 【参考方案1】:

我建议以下算法(伪代码)

do truck = 1,number_trucks
  current_capacity(truck) = total_capacity(truck) - loaded_crates(truck)
enddo
sort trucks according to current_capacity (biggest first)
remaining_crates = 40
do truck = 1,number_trucks
  if(remaining_crates - current_capacity(truck) > 0)
    load truck full
    remaining_crates -= current_capacity(truck)
  else
    if(truck != last truck)
      if(remaining_crates - current_capacity(truck+1) > 0)
        load truck with remaining_crates
        remaining_crates = 0
      endif
    else
      load truck full
      remaining_crates -= current_capacity(truck)
    endif
  endif
enddo
sort truck_class according to total_capacity(truck_class) (biggest first)
do truck_class = 1,number_truck_classes
  while(remaining_crates - total_capacity(truck_class) > 0)
    buy truck of truck_class
    remaining_crates -= total_capacity(truck_class)
  end while
  if(truck_class == number_truck_classes && remaining_crates > 0)
    buy truck of truck_class
  endif
enddo

【讨论】:

这看起来很有希望!我将为此编写一个简单的应用程序,看看我是否可以让它工作。 希望我没有弄错。祝你好运。 没关系,我可以用它作为大纲。我希望我可以用一种简单的算法来完成这一切,但看起来需要编程。如果可以的话,我会在 excel 中执行此操作并输入不同的数字,但在一个小应用程序中执行此操作很好。 你可以使用模数来简化算法。但我会把它作为练习留给你。另外我认为这个算法非常简单,我的意思是我是在一个慵懒的星期天早上做的:) 我没有得到 'if truck != last truck' 部分。如果流量下降是因为当前卡车有足够的空间,那为什么要检查呢?【参考方案2】:

当您尝试解决此类问题以保留单位时,这非常有帮助

40 个板条箱 - 24 个板条箱 = 16 个板条箱

玩家有 40 个板条箱,他有能力运输 24 个板条箱,因此他需要额外的卡车来运输剩余的板条箱。据推测,运输 16 个板条箱的最有效方式是增加 1 辆中型卡车(您也可以使用 1 辆大型卡车或 2 辆小型卡车)。

【讨论】:

它主要用于人工智能和后台处理。理想情况下,人工智能需要知道需要购买或拥有多少辆卡车才能运送货物。 如果在场景 4 中(卡车太多)你会得到一个负数? 40 - (10 trucks @ 30 cr each = 300) = -260?我可能犯了一个错误 在 0 辆卡车场景中。你仍然需要计算出你需要多少辆卡车。 40 crates - 0 = 40

以上是关于在游戏中计算卡车载货量的主要内容,如果未能解决你的问题,请参考以下文章

Unity里面如何制作一条模拟真正运输带的活动(像坦克那个带一样会一个跟一个走)

答答租车系统(实际开发代码编写)

卡车设置中的HERE路由问题

在 SpriteKit 游戏中计算速度

全球云计算巨头盯上云游戏,吹响全面战争集结号

计算在基于瓦片的游戏中哪些瓦片被点亮(“光线追踪”)