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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    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
    Points : 44 155
    Points
    44 155
    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.

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

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    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

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

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    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)];
       }
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Alors en bon élève j'ai retravaillé un peu le code, voici la nouvelle mouture :

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?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, 10);
    $Paul = new colon("", "Paul",rand(1,3),rand(1,3), 5, 10);
     
    //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();	
    	$_SESSION['x']=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 '<pre>';
    print_r($_SESSION['plateau'][0]->getcase_y());
    echo '</pre>';
    echo '<pre>';
    print_r($_SESSION['x']);
    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>';
    if ($Paul->getcolon_y() === $_SESSION['plateau'][0]->getcase_y() && $Paul->getcolon_x()=== $_SESSION['plateau'][0]->getcase_x())
    {echo "<font color='blue'>".$Paul->getcolon_nom()." se gele dans un ".$_SESSION['plateau'][0]->getcase_nom()." </font><br />";}
     
    //utilisation de ce que m'a appris ma chere Dendrite, une combinaison de tableau et de test conditionnel
    foreach($_SESSION['plateau'] as $c){
    if ($c->getcase_nom() === "Glacier" && $Paul->getcolon_y() === $c->getcase_y() && $Paul->getcolon_x()=== $c->getcase_x() ) echo "haha ".$Paul->getcolon_nom()." se gele <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 />";}
     
    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>";
     
     
    if ($Jean->getcolon_vie()<=0){echo "Jean est mort";} else {echo "Jean est vivant";}
     
    echo $Jean->getcolon_vie();
     
    ?>
    Qu'en pensez vous ? Je ne peux que encourager les débutants a se motiver pour comprendre les tableaux car...ça vaut carrément le coup, surtout combiné a des conditionnels

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Par contre aujourd'hui j'ai passé une bonne partie de mon temps sur le problème ( surement simple j'ai honte ) suivant : comment conserver la valeur de la vie du perso sur toute la session...il s'agit d'une variable contenue dans un objet, et je n'ai pas trouvé comment faire Pour l'instant la méthode perdre_un_pv fait perdre a Jean de un a deux points de vie aléatoire et normalement lorsque sa vie arrive a 0 un message apparait comme quoi il est mort ( sinon il est vivant )

    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
    <?php
    include('colon.class.php');
    include('case_de_jeu.class.php');
    session_start();
     $plateau_maxi_x = 3;
     $plateau_maxi_y = 3;
     $_SESSION['vie'] = 10;
    $Jean = new colon("", "Jean",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 10, $_SESSION['vie'] );
    $Paul = new colon("", "Paul",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 5, 10);
     
    echo $Jean->getcolon_vie();
    echo '<br>';
    $Jean->perdre_un_pv();
    echo $Jean->getcolon_vie();
    $vie_apres = $Jean->getcolon_vie() ;
    echo '<br>';
    echo $_SESSION['vie'];
     
    if ($Jean->getcolon_vie()<=0){echo "Jean est mort et il n a plus de PV";} else {echo "Jean est vivant et il lui reste ".$Jean->getcolon_vie()." point(s) de vie";}
     
     
    ?>

  9. #9
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Excellente question.
    Oublie le $_SESSION['vie'] et fais directement ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $_SESSION['joueurs']=array(); 
    array_push($_SESSION['joueurs'], new colon("", "Jean",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 10,10 );
    array_push($_SESSION['joueurs'], new colon("","Paul",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 5, 10);
    Tu mets en session un tableau d'objets colon. (Une convention importante en objet : new Colon avec un C majuscule, une classe commence toujours par une majuscule).

    Pour retrouver Jean et TOUTES ses propriétés et méthodes, une syntaxe dans ce goût

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_SESSION['joueurs'][0]->getVie();
    Et si la "place" que prend tous ces objets en session t'inquiète, sache qu'au contraire, même l'objet le plus complexe est stocké par son adresse mémoire, c'est entre autre ce qui fait la performance du code objet. En plus du fait qu'un code objet bien conçu 1) factorise le code 2) fait développer tout le monde pareil, et donc... et plus facile à maintenir. 3) Permet quand on regarde les classes modèle, de savoir tout de suite le but du programme, ses fonctionnalités.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse ! Ca marche niquel pour placer mes colons dans le nouveau tableau. Idem pour acceder aux données. Par contre lorsque j'essaye de modifier une donnée ( par exemple la vie ) je n'y arrive pas. J'ai essayé comme ça en passant par une autre variable $aaa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $Jean = new colon("", "Jean",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 10, 10);
    $Paul = new colon("", "Paul",rand(1,$plateau_maxi_x),rand(1,$plateau_maxi_y), 5, 10);
     
    $_SESSION['joueurs']=array();
    array_push($_SESSION['joueurs'], $Jean);
    array_push($_SESSION['joueurs'], $Paul);
     
    $aaa = $_SESSION['joueurs'][0]->getcolon_vie();
    $aaa = $aaa - 1;
    $_SESSION['joueurs'][0]->setcolon_vie($aaa);
    $aaa = $_SESSION['joueurs'][0]->getcolon_vie();
    echo $_SESSION['joueurs'][0]->getcolon_vie();
    Mais ça m'affiche toujours la valeur initiale....j'ai pensé passer par la classe colon mais peut être que quelque chose m'échappe ?

  11. #11
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Quand tu fais un
    Tu es bien en php 5.3 et au delà ?

    avec php 5.3 et au delà, le stockage d'objet en session ne pose aucun problème.
    J'ai testé ceci vite fait et ça marche.

    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
    session_start();
    $_SESSION['liste']=array();
    array_push($_SESSION['liste'],new Truc('Fred',14));
    array_push($_SESSION['liste'],new Truc('Jamy',41));
    echo '<pre>';
    print_r($_SESSION['liste']);
    echo '</pre>';
    $_SESSION['liste'][0]->vieillit();
    $_SESSION['liste'][1]->rajeunit();
    echo '<pre>';
    print_r($_SESSION['liste']);
    echo '</pre>';
    class Truc{
    	public $nom='';
    	public $age='';
    	public function __construct($nom,$age){
    		$this->nom=$nom;
    		$this->setAge($age);
    	}
    	public function getAge(){
    		return $this->age;
    	}
    	public function setAge($age){
    		$this->age=$age;
    	}
    	public function vieillit(){
    		$this->age++;
    	}
    	public function rajeunit(){
    		$this->age--;
    	}
    }
    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
    Array
    (
        [0] => Truc Object
            (
                [nom] => Fred
                [age] => 14
            )
     
        [1] => Truc Object
            (
                [nom] => Jamy
                [age] => 41
            )
     
    )
     
    Array
    (
        [0] => Truc Object
            (
                [nom] => Fred
                [age] => 15
            )
     
        [1] => Truc Object
            (
                [nom] => Jamy
                [age] => 40
            )
     
    )

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Re Oui en effet la version de php est bien supérieure a 5.3 et j'ai fait un test, ça fonctionne comme chez toi.

    Je viens de comprendre que la session permet de garder une valeur d'un rafraichissement a l'autre, j'aimerais garder cette valeur sur des dizaines voire des centaines de rafraichissement : par exemple a force de se croiser l'un des colons qui perd un point de vie a chaque fois fini par mourir

    j'ai trouvé une façon d'injecter des données dans une base mySQL pour arriver a ce but...j'ai vu des scripts marcher sans bases de données "conserver" un déplacement par exemple. Je ne sais pas du tout si c'est possible sans bases. En tout cas merci pour le coup de pouce et les explications, je progresse énormément depuis cet échange !

+ 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