Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2982 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Une classe qui me pose probleme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une classe qui me pose probleme

n°839643
Profil sup​primé
Posté le 02-09-2004 à 12:38:40  answer
 

Voila je continue mon entrainement sur les classes et je rencontre un soucis  
 
Je cherche a faire un simple flingue virtuel (texte) avec certain methode comme reload, shoot, creer un nouveau flingue ...
 
Le probleme se situe au niveau des methode reload et shoot, je n'arrive en aucun cas a retirer une balle au chargeur voir retirer un chargeur complet :(
 
Voici mon code
 

Code :
  1. <?php
  2. class Gun {
  3. var $name;
  4. var $numberOfBullet;
  5. var $numberOfMag;
  6. var $currentBullet;
  7. var $currentMag;
  8. //assign variables to the new gun
  9. function newGun() {
  10.  $this->name = $_POST["name"];
  11.  $this->numberOfBullet = $_POST["bullet"];
  12.  $this->numberOfMag = $_POST["mag"];
  13.  $this->currentMag = $_POST["mag"];
  14.  $this->currentBullet = $_POST["bullet"];
  15. }
  16. //show the form in order to add a new gun (which will erase the last one)
  17. function showNewGunForm() {
  18.  echo "<form action=\"".$_SERVER["PHP_SELF"]."\" method=\"POST\">".
  19.  "<input type=\"text\" name=\"name\"> Name <br />".
  20.  "<input type=\"text\" name=\"bullet\"> Number of bullet per Magazine <br />".
  21.  "<input type=\"text\" name=\"mag\"> Nunber of magazine <br />".
  22.  "<input type=\"submit\" name=\"newGunConfirm\" value=\"Add a gun\">";
  23. }
  24. //show the Gun "hud"
  25. function showGunInterface() {
  26.  echo "Current gun : ".$this->name."<br />".
  27.  "Bullet count : ".$this->currentBullet."<br />".
  28.  "Current magazine : ".$this->currentMag;
  29.  echo "<form action=\"".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"])."\" method=\"POST\">".
  30.  "<input type=\"submit\" name=\"shoot\" value=\"shoot !!\"> ".
  31.  "<input type=\"submit\" name=\"reload\" value=\"reload\">";
  32.  if (isset($_POST["shoot"]))
  33.   $this->shoot();
  34.  if (isset($_POST["reload"]))
  35.   $this->reload();
  36. }
  37. //remove a bullet after the shot
  38. function shoot() {
  39.  $this->currentBullet--;
  40.  header("Location: ".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"]));
  41. }
  42. function reload() {
  43.  //remove one mag
  44.  $this->currentMag--;
  45.  //tactical reload
  46.  if ($this->currentBullet>0)
  47.   $this->currentBullet=$this->numberOfBullet+1;
  48.  else
  49.   $this->currentBullet=$this->numberOfBullet;
  50.  $ser = serialize($gun);
  51.  header("Location: ".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"]));
  52. }
  53. }
  54. if (isset($_POST["newGun"])) {
  55. $add = new Gun;
  56. $add->showNewGunForm();
  57. }
  58. elseif (isset($_POST["newGunConfirm"])) {
  59. $gun = new Gun;
  60. $gun->newGun();
  61. //relocate after creating the gun
  62. $ser = serialize($gun);
  63. header("Location: ".$_SERVER["PHP_SELF"]."?gun=$ser" );
  64. }
  65. else {
  66. echo "<form action=\"".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"])."\" method=\"POST\">".
  67. "<input type=\"submit\" name=\"newGun\" value=\"Add a new gun\">";
  68. echo "<p>";
  69. //get the new gun class from the URL (serialized)
  70. $gun = unserialize($_GET["gun"]);
  71. $gun->showGunInterface();
  72. echo "</p>";
  73. }
  74. ?>


 
Je presise que creer un gun fonctionne, que ca m'affiche bien les variables...
J'ai fait un simple echo dans la methode shoot() pour voir si elle etait bien declanché..et elle l'est :jap:
 
reste a savoir pourquoi je n'arrive pas a decrementer le chargeur d'une balle :/

mood
Publicité
Posté le 02-09-2004 à 12:38:40  profilanswer
 

n°839817
alien_nan
Posté le 02-09-2004 à 14:06:44  profilanswer
 

Qd tu shootes, ca recharge la page, et il n'y a pas une erreur entre numberofbullet et currentbullet ?

n°839819
Profil sup​primé
Posté le 02-09-2004 à 14:07:11  answer
 

aucune erreur, je l'ai mis à E_ALL mais rien quand meme

n°839825
Profil sup​primé
Posté le 02-09-2004 à 14:09:07  answer
 

ah j'ai trouvé un indice qui m'aide pas mais qu'il est bien quand meme
 
dans la fonction de reload j'ai
 
$this->currentMag--;
 
je l'ai changer en  
 
$this->currentMag-1 et il m'affiche la bonne valeur mais ne la garde pas au reload :/


Message édité par Profil supprimé le 02-09-2004 à 14:09:50
n°839836
Profil sup​primé
Posté le 02-09-2004 à 14:10:54  answer
 

en fait c'est surement car je fait un header sur l'ancienne valeur [:noxauror]


Message édité par Profil supprimé le 02-09-2004 à 14:11:06
n°839882
Profil sup​primé
Posté le 02-09-2004 à 14:23:54  answer
 

ca y est j'ai trouvé ca venais effectivement du header :)
 
apparement on peu serialiser $this
 

Code :
  1. function shoot() {
  2.  if ($this->currentBullet==0)
  3.   $this->reload();
  4.  $this->currentBullet-=1;
  5.  $ser = serialize($this);
  6.  header("Location: ".$_SERVER["PHP_SELF"]."?gun=$ser" );
  7. }


 
merci pour avoir relancé le thead :)


Message édité par Profil supprimé le 02-09-2004 à 14:24:24
n°839899
alien_nan
Posté le 02-09-2004 à 14:27:30  profilanswer
 

de rien ;)

