-3

我试图找到一种用于战略游戏战斗的算法,如 travian 或 ultima 之王或......但我编写的每个程序都有计算死士兵的错误,这个关键点的一些例子是:

  1. 在现实世界中,当100名士兵攻击1名士兵时,通常100名士兵都活着,1名守军士兵都死了。
  2. 寻找战斗的胜利者

数据示例是:

attacker:
Soldiers | defending-power | attacking-power | Soldier Count |
---------|-----------------|-----------------|---------------|
A        | 20              | 45              | 5
B        | 22              | 77              | 4
C        | 41              | 32              | 7
D        | 38              | 54              | 6
E        | 27              | 41              | 6

defender:
Soldiers | defending-power | attacking-power | Soldier Count |
---------|-----------------|-----------------|---------------|
A        | 44              | 12              | 6
B        | 59              | 18              | 6
C        | 73              | 40              | 7
D        | 26              | 61              | 2
E        | 7               | 24              | 4
4

1 回答 1

1

我建议两个玩家的士兵人数都遵循类似曲线的指数衰减,这取决于彼此的士兵人数。如在任何时间点,玩家 X 的士兵数量都会减少(Y 的士兵)*(Y 的攻击力)/(Y 的防御力),玩家 Y 的士兵数量也是如此。

如果两个玩家的实力相近,那么双方的兵力就会像曲线一样呈指数衰减下降,但是如果一个玩家的实力大大压倒对方,那么对方的兵力就会随着时间的推移而线性下降。(是的,在战斗结束之前将士兵计数视为浮点数。)

让算法与数据匹配将是一个确定你多久运行一次计算的过程(基本上,你将这个因素乘以多大),确定你是同时运行双方还是一方先减少另一方的士兵人数,是否你最后向上还是向下取整,以及攻击力/防御力部分是否真的像除以其他一样简单,或者你是否因为拥有优势而获得递减或失控的回报。

于 2013-04-05T00:06:13.297 回答