Cas plus compliqué : n vs 1 avec unités au corps à corps uniquementL'exemple :
A1 : 100 lanciers (40 hp ; 30 atq ; 5 def) (30 atq grâce au bonus contre la cavalerie)
A2 : 200 fantassins légers (40 hp ; 20 atq; 5 def)
A3 : 50 fantassins lourds (50 hp ; 25 atq ; 12 def)
D : 200 cavaleriers lourds (80 hp ; 30 atq ; 12 def)
I - On fait la même chose que dans le cas simple, mais avec tous les types d'unités :
- quand une unité de A1 attaque une unité de D, l'unité de D perd 30-12 = 18 hp
- quand une unité de A2 attaque une unité de D, l'unité de D perd 20-12 = 8 hp
- quand une unité de A3 attaque une unité de D, l'unité de D perd 25-12 = 13 hp
- quand une unité de D attaque une unité de A1, l'unité de A1 perd 30-5 = 25 hp
- quand une unité de D attaque une unité de A2, l'unité de A2 perd 30-5 = 25 hp
- quand une unité de D attaque une unité de A3, l'unité de A3 perd 30-12 = 18 hp
II - On calcule le rapport plusGrandGroupe / plusPetitGroupe. Ici, (100+200+50)/200 = 1,75
III - De la même manière que dans le cas précédent :
rapportForceEffectif = 1,75 / 2 + 0.5 = 1,375
IV - Pareil que le cas précédent, sauf qu'il faut le faire pour chacun des groupes concernés :
- A1 : 100/1,75*1,375 = 78,57 unités de ce groupe se battront
- A2 : 200/1,75*1,375 = 157,14 unités de ce groupe se battront
- A3 : 50/1,75*1,375 = 39,29 unités de ce groupe se battront
V - Etape supplémentaire par rapport au cas simple : déterminer quelles seront les cibles prioritaires du groupe D. On considère que 3/4 des forces du groupe D se battent d'une manière optimale, tandis que le 1/4 restant attaque aléatoirement (dans le feu de l'action, tout ne peut pas être parfait). Pour cela, on effectue des simulations de toutes les attaques possibles :
- Si 3/4 des forces de D attaquent A1, elles infligeront 3750 hp de dégâts. 93,75 lanciers mourront, ce qui fait que le groupe D subira 1687,5 hp de dégâts en moins le tour suivant.
- Si 3/4 des forces de D attaquent A2, elles infligeront 3750 hp de dégâts. 93,75 fantassins légers mourront, ce qui fait que le groupe D subira 750 hp de dégâts en moins le tour suivant.
- Si 3/4 des forces de D attaquent A3, elles infligeront 2700 hp de dégâts. 45 fantassins lourds mourront, ce qui fait que le groupe D subira 585 hp de dégâts en moins le tour suivant.
Le but est d'établir un classement des Ai les plus rentables. Ici, A1 est le plus rentable de loin, et A3 est le pire. Le groupe D attaquera donc A1. Dans un cas où abattre le groupe A1 ne mobiliserait pas toutes les forces de D, le reste (dans la limite des 3/4) attaque le second groupe le plus rentable, et ainsi de suite jusqu'à ce que toutes les forces de D soient utilisées.
VI - Calcul des dégâts de D sur les Ai :
- On commence par faire ce qui a été déterminé au point précédent : exploser A1. Forces restantes :
A1 : 6,25 lanciers
A2 : 200 fantassins légers
A3 : 50 fantassins lourds
Le 1/4 restant des forces de D représente 200*0.25 = 50 unités. On balance sur chacun des groupes restants un nombre d'unité proportionnel à leur taille, qui est ici de 6,25+200+50 = 256,25 unités
- A1 : 6,25 / 256,25 = 2,44% du total => On envoie 50*2,44% = 1,22 unités
- A2 : 200 / 256,25 = 78,05% du total => On envoie 50*78,05% = 39.025 unités
- A3 : 50 / 256,25 = 19,51 % du total => On envoie 50*19,51% = 9,755 unités
On peut maintenant calculer les dégâts supplémentaires infligés à chacun des Ai :
- A1 : 1,22*25 = 30,5 hp de dégâts, donc 0,7625 morts
- A2 : 39,025*25 = 975,625 hp de dégâts, donc 24,39 morts
- A3 : 9,755*18 = 175,59 hp de dégâts, donc 3,5118 morts
Bilan final des survivants dans les Ai :
A1 : 5,4875 lanciers
A2 : 175,61 fantassins légers
A3 : 46,4882 fantassins lourds
VII - Il ne reste plus qu'à calculer les dégâts des Ai sur D. Rappel des forces initiales, que l'on utilise à nouveau :
A1 : 100 lanciers (40 hp ; 30 atq ; 5 def) (30 atq grâce au bonus contre la cavalerie)
A2 : 200 fantassins légers (40 hp ; 20 atq; 5 def)
A3 : 50 fantassins lourds (50 hp ; 25 atq ; 12 def)
D : 200 cavaleriers lourds (80 hp ; 30 atq ; 12 def)
a) calcul du bonus pour les attaquants :
Le fait que les Ai attaquent sur plusieurs fronts leur octroie un avantage, qui dépendra du nombre de fronts, mais aussi grandement de leur homogénéité. Exemples :
- 100+100+100 vs x => un triple sandwich, qui doit avoir un bonus un minimum conséquent
- 150+100+50 vs x => même nombre d'unités, mais avantage moins grand pour l'attaquant, vu qu'un côté du sandwich est faiblard. Bonus comparable au cas 150+150 vs x
- 298+1+1 vs x => même nombre d'unités, mais là, c'est comme si l'attaquant fonçait dans le tas. Bonus nul.
Un algo pour quantifier la "qualité" d'une prise en sandwich (un autre recyclage de mon post précédent) :
- Code:
max = "puissance" du plus gros Ai
nbRetenuPourBonus = 0;
pour chaque Ai
nbRetenuPourBonus += puissance(Ai) / max
La "puissance" se définit comme étant une valeur proportionnelle la capacité de Ai à infliger des dégâts à D.
- Code:
Pouet = attaque(Ai) - defense(D) // une indication des dégâts qu'une unité de Ai fait au groupe D
Gneuh = hp(Ai) / (attaque(D) - defense(Ai)) // proportionnel à la durée durant laquelle une unité de Ai peut survivre face à D
puissance = taille(Ai) * Pouet * Gneuh // => indication à peu près valable de la force du groupe Ai face à D.
nbRetenuPourBonus peut ensuite être utilisé pour calculer le bonus à donner aux attaquants. Exemple d'algo à la con pour avoir ça :
- Code:
si nbRetenu < 1,5 => aucun bonus
sinon si nbRetenu < 2 => bonus de 5%
sinon si nbRetenu < 2,5 => bonus de 7%
sinon si nbRetenu < 3 => bonus de 8%
sinon bonus de 9%
Calculons ce bonus avec l'exemple. On commence par calculer ce que j'ai appelé "puissance" dans mon algo :
- puissance de A1 : 100*(30-12)*40/(30-5) = 2880 points
- puissance de A2 : 200*(20-12)*40/(30-5) = 2560 points
- puissance de A3 : 50*(25-12)*50/(30-12) = 1806 points
nbRetenuPourBonus = 2880/2880 + 2560/2880 + 1806/2880 = 2,516
Donc bonus de 8%.
c) calcul des dégâts
On peut enfin calculer des dégâts que les Ai infligent à D, en utilisant les valeurs calculées aux points I (dégâts de base) et IV (malus lié au surnombre)
degatsBase = 78,57*18 + 157,14*8 + 39,29*13 = 3182,15 hp
bonus = 3182,15*8% = 254,572 hp
degatsTotaux = 3436,722 hp (soit 42,96 morts)
Bilan final des survivants :
A1 : 5,4875 lanciers
A2 : 175,61 fantassins légers
A3 : 46,4882 fantassins lourds
D : 157,04 cavaliers lourds