n°839929
alien_nan
Posté le 02-09-2004 à 14:33:57  profilanswer
 

chacal_one333 a écrit :

ca y est j'ai trouvé ca venais effectivement du header :)
 
apparement on peu serialiser $this
 

Code :
  1. function shoot() {
  2.  if ($this->currentBullet==0)
  3.   $this->reload();
  4.  $this->currentBullet-=1;
  5.  $ser = serialize($this);
  6.  header("Location: ".$_SERVER["PHP_SELF"]."?gun=$ser" );
  7. }


 
merci pour avoir relancé le thead :)


 
D'ailleurs pour la serialisation, tu peux serialiser des objets, et tu es obligé de le faire si tu veux les passer en session

n°839933
Profil sup​primé
Posté le 02-09-2004 à 14:34:43  answer
 

ouais ca je sais :)

n°839991
Sebastien
Posté le 02-09-2004 à 14:47:46  profilanswer
 

Toute facon c'est pas bien de jouer avec des armes à feux !

mood
Publicité
Posté le 02-09-2004 à 14:47:46  profilanswer
 

n°839996
Profil sup​primé
Posté le 02-09-2004 à 14:48:12  answer
 

:D
 
c'est qu'un exercice :o
qui me parait pas mal pour faire ca justement


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Une classe qui me pose probleme

 

Sujets relatifs
Problème Word VBA (saveas)variable globale, problème de link
organisation de block "div" avec les CSS: problemeprobleme afficahge page web
Problème d'affichage cssprobleme client attente d'une connexion server
[PHP/dédié] Problème de mail ( expediteur = nobody@monserveur.com )Problème avec Rowspan
Problème liste déroulante + javascriptProbleme HTML entre IE et Mozilla
Plus de sujets relatifs à : Une classe qui me pose probleme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR