[Programmation] Faire des calculs en PHP

De l'aide, des conseils, un tutorial par rapport à un logiciel, je vous en prie, prenez place.

[Programmation] Faire des calculs en PHP

Messagepar Rico the Hobbit » Lun 1 Nov 2010 12:31

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>";
?>
Image
Avatar de l’utilisateur
Rico the Hobbit
Gérant du forum
 
Messages: 2137
Inscription: Mar 18 Nov 2003 00:33
Localisation: Cul-de-sac

Retourner vers Logiciels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

cron