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 :

Manipulation objet PHP valeur incohérente


Sujet :

Langage PHP

  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 Manipulation objet PHP valeur incohérente
    Bonjour a tous,

    Je rencontre un soucis un peu bizarre sur l'un de mes scripts, les valeurs retournées fonctionnent....mais pas toujours !
    Voici un exemple de résultat retourné par le script qui ne "colle" pas :

    ================================
    Paul est a 1 ordonnee et est a 3 abcisse
    Jean est a 1 ordonnee et est a 3 abcisse

    interaction entre les objets
    Rien de special
    interaction avec la carte
    Jean se gele Il fait froid ici, une tempete de glace

    ==================
    Alors que la tempete de glace est en 1,1...

    voici mon main.php

    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
    <?php
    //inclure les classes dans le fichier
    include('colon.class.php');
    include('case_de_jeu.class.php');
     
    $Jean = new colon("Jean",rand(1,3),rand(1,3));
    $Paul = new colon("Paul",rand(1,3),rand(1,3));
     
    $blizard = new case_de_jeu("Il fait froid ici, une tempete de glace",1,1);
    $desert = new case_de_jeu("Il fait trop chaud ici c'est un 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 ".$Paul->getcolon_x()." abcisse <br /><br />";
     
    echo '<b>interaction entre les objets</b><br>';
    if ($Paul->getcolon_y()=== $Jean->getcolon_y() && $Paul->getcolon_x()=== $Jean->getcolon_x())
    {echo "".$Paul->getcolon_nom()." croise ".$Jean->getcolon_nom()." <br />";}
    else
    {
    echo 'Rien de special<br>';
    }
     
    echo '<b>interaction avec la carte</b><br>';
    if ($Paul->getcolon_y() === $blizard->getcase_y() && $Paul->getcolon_x()=== $blizard->getcase_x())
    {echo "".$Paul->getcolon_nom()." se gele ".$blizard->getcase_nom()." <br />";}
     
    if ($Paul->getcolon_y() === $desert->getcase_y() && $Paul->getcolon_x()=== $desert->getcase_x())
    {echo "".$Paul->getcolon_nom()." a trop chaud ".$desert->getcase_nom()." <br />";}
     
    if ($Jean->getcolon_y() === $blizard->getcase_y() && $Jean->getcolon_x()=== $blizard->getcase_x())
    {echo "".$Jean->getcolon_nom()." se gele ".$blizard->getcase_nom()." <br />";}
     
    if ($Jean->getcolon_y() === $desert->getcase_y() && $Jean->getcolon_x()=== $desert->getcase_x())
    {echo "".$Jean->getcolon_nom()." a trop chaud ".$desert->getcase_nom()." <br />";}
     
    ?>
    Le fichier case_de_jeu.class.php
    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
    <?php
     
    class case_de_jeu
    {
     
    public $case_nom = "";
    public $case_x = "";
    public $case_y = "";
    // le constructeur
    public function __construct ($case_nom, $case_x, $case_y)
    {
     
    $this->case_nom= $case_nom; $this->case_x= $case_x; $this->case_y= $case_y;
     
    }
    //accesseurs
     
    public function getcase_nom() { return $this->case_nom; }
    public function getcase_x() { return $this->case_x; }
    public function getcase_y() { return $this->case_y; }
     
    public function setcase_nom() { return $this->case_nom =$case_nom; }
    public function setcase_x() { return $this->case_x =$case_x; }
    public function setcase_y() { return $this->case_y =$case_y; }
     
    // méthodes
    /* public function perdreforce()
    { $this->force = $this->force - 1; } */
     
     
    // public function deplacement_aleatoire(case_de_jeu $case)
    // {
    // $case->case_x = $case->case_x+1;
    // }
     
    // public function bagarre_case(case $case_frappé, $case_frappeur)
    // {$case->case_x = $case_frappé->force - 1;
    // $case_frappeur->moral = $case_frappeur->moral + 1;
    // }
     
    // public function prendre_potion_force(case $case1)
    // {
    // $this->force = $this->force + 1;
    // echo "gloup gloup gloup";
     
    // }
     
    }
     
     
    ?>
    Le fichier colon.class.php :

    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
    <?php
     
    class colon
    {
     
    public $colon_nom = "";
    public $colon_x = "";
    public $colon_y = "";
    // le constructeur
    public function __construct ($colon_nom, $colon_x, $colon_y)
    {
     
    $this->colon_nom= $colon_nom; $this->colon_x= $colon_x; $this->colon_y= $colon_y;
     
    }
    //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 setcolon_nom() { return $this->colon_nom =$colon_nom; }
    public function setcolon_x() { return $this->colon_x =$colon_x; }
    public function setcolon_y() { return $this->colon_y =$colon_y; }
     
    // méthodes
    /* public function perdreforce()
    { $this->force = $this->force - 1; } */
     
     
    public function deplacement_aleatoire(colon $colon)
    {
    $colon->colon_x = $colon->colon_x+1;
    }
     
    // 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";
     
    // }
     
    }
     
    ?>
    Je soupçonne un soucis de pointeur et d'allocation de la zone mémoire...ais-je bon ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Pourquoi est-ce que tu parles de pointeur et d'allocation mémoire? Le jour où tu pourras faire ça directement avec PHP, tu me réveilleras :-)

    Le problème est que ton code est très peu lisible, et ça t'empêche de voir que tu utilises des variables incorrectement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "".$Jean->getcolon_nom()." est a ".$Jean->getcolon_y()." ordonnee et est a ".$Paul->getcolon_x()." abcisse <br /><br />";
    tu utilises $Paul au lieu de $Jean la 3e fois.

    De plus, aucune de tes setters ne marche.

  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 milles fois ! Je vais regarder pour les setters et aussi pour améliorer la lisibilité du code. Bien a toi.

Discussions similaires

  1. Manipuler dans JS objet Php/json à travers twig
    Par zanteskuken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/01/2014, 12h38
  2. Manipuler objet par valeur et par référence
    Par scar63 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 23/04/2012, 01h41
  3. [debutant][erreur] pas un Objet ou valeur Null
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 17h17
  4. MySql et PHP : valeur NULL
    Par fffonck dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/02/2006, 18h02
  5. [c#][debutant] manipuler objets du cache de ie
    Par orelero dans le forum Windows Forms
    Réponses: 9
    Dernier message: 11/12/2005, 22h36

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