Et voilà, le code est surement très moche, mais j’arrive à calculer le physique-rating:
// calcul de la constitution physique
$yourInstance = new YourClassName();
$yourInstance->sex = $sex;
$yourInstance->age = $age;
$yourInstance->height = $muscle;
$yourInstance->fat = $fat;
$yourInstance->muscle = $muscle;
$getFatPercentageScale = $yourInstance->getFatPercentageScale();
$getMuscleMassScale = $yourInstance->getMuscleMassScale();
$getBodyType = $yourInstance->getBodyType();
$factorValue = $yourInstance->getBodyType();
class FatPercentageScale {
public $Min;
public $Max;
public $Female;
public $Male;
}
class MuscleMassScale {
public $Min;
public $Female;
public $Male;
}
class YourClassName {
public $fatPercentageScales = array(
array("Min" => 0, "Max" => 12, "Female" => array(12, 21, 30, 34), "Male" => array(7, 16, 25, 30)),
array("Min" => 12, "Max" => 14, "Female" => array(15.0, 24.0, 33.0, 37.0), "Male" => array(7.0, 16.0, 25.0, 30.0)),
array("Min" => 14, "Max" => 16, "Female" => array(18.0, 27.0, 36.0, 40.0), "Male" => array(7.0, 16.0, 25.0, 30.0)),
array("Min" => 16, "Max" => 18, "Female" => array(20.0, 28.0, 37.0, 41.0), "Male" => array(7.0, 16.0, 25.0, 30.0)),
array("Min" => 18, "Max" => 40, "Female" => array(21.0, 28.0, 35.0, 40.0), "Male" => array(11.0, 17.0, 22.0, 27.0)),
array("Min" => 40, "Max" => 60, "Female" => array(22.0, 29.0, 36.0, 41.0), "Male" => array(12.0, 18.0, 23.0, 28.0)),
array("Min" => 60, "Max" => 100, "Female" => array(23.0, 30.0, 37.0, 42.0), "Male" => array(14.0, 20.0, 25.0, 30.0))
);
public $muscleMassScale = array(
array(
"Min" => array("Male" => 170, "Female" => 160),
"Female" => array(36.5, 42.6),
"Male" => array(49.4, 59.5),
),
array(
"Min" => array("Male" => 160, "Female" => 150),
"Female" => array(32.9, 37.6),
"Male" => array(44.0, 52.5),
),
array(
"Min" => array("Male" => 0, "Female" => 0),
"Female" => array(29.1, 34.8),
"Male" => array(38.5, 46.6),
),
);
public $sex;
public $age;
public $fat;
public $muscle;
public $factor;
public function getFatPercentageScale() {
foreach ($this->fatPercentageScales as $scale) {
if ($this->age >= $scale["Min"] && $this->age < $scale["Max"]) {
switch ($this->sex) {
case "Female":
return $scale["Female"];
case "Male":
return $scale["Male"];
default:
throw new Exception("NotImplementedException");
}
}
}
throw new Exception("Scale not found for the given age and sex.");
}
public function getMuscleMassScale() {
foreach ($this->muscleMassScale as $scale) {
if ($this->height >= $scale["Min"][$this->sex]) {
switch ($this->sex) {
case "Female":
return $scale["Female"];
case "Male":
return $scale["Male"];
default:
throw new Exception("NotImplementedException");
}
}
}
throw new Exception("Scale not found for the given height and sex.");
}
public function getBodyType() {
$factor = 0;
if ($this->fat > $this->getFatPercentageScale()[2]) {
$factor = 0;
} elseif ($this->fat < $this->getFatPercentageScale()[1]) {
$factor = 2;
} else {
$factor = 1;
}
$muscleScale = $this->getMuscleMassScale();
if ($this->muscle > $muscleScale["Male"][1]) {
return 2 + ($factor * 3);
} elseif ($this->muscle < $muscleScale["Male"][0]) {
return ($factor * 3);
} else {
return 1 + ($factor * 3);
}
}
}