IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conserver des valeurs PHP objet


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut Conserver des valeurs PHP objet
    Bonjour a tous !

    Je souhaiterais conserver les informations sur la vie d'un de mes personnages ( $Jean ) de sorte qu'a chaque rafraichissement il puisse décrémenter cette valeur...J'ai pensé aux sessions mais je ne vois pas comment les utiliser dans le code. J'ai aussi pensé a une base de donnée mais là je ne vois pas comment faire en sorte que les valeurs de la base soient "synchronisées" avec ma page ( et je me demande même si il ne faut pas changer de langage ou passer par du javascript ou du HTML 5 ). Dans la foulée, je pense que mon code est beaucoup trop lourd et j'aimerais utiliser des tableaux pour générer les cases par exemple ( et ainsi tirer parti du meilleur de l'objet ). Est ce que l'un d'entre vous aurait une ou quelques idées ? Merci par avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
    //inclure les classes dans le fichier
    include('colon.class.php');
    include('case_de_jeu.class.php');
     
    session_start();
     
    $Jean = new colon("Jean",rand(1,3),rand(1,3), 10);
    $Paul = new colon("Paul",rand(1,3),rand(1,3), 5);
     
    $c11 = new case_de_jeu("Glacier",1,1);
    $c12 = new case_de_jeu("Prairie",1,2);
    $c13 = new case_de_jeu("Prairie",1,3);
    $c21 = new case_de_jeu("Foret",2,1);
    $c22 = new case_de_jeu("Prairie",2,2);
    $c23 = new case_de_jeu("Glacier",2,3);
    $c31 = new case_de_jeu("Desert",3,1);
    $c32 = new case_de_jeu("Prairie",3,2);
    $c33 = new case_de_jeu("Desert",3,3);
     
    echo "".$Paul->getcolon_nom()." est a ".$Paul->getcolon_y()." ordonnee et est a ".$Paul->getcolon_x()." abcisse <br />";
    echo "".$Jean->getcolon_nom()." est a ".$Jean->getcolon_y()." ordonnee et est a ".$Jean->getcolon_x()." abcisse <br /><br />";
     
    echo "La case qui est a ".$c11->getcase_y()." ordonnee et est a ".$c11->getcase_x()." abcisse est de type ".$c11->getcase_nom()." <br />";
    echo "La case qui est a ".$c12->getcase_y()." ordonnee et est a ".$c12->getcase_x()." abcisse est de type ".$c12->getcase_nom()." <br />";
    echo "La case qui est a ".$c13->getcase_y()." ordonnee et est a ".$c13->getcase_x()." abcisse est de type ".$c13->getcase_nom()." <br />";
    echo "La case qui est a ".$c21->getcase_y()." ordonnee et est a ".$c21->getcase_x()." abcisse est de type ".$c21->getcase_nom()." <br />";
    echo "La case qui est a ".$c22->getcase_y()." ordonnee et est a ".$c22->getcase_x()." abcisse est de type ".$c22->getcase_nom()." <br />";
    echo "La case qui est a ".$c23->getcase_y()." ordonnee et est a ".$c23->getcase_x()." abcisse est de type ".$c23->getcase_nom()." <br />";
    echo "La case qui est a ".$c31->getcase_y()." ordonnee et est a ".$c31->getcase_x()." abcisse est de type ".$c31->getcase_nom()." <br />";
    echo "La case qui est a ".$c32->getcase_y()." ordonnee et est a ".$c32->getcase_x()." abcisse est de type ".$c32->getcase_nom()." <br />";
    echo "La case qui est a ".$c33->getcase_y()." ordonnee et est a ".$c33->getcase_x()." abcisse est de type ".$c33->getcase_nom()." <br />";
    echo "<br>";
     
    echo '<b>interaction entre les objets</b><br>';
    if ($Paul->getcolon_y()=== $Jean->getcolon_y() && $Paul->getcolon_x()=== $Jean->getcolon_x())
    {echo "<font color='red'> ".$Paul->getcolon_nom()." croise ".$Jean->getcolon_nom()." </font><br />";
     
    $Jean->perdre_un_pv();}
    else
    {
    echo 'Rien de special<br>';
    }
     
    echo '<b>interaction avec la carte</b><br>';
    if ($Paul->getcolon_y() === $c11->getcase_y() && $Paul->getcolon_x()=== $c11->getcase_x())
    {echo "<font color='blue'>".$Paul->getcolon_nom()." se gele dans un ".$c11->getcase_nom()." </font><br />";}
     
    if ($Paul->getcolon_y() === $c33->getcase_y() && $Paul->getcolon_x()=== $c33->getcase_x())
    {echo "<font color='orange'>".$Paul->getcolon_nom()." a trop chaud dans ce ".$c33->getcase_nom()." </font><br />";}
     
    if ($Paul->getcolon_y() === $c21->getcase_y() && $Paul->getcolon_x()=== $c21->getcase_x())
    {echo "<font color='green'>".$Paul->getcolon_nom()." a peur des animaux dans cette ".$c21->getcase_nom()." </font><br />";}
     
    if ($Jean->getcolon_y() === $c11->getcase_y() && $Jean->getcolon_x()=== $c11->getcase_x())
    {echo "<font color='blue'>".$Jean->getcolon_nom()." se gele dans un ".$c11->getcase_nom()." </font><br />";}
     
    if ($Jean->getcolon_y() === $c33->getcase_y() && $Jean->getcolon_x()=== $c33->getcase_x())
    {echo "<font color='orange'>".$Jean->getcolon_nom()." a trop chaud dans ce ".$c33->getcase_nom()." </font><br />";}
     
    if ($Jean->getcolon_y() === $c21->getcase_y() && $Jean->getcolon_x()=== $c21->getcase_x())
    {echo "<font color='green'>".$Jean->getcolon_nom()." a peur des animaux dans cette ".$c21->getcase_nom()." </font><br />";}
     
    // $Jean->setcolon_nom("Albert");
    // echo $Jean->getcolon_nom();
     
    echo "Point de vie de Jean ( lorsqu'il croise Paul, ils se battent...et c'est Jean qui perd un point de vie ! )" ;echo "<br>";
    echo $Jean->getcolon_vie();
     
    ?>
    La classe colon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
     
    class colon
    {
     
    public $colon_nom = "";
    public $colon_x ;
    public $colon_y = "";
    public $colon_vie = "";
    // le constructeur
    public function __construct ($colon_nom, $colon_x, $colon_y, $colon_vie)
    {
     
    $this->colon_nom= $colon_nom; $this->colon_x= $colon_x; $this->colon_y= $colon_y; $this->colon_vie =$colon_vie;
     
    }
    //accesseurs
     
    public function getcolon_nom() { return $this->colon_nom; }
    public function getcolon_x() { return $this->colon_x; }
    public function getcolon_y() { return $this->colon_y; }
    public function getcolon_vie() { return $this->colon_vie; }
     
    public function setcolon_nom($colon_nom) { $this->colon_nom =$colon_nom; }
    public function setcolon_x($colon_x) { $this->colon_x =$colon_x; }
    public function setcolon_y($colon_y) { $this->colon_y =$colon_y; }
    public function setcolon_vie($colon_vie) { $this->colon_vie =$colon_vie; }
     
    public function deplacement_aleatoire(colon $colon)
    {
    $colon->colon_x = $colon->colon_x+1;
    }
     
    public function perdre_un_pv()
    {
    $this->colon_vie--;
    }
     
    // public function bagarre_colon(colon $colon_frappé, $colon_frappeur)
    // {$colon->colon_x = $colon_frappé->force - 1;
    // $colon_frappeur->moral = $colon_frappeur->moral + 1;
    // }
     
    // public function prendre_potion_force(colon $colon1)
    // {
    // $this->force = $this->force + 1;
    // echo "gloup gloup gloup";
     
    // }
     
    }
     
     
     
     
     
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu souhaites que les données soient conservées après la fermeture du navigateur, oui il faut une base de données.
    Et effectivement pour décrire un grille, un tableau a deux dimensions c'est pratique.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut
    Merci pour cette réponse ! Cet après midi j'ai tenté quelque chose : j'ai instancié un objet qui était en base de donnée vers ma page. Pas de soucis ! Et actuellement j'essaye de mettre a jour les attributs de ce dernier vers la base...je ne sais pas si c'est la meilleure façon d'arriver a mon but mais c'est un challenge intellectuel car je viens de loin en "objet" et c'est passionnant Je crois que en créant une table qui contiendra les données du "tour" précédant, les possibilités devraient être très intéressantes ! J'en profite pour remercier l'ensemble des utilisateurs actifs de ce forum, qui sont d'une aide très précieuse.

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour LeMage.
    Tu apprends donc PHP objet, et tu sais faire une condition (if)...
    C'est un début.

    Et tu te lances dans les bases, au moins tu n'as pas peur d'apprendre.

    Ceci dit, ce qui frappe dans ton code, c'est que tu ne sais pas faire de tableau, ni de boucle. Alors si je puis me permettre, il va falloir travailler un peu cela avant les bases, en matière de priorité. Parce que pour récupérer les infos de ta base, tu vas sans arrêt boucler et remplir des tableaux; Et il y a des boucles de toute sorte, et des tableaux de toute sorte. Mieux vaut en comprendre les grandes lignes. L'itération, faut pratiquer, au début, ça paraît un peu abstrait.

    Je te propose ces modifications à partir de ton code, en utilisant des variables de session, pour que tu comprennes un peu la syntaxe... et la logique.
    Et pis bon, j'ai fait un tuto qui pourra t'intéresser (ma signature).

    Bonne continuation !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    //inclure les classes dans le fichier
    include('colon.class.php');
    include('case_de_jeu.class.php');
     
    session_start();
     
    $Jean = new colon("Jean",rand(1,3),rand(1,3), 10);
    $Paul = new colon("Paul",rand(1,3),rand(1,3), 5);
     
    //pour construire ton damier aléatoire et le ranger pour toute la session dans une variable stable
    if(empty($_SESSION['plateau']))[
    	$_SESSION['paysages']=array('Glacier','Prairie','Foret','Desert');
    	$_SESSION['plateau']=array();
     
    	for($x=1;$x<=3;$x++){
    		for($y=1;$y<=3;$y++){
    			$curPaysage=$_SESSION['paysages'][rand(0,3)];//ici tu choisis au hasard un paysage
    			$curCase= new case_de_jeu($curPaysage,$x,$y);//tu construis ta case
    			array_push($_SESSION['plateau'],$curCase);//tu ranges ta case dans un tableau de session
    		}
    	}
    }
    /*Pour voir ce que contient ta variable $_SESSION['plateau']*/
    echo '<pre>';
    print_r($_SESSION['plateau']);
    echo '</pre>';
     
     
    echo "".$Paul->getcolon_nom()." est a ".$Paul->getcolon_y()." ordonnee et est a ".$Paul->getcolon_x()." abcisse <br />";
    echo "".$Jean->getcolon_nom()." est a ".$Jean->getcolon_y()." ordonnee et est a ".$Jean->getcolon_x()." abcisse <br /><br />";
    foreach($_SESSION['plateau'] as $c){
    	echo "La case qui est a ".$c->getcase_y()." ordonnee et est a ".$c->getcase_x()." abcisse est de type ".$c->getcase_nom()." <br />";
    }
     
    echo '<b>interaction entre les objets</b><br>';
    if ($Paul->getcolon_y()=== $Jean->getcolon_y() && $Paul->getcolon_x()=== $Jean->getcolon_x())
    {echo "<font color='red'> ".$Paul->getcolon_nom()." croise ".$Jean->getcolon_nom()." </font><br />";
     
    $Jean->perdre_un_pv();}
    else
    {
    echo 'Rien de special<br>';
    }
     
    echo '<b>interaction avec la carte</b><br>';
    //A toi maintenant d'utiliser  $_SESSION['plateau'] pour la suite
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut
    Un grand merci Dendrite pour ta réponse ! Non seulement tu peux te permettre, mais j'apprécie particulièrement ton nouveau code : tu as vu juste effectivement j'ai un petit "problème" avec les tableaux. Je vais me réviser aussi les boucles conditionnelles. Si j'ai tout compris c'est un tableau a 2D qu'il faut utiliser la plupart du temps pour faire des grilles ? Je vais de ce pas lire ton tuto intégralement. Bien a toi.

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    De rien, Le mage.
    (Pour mon tuto, ne travaille surtout pas la partie db, elle est obsolète et je vais bientôt la refondre).

    A ta question : faire des grilles.
    Oui, on peut faire des abcisses et des ordonnées, dans un tableau à deux dimensions.
    Prenons un tableau de 10 sur 10 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //ici on définit un damier tout en le remplissant avec un paysage aléatoire
    $damier=array();
    for($x=1;$x<=10;$x++){
       for($y=1;$y<=10;$y++){
          $damier[$x][$y]=$paysages[rand(0,3)];
       }
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Cookies] Conservation des valeurs de variable
    Par orionis dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2006, 15h02
  2. [Cookies] Conserver des valeurs de champs
    Par Sergejack dans le forum Langage
    Réponses: 4
    Dernier message: 31/07/2006, 11h17
  3. [POO] PB d'interprétation des '\n' (PHP Objet)
    Par Bobabar dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 01h08
  4. Conserver des valeurs quand on ferme le programme
    Par Yepazix dans le forum Langage
    Réponses: 1
    Dernier message: 05/02/2006, 15h59
  5. [C#] Conserver des valeurs de propriétés d'une page
    Par elod38 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/03/2005, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo