-3

トラビアンやロード オブ ウルティマなどの戦略ゲームの戦いのアルゴリズムを見つけようとしていますが、私が書いたすべてのプログラムには、死んだ兵士を計算するためのバグがありました。この重要なポイントの例を次に示します。

  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 に答える