JeuWeb - Crée ton jeu par navigateur
Achat de troupes. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Achat de troupes. (/showthread.php?tid=942)

Pages : 1 2


Achat de troupes. - zneman - 16-03-2007

Bonjour Smile
Ma question va sembler bien bete pour certains mais bon... Tongue
Je cherche à savoir comment faire pour que, lorsque je recupere le $_POST['achat'], je fait pour enlever des ressources au joueurs, lui dire qu'il n'a pas assez de sous si c'est le cas, mettre a jour la BDD avec ses troupes suplementaires.

Ma phrase n'est pas en super bon français alors je vais faire un dessin (c'est toujours plus compréhensible que de mots Smile): Exemple:

Mes ressources: 20000 galds (monnaie du jeu)
Les archers que je possède: 20
Sachant qu'un archer coute 15000 Galds et que je veux en acheter 1 !
Je suis donc sur ma page archers.php et je rentre la valeur "1" dans le formulaire de saisies. Je valide en faisant "acheter" et le formulaire me renvois sur la même page sauf qu'il doit faire:
- "vous avez achetez $_POST['achat'] archers !"
- il doit me les ajouter aux 20 archers que je possede deja Smile

Comment faire ? Tongue
Merci d'avance Smile (je sais quel vocabulaire utiliser mais je n'arrive pas a concevoir encore tout a fait comment mettre cela en forme :heuuuSmile


RE: Achat de troupes. - pascal - 16-03-2007

hum!

il faut vérifier que les données sont valides, que le joueur a assez d'argent, puis faire des UPDATE dans les tables contenant l'argent et le stock de troupes du joueur.

A+

Pascal


RE: Achat de troupes. - zneman - 16-03-2007

xD Pascaltje... comme je l'ai dis, je sais ce qu'il faut faire... le problème c'est que je ne sais pas "comment" le faire Tongue


RE: Achat de troupes. - Sephi-Chan - 16-03-2007

Hm... C'est vrai que ta question n'est pas terrible, on est là pour t'aider, pas pour faire ton code. D'autant que même si on le voulait, tu ne donnes pas les bonnes informations pour qu'on le fasse.

Donc, dans un premier temps tu testes si le formulaire a été rempli, c'est à dire que la variable $_POST['achat'] n'est pas vide par un if(!empty($_POST['achat'])){ ... }.

Ensuite tu multiplies le prix d'un archer (stocké dans un array, variable, constante, BdD, etc.) par le nombre d'archers acheté (en l'occurrence 1), par $_POST['achat']*$prix_archer.

Tu compares ça avec les fonds actuels du joueur (je suppose que ce chiffre est stocké dans un champ de la table "joueur" de la BdD).

Si les fonds sont suffisants, tu utilises une requête de type UPDATE qui soustrait à la valeur actuelle d'argent du joueur la valeur du produit de ton précédent calcul.

Tu incrémente également le nombre d'archers dont dispose le joueur.

Si le joueur n'est pas assez riche, tu ne fais rien.


Voila, je ne peux rien te propose de plus à cause du manque de précision des informations que tu donnes, mais ça pourra peut-être t'aider.

J'espère tout de même pour toi que ce n'est pas l'aspect technique de ces quelques actions qui te posent problème. Si c'est le cas tu peux arrêter d'office le développement du jeu au profit d'un projet de site "normal".

Si tu as d'autres questions, n'hésite pas.


Sephi-Chan, bonne chance dans tous les cas. Wink


zneman a écrit :xD Pascaltje... comme je l'ai dis, je sais ce qu'il faut faire... le problème c'est que je ne sais pas "comment" le faire Tongue
Alors ne fait pas de jeu. Tu peux sinon donner un peu plus de précision sur la structure de tes tables, le stockage des diverses variables, etc.


RE: Achat de troupes. - pascal - 16-03-2007

ok

tu dois apprendre le SQL, notamment "comment" faire des UPDATE

( _et je reste zen, c'est dingue! grrrr!_ )

c'est bien ce que je pensais, encore quelqu'un qui veut faire un jeu sans savoir qu'il faut apprendre le PHP, le SQL et le HTML.

A+

Pascal


RE: Achat de troupes. - Sephi-Chan - 16-03-2007

Idem. Voir des gens qui veulent sauter les étapes a tendance à me mettre en rogne...


Sephi-Chan, qui va se mettre à flammer ce genre de personne >.< !


Edit : J'ai adoré ta réponse Pascal ! xD


RE: Achat de troupes. - pascal - 16-03-2007

j'ai juste envie de le taper, mais c'est parce que j'ai eu une mauvaise semaine, je suppose.

A+

Pascal


RE: Achat de troupes. - zneman - 16-03-2007

Mdr... ne vous enervez pas les gens Tongue
Je vous l'ai dis... JE SAIS FAIRE LES UPDATE ETC... je ne sais juste pas comment mettre tout ensemble Tongue

Bon... voila ce que je viens de faire:

Code PHP :
<?php 
//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");
//Connexion à la base de données.
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name);

$reponse = mysql_query("SELECT * FROM troupes, membres WHERE pseudo='".$pseudo."' LIMIT 1");
$donnees = mysql_fetch_array($reponse);
// Si $_POST['achat'] existe:
if(!empty($_POST['achat'])
{
if (
$_POST['pseudo'] != NULL)
{
// Si j'ai assez d'argent pour payer cet achat
if(($_POST['achat']*15000)<'.$donnees['gald'].';
{
$depense=$_POST['achat']*15000;
$galdsnow=('.$donnees['gald'].'-$depense;
$archersnow='.$donnees['archer_lege'].'+$_POST['achat'];
// Actualisation de la BDD
mysql_query("UPDATE membres SET gald=$galdnow WHERE pseudo='".$pseudo."'");
mysql_query("UPDATE troupes SET archer_lege=archersnow WHERE pseudo='".$pseudo."'");
}
else echo
'Desole mon seigneur mais vous n\'avez pas assez de galds pour acheter tant d\'archers';
}
}
}

Dites moi s'il ya des fautes (il doit bien y en avoir ^^) et où je peux améliorer ce script Smile merci Smile


RE: Achat de troupes. - Sephi-Chan - 16-03-2007

Ouf ! Tout ça m'a fait peur...

Alors quelques conseils en vrac pour ton script :
  • Utilise mysql_fetch_assoc() plutôt que mysql_fetch_array().

  • Vérifie que $_POST['achat'] est bien un nombre ou une chaîne numérique (les entrées de formulaire sont toujours des chaînes) grâce au test is_numeric. Vérifie également que ce nombre est supérieur à zéro.

  • Remplace :
    Code PHP :
    <?php 
    if(($_POST['achat']*15000)<'.$donnees['gald'].';
          {
          $depense=$_POST['achat']*15000;
          $galdsnow=('.$donnees['gald'].'-$depense;
          $archersnow='.$donnees['archer_lege'].'+$_POST['achat'];
          // Actualisation de la BDD
         mysql_query("UPDATE membres SET gald=$galdnow WHERE pseudo='".$pseudo."'");
         mysql_query("UPDATE troupes SET archer_lege=archersnow WHERE pseudo='".$pseudo."'");
         }
        else echo 'Desole mon seigneur mais vous n\'avez pas assez de galds pour acheter tant d\'archers';
    Par :
    Code PHP :
    <?php 
    (($_POST['achat']*15000) <= $donnees['gald'])
         {
         $depense= $_POST['achat']*15000;
         // Actualisation de la BDD
         $req1 = sprintf("UPDATE membres SET gald = gald-%d WHERE pseudo = '%s'", $depense, $pseudo);
         $req2 = sprintf("UPDATE troupes SET archer_lege = archer_lege + %d WHERE pseudo='%s'", $_POST['achat'], $pseudo);
         mysql_query($req1);
         mysql_query($req2);
         }
         else echo "Desolé mon seigneur, mais vous n'avez pas assez de galds pour acheter tant d'archers.";
       }

Voilà.

Sephi-Chan


RE: Achat de troupes. - zneman - 16-03-2007

Merci a toi Smile

Citation :Ouf ! Tout ça m'a fait peur...

Tu veux dire quoi par la ? :heuuu:
Il est si moche que ca mon codage ?! :pleure2: