Page 1 sur 1

[Programmation] Faire des calculs en PHP

MessagePosté: Lun 1 Nov 2010 12:31
par Rico the Hobbit
Salut à tous,

Pour la feuille de personnage de Star Wars, je voudrais mettre en place un système de calcul automatique mais je bloque au niveau des calculs.

La valeur d'une compétence comprend deux valeurs : A et B. A étant la valeur du dé et B le plus. Donc A vaut 1,2,3, etc. par contre B vaut 0, 1 ou 2.
La progression des compétences des personnages se fait de cette manière :
1D : 1(A) d + 0(B)
1D+1 : 1(A) d + 1(B)
1D+2 : 1(A) d + 2(B)
2D : 2(A) d + 0(B)
2D+1 : 2(A) d + 1(B)
2D+2 : 2(A) d + 2(B)
3D : 3(A) d + 0(B)
etc.

Comment feriez-vous pour automatiser le calcul ?

J'ai tenté pour ma part de partir d'une valeur 1 égale à 1D où A = 1 et B = 0. Pour une valeur de 2, A = 1 et B = 1, pour une valeur de 3, A = 1 et B = 2 et pour une valeur de 4, A = 2 et B = 0. Or, je n'arrive pas à mettre en code cette série... :perplexe:

Je vous mets le code actuel qui n'est pas satisfaisant :
Code: Tout sélectionner
<?php
//***********************************************************
//***********************************************************
//calcul des attributs
//***********************************************************
//***********************************************************
$reqattrib = mysql_query ("SELECT * FROM attributs");
$compteur = 0;
echo "<div class=\"attrib\">";
while ($compteur < mysql_numrows($reqattrib))
   {
      $nomattrib = mysql_result ($reqattrib, $compteur, "nom_attribut");
      $idattrib = mysql_result ($reqattrib, $compteur, "id_attribut");
      $req = mysql_query ("SELECT * FROM attributs_pj WHERE id_attribut='$idattrib' AND id_pj='$idpj'");
      $comptattrib = 0;
      $valeurattrib = mysql_result ($req, $comptattrib, "valeur_attribut");
      $plusattrib = mysql_result ($req, $comptattrib, "plus_attribut");
//***********************************************************
//***********************************************************
//affichage des attributs
//***********************************************************
//***********************************************************
      echo "<div class=\"attrib$compteur\">";
      echo "<table class=\"attrib\"><tr><td class=\"attrib\">$nomattrib</td>";
      if ($plusattrib == 0)
         {
            echo "<td class=\"valeur\">$valeurattrib D</td></tr>";
         }
      else
         {
            echo "<td class=\"valeur\">$valeurattrib D+ $plusattrib</td></tr>";
         }
//***********************************************************
//***********************************************************
//calcul des compétences
//***********************************************************
//***********************************************************
      $reqskill = mysql_query ("SELECT * FROM competences WHERE id_attribut='$idattrib' ORDER BY nom_competence");
      $comptskill = 0;
      while ($comptskill < mysql_numrows($reqskill))
         {
            $nomskill = mysql_result ($reqskill, $comptskill, "nom_competence");
            $idskill = mysql_result ($reqskill, $comptskill, "id_competence");
            $reqskillvaleur = mysql_query ("SELECT * FROM competences_pj WHERE id_competence='$idskill' AND id_pj='$idpj'");
            if (mysql_numrows($reqskillvaleur) == TRUE)
               {
                  $comptskill2 = 0;
                  $plusskill = mysql_result ($reqskillvaleur, $comptskill2, "plus_competence");
                  $diviseur = 3;
                  $division = $plusskill / $diviseur;
                  $entier = intval($division);
                  $reste = $division - $entier;
                  $reste = $reste * $diviseur;
//***********************************************************
//***********************************************************
//Si le résultat de la division est un entier, pas de soucis
//***********************************************************
//***********************************************************
                  if(is_int($division))
                     {
                        $valeurskill = $division + $valeurattrib;
                        $plusskill = $plusattrib;
                     }
//***********************************************************
//***********************************************************
//Si le résultat de la division est autre
//***********************************************************
//***********************************************************
                  elseif ($plusattrib == 0)
                     {
                        $valeurskill = $valeurattrib + $entier;
                        $plusskill = $reste;
                     }
                  elseif ($plusattrib == 1)
                     {
                        if ($reste == 1)
                           {
                              $valeurskill = $valeurattrib + $entier;
                              $plusskill = $plusattrib + $reste;
                           }
                        else
                           {
                              $valeurskill = $valeurattrib + $entier + 1;
                              $plusskill = 0;
                           }
                     }
                  elseif ($plusattrib == 2)
                     {
                        $valeurskill = $valeurattrib + $entier + 1;
                        if ($reste == 1)
                           {
                              $plusskill = 0;
                           }
                        else
                           {
                              $plusskill = 1;
                           }
                     }
                  
               }
            else
               {
                  $valeurskill = $valeurattrib;
                  $plusskill = $plusattrib;
               }
//***********************************************************
//***********************************************************
//récupération des spécialités
//***********************************************************
//***********************************************************
            $req = mysql_query ("SELECT * FROM specialites_pj WHERE id_pj='$idpj' AND id_competence='$idskill'");
            $compteurspe = 0;
            while ($compteurspe < mysql_numrows ($req))
               {
                  $idspe = mysql_result ($req, $compteurspe, "id_specialite");
                  $valeurspe = mysql_result ($req, $compteurspe, "valeur_specialite");
                  $plusspe = mysql_result ($req, $compteurspe, "plus_spe");
                  $reqspe = mysql_query ("SELECT * FROM specialites WHERE id_specialite='$idspe'");
                  $comptspee = 0;
                  $nomspe = mysql_result ($reqspe, $comptspee, "nom_specialite");
                  $compteurspe++;
               }
//***********************************************************
//***********************************************************
//affichage des compétences
//***********************************************************
//***********************************************************
            echo "<tr><td class=\"skill\">$nomskill</td>";
            if ($plusskill == 0)
               {
                  echo "<td class=\"valeur\">$valeurskill D</td></tr>";
               }
            else
               {
                  echo "<td class=\"valeur\">$valeurskill D+ $plusskill</td></tr>";
               }
            if ($valeurspe != 0)
               {
                  if ($plusspe == 0)
                     {
                        echo "<tr><td class=\"spe\">$nomspe</td><td class=\"valeur\">$valeurspe D</td></tr>";
                        $valeurspe = 0;
                     }
                  else
                     {
                        echo "<tr><td class=\"spe\">$nomspe</td><td class=\"valeur\">$valeurspe D+ $plusspe</td></tr>";
                        $valeurspe = 0;
                     }
               }
            $comptskill++;
         }
      echo "</table></div>";
      $compteur++;
   }
echo "</div>";
?>