【发布时间】:2015-12-24 02:10:56
【问题描述】:
我正在开发一款游戏,允许玩家控制 10 个电路之间的“能量流”。
10 个电路中的每一个都单独调整,总和必须始终等于 100%。
例如,一个完美平衡的情况是所有 10 个电路都处于 10% (10x10=100)
编辑 2:如果我在这里尝试做的事情不是“平衡”,请发表评论,我会研究它们。
现在玩家还可以锁定电路,使功率等级不能被其他电路改变,但仍然可以直接改变。
编辑 3: 在这些情况下,有时可能无法达到要求的金额(例如:示例 3 和 6),最接近的可能结果将是结果
编辑:看到我的帖子收到了反对票,我将包括我已经尝试过的内容
- 更改总和除以请求更改的电路加上请求更改的电路和未更改的取消电路 - 此方法的问题是负向和正向更改同时可能会平衡并导致没有发生更改的“死锁”情况
- 根据需要通过电路添加和获取循环电路 - 这种方法的问题是它很少能正确平衡
- 首先应用减法和加法,然后将所有电路平衡回范围内(因此总数变为 100) - 问题是电源将在不应该出现的地方结束,应该为 0 的电路以少量结束电源
为了简化我的问题,我们可以只使用 5 个电路。
我需要帮助来计算以下内容的数学计算。经过 20 次左右的尝试后,我想我已经把它复杂化了,因为我一直以 200 行脚本结束,还是这实际上非常复杂?
示例 1:加法示例
20 20 20 20 20 Start values
+10 +10 0 0 0 Change
30 30 3.3 3.3 3.3 After first iteration
50 50 0 0 0 After x iterations (eg key held down)
示例 2:减法示例
20 20 20 20 20 Start values
-10 -10 0 0 0 Change
10 10 26.6 26.6 26.6 After first iteration
0 0 33.3 33.3 33.3 After x iterations (eg key held down)
示例 3:锁定 + 加法(L 已锁定)
L
2.5 90 2.5 2.5 2.5 Start values
0 0 +50 0 0 Change
0 90 10 0 0 After first iteration
0 90 10 0 0 After x iterations (eg key held down)
示例 4:锁定 + 减法(L 被锁定)
L
2.5 90 2.5 2.5 2.5 Start values
0 -10 0 0 0 Change
5 80 5 5 5 After first iteration
25 0 25 25 25 After x iterations (eg key held down)
示例 5:多重锁定 + 减法(L 被锁定)
L L
2.5 90 2.5 2.5 2.5 Start values
0 -10 0 0 0 Change
5.8 80 2.5 5.8 5.8 After first iteration
32.5 0 2.5 32.5 32.5 After x iterations (eg key held down)
示例 6:平衡从不平衡开始的变化(这个数学可能有点偏离)
2.5 90 2.5 2.5 2.5 Start values
+10 +10 +10 0 0 Change
16.7 66.6 16.7 0 0 After first iteration
33.3 33.3 33.3 0 0 After x iterations (eg key held down)
【问题讨论】:
-
您能解释一下您想要实现的目标吗?我真的无法理解你的例子。例如。在前。 3、第三列有10加50到2.5后。这是为什么?起初,我认为您希望允许玩家更改任何电路并将更改平均分配到其余电路。但情况似乎并非如此。
-
嗨 Nico,感谢您的回复。在第三个示例中,玩家试图将 50 添加到第三个循环,但是第二个循环被锁定并且当前有 90%。由于它被锁定,第三电路只能从未锁定的电路中收集总共 10%,因为它不允许从锁定的电路中获取。您希望在电路中平均分配剩余部分是正确的,但这必须通过锁的限制来完成。我将编辑我的帖子以解释所请求的更改可能并不总是可行,并且在这些情况下它们可能会受到限制