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 :
- <?php
- class Gun {
- var $name;
- var $numberOfBullet;
- var $numberOfMag;
- var $currentBullet;
- var $currentMag;
- //assign variables to the new gun
- function newGun() {
- $this->name = $_POST["name"];
- $this->numberOfBullet = $_POST["bullet"];
- $this->numberOfMag = $_POST["mag"];
- $this->currentMag = $_POST["mag"];
- $this->currentBullet = $_POST["bullet"];
- }
- //show the form in order to add a new gun (which will erase the last one)
- function showNewGunForm() {
- echo "<form action=\"".$_SERVER["PHP_SELF"]."\" method=\"POST\">".
- "<input type=\"text\" name=\"name\"> Name <br />".
- "<input type=\"text\" name=\"bullet\"> Number of bullet per Magazine <br />".
- "<input type=\"text\" name=\"mag\"> Nunber of magazine <br />".
- "<input type=\"submit\" name=\"newGunConfirm\" value=\"Add a gun\">";
- }
- //show the Gun "hud"
- function showGunInterface() {
- echo "Current gun : ".$this->name."<br />".
- "Bullet count : ".$this->currentBullet."<br />".
- "Current magazine : ".$this->currentMag;
- echo "<form action=\"".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"])."\" method=\"POST\">".
- "<input type=\"submit\" name=\"shoot\" value=\"shoot !!\"> ".
- "<input type=\"submit\" name=\"reload\" value=\"reload\">";
- if (isset($_POST["shoot"]))
- $this->shoot();
- if (isset($_POST["reload"]))
- $this->reload();
- }
- //remove a bullet after the shot
- function shoot() {
- $this->currentBullet--;
- header("Location: ".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"]));
- }
- function reload() {
- //remove one mag
- $this->currentMag--;
- //tactical reload
- if ($this->currentBullet>0)
- $this->currentBullet=$this->numberOfBullet+1;
- else
- $this->currentBullet=$this->numberOfBullet;
- $ser = serialize($gun);
- header("Location: ".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"]));
- }
- }
- if (isset($_POST["newGun"])) {
- $add = new Gun;
- $add->showNewGunForm();
- }
- elseif (isset($_POST["newGunConfirm"])) {
- $gun = new Gun;
- $gun->newGun();
- //relocate after creating the gun
- $ser = serialize($gun);
- header("Location: ".$_SERVER["PHP_SELF"]."?gun=$ser" );
- }
- else {
- echo "<form action=\"".$_SERVER["PHP_SELF"]."?gun=".eregi_replace('"', '%22', $_GET["gun"])."\" method=\"POST\">".
- "<input type=\"submit\" name=\"newGun\" value=\"Add a new gun\">";
- echo "<p>";
- //get the new gun class from the URL (serialized)
- $gun = unserialize($_GET["gun"]);
- $gun->showGunInterface();
- echo "</p>";
- }
- ?>
|
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
reste a savoir pourquoi je n'arrive pas a decrementer le chargeur d'une balle