06-09-2010, 08:37 AM
Voici comment j'ai géré le vol de ressources de manière proportionnelle:
Code PHP :
<?php
/**
* Effectue le vol des ressources (remplissage du fret)
*
* @param Array $ressBase Ressources à prendre sur la base
* @param Integer $placeFret Place restante en fret
* @return Array
*/
function volRessources($ressBase,$placeFret) {
$totalRessBase=array_sum($ressBase);
if ($totalRessBase<=$placeFret) {
//Il y a de la place pour tout prendre donc on prend tout
return $ressBase;
} else {
//Remplissage du fret proportionnellement aux ressources détenus sur la base
$ressVol=array_fill(0,count($ressBase),0);
$pourcentageRess=1.0*$placeFret/$totalRessBase;
for ($i=0;$i<count($ressBase);$i++) {
$delta=intval($ressBase[$i]*$pourcentageRess);
if ($delta<0) {
$delta=0;
}
if ($delta>$ressBase[$i]) {
$delta=$ressBase[$i];
}
$ressVol[$i]+=$delta;
$ressBase[$i]-=$delta;
$placeFret-=$delta;
}
return $ressVol;
}
}