Bonjour,

Je suis grand débutant en PHP et j'ai un probléme de syntaxe que je ne comprend pas

: Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ------------/PNJ.class.php on line 6

Pourriez vous m'aider a trouver l'erreur svp ?

Ces classes seront utilisés pour créer un MMORPG en ligne (Projet pour les cours).

La premiere classes est une classe abstraite definissant un Personnage en general, la seconde defini un PNJ

C'est lors de l'instanciation de la seconde classe que mon erreur appraît.

Mon code : Classe Personnage:

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
<?php
	include("Capacite.class.php");
	include("ListeEquipement.class.php");
 
	abstract class Personnage{// On considere qu'un personnage regroupe les PJ et PNJ
		public $id;
	 	public $nom;
	        public $force;
		public $adresse;
		public $resistance;
		public $niveau;
		public $experience;
		public $case;
		public $ptsVieMax;
		public $ptsVie;
		public $listeEquipement;
		public $capacite;
		public $ptsAction;
 
		public function __construct(){
		    $connexion=mysql_connect("","","") or die("erreur connexion");
	        mysql_select_db("") or die("erreur base");
                   if(func_num_args()==1){	//On construit notre personnage a partir d'un personnage deja existant
				$this->$id=func_get_arg(0);
				$requete='SELECT * from personnage where id=\''.$id.'\';';
				$select=mysql_fetch_array(mysql_query($select));
				$this->nom=$select[1];				
				$this->force=$select[2];
				$this->adresse=$select[3];
				$this->resistance=$select[4];
				$this->niveau=$select[5];
				$this->experience=$select[6];
				$this->capacite=new Capacite($id);//On initialise les capacités grâce à l'id
				$thise->case=$select[7];
				$this->listeEquipement=new ListeEquipement($id);//Idem
				$this->ptsVieMax=$this->force+$this->adresse+$this->resistance;//Les points de vie sont l'addition de toutes les caracteristiques
				$this->ptsVie=$select[8];
				$this->ptsAction=$select[9];
			}
			else if(func_num_args()==7){//Creation d'un nouveau personnage
				$this->nom=func_get_args(0);
				$this->force=func_get_args(1);
				$this->adresse=func_get_args(2);
				$this->resistance=func_get_args(3);
				$this->niveau=func_get_args(4);
				$this->experience=func_get_args(5);
				$this->case=func_get_args(6);
				$this->ptsVieMax=$this->force+$this->adresse+$this->resistance;//Les points de vie sont l'addition de toutes les caracteristiques
				$this->ptsVie=$this->ptsVieMax;
				$this->ptsAction=12;
				$requete='insert into personnage(nom,force,adresse,resistance,niveau,experience,case,ptsAction) values(\''.$this->nom.'\','.$this->force.','.$this->adresse.','.$this->resistance.','.$this->niveau.','.$this->experience.','.$this->case.','.$this->ptsVie.','.$this->ptsAction.');';
				$requete='select id from personnage where nom=\''.$this->nom.'\';';
				$select=mysql_query($requete);
				$select=mysql_fetch_array($select);
				$this->id=$select;
			//	$this->capacite=new Capacite($this->id,$this->adresse,$this->resistance,$this->force);//Lorsque l'on crée un nouveau personnage, il n'a aucun bonus équipement etant donne qu'on considere qu'il est a poil
			//	$this->listeEquipement=new ListeEquipement($id);
			}
			else 
			           throw new Exception("erreur d'argument");
		}
 
		public function __destruct(){//Lors de la supression d'un personnage
			unset($this->nom);
	    	           unset($this->force);
			unset($this->adresse);
			unset($this->resistance);
			unset($this->niveau);
			unset($this->experience);
			unset($this->case);
			unset($this->ptsVie);
			$this->capacite->__destruct();
			$this->listeEquipement->__destruct();
			unset($this->listeEquipement);
			unset($this->capacite);
			unset($this->id);
		}
 
		public function attaquer(){//On calcules les valeurs en fonction du niveau des capacités
			$attaque=Combat::calculDes($this->capacite->attaque);
			$degats=Combat::calculDes($this->capacite->degats);
			return array($attaque,$degats);
		}
 
		public function defendre(){//Idem
			$esquive=Combat::calculDes($this->capacite->esquive);
			$defense=Combat::calculDes($this->capacite->defense);
			return array($esquive,$defense);
		}
 
		public function laisserTomberObjet($c){
			$c->setObjet=new ListeEquipement($this->getListeEquipement());//On Laisse tomber les objet sur la carte
			unset($this->getListeEquipement());
	    }
 
		public function diminuerPV($n){
		    $this->pointsVie-=$n;
		}
 
		public abstract function seDeplacer($carte);
 
		public function getId(){
			return $this->id;
		}
 
		public function getNom(){
			return $this->nom;
		}
 
		public function getForce(){
			return $this->force;
		}
 
		public function getAdresse(){
			return $this->adresse;
		}
 
		public function getResistance(){
			return $this->resistance;
		}
 
		public function getNiveau(){
			return $this->niveau;
		}
 
		public function getExperience(){
			return $this->experience;
		}
 
		public function getCase(){
			return $this->case;
		}
 
		public function getPtsVie(){
			return $this->ptsVie;
		}
 
		public function getPtsAction(){
			return $this->ptsAction;
		}
 
		 public function setPtsAction($arg){//les pts d'action seront reaccorder ts les x temps
            $this->ptsAction+=$arg;
        }
 
	}
?>
Classe PNJ:

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
 
 
<?php
	include("Combat.class.php");
	include("Personnage.class.php");
 
class PNJ extends Personnage{
 
    public function seDeplacer($carte){//Combat si deux persos sont sur la meme case et le personnage se deplacera tant qu'il aura des PA  
	  	  while(parent::getPtsAction()>0){
    		$combat=$this->attaquerPerso($carte); 
    		if(!isset($combat)){//Dtermine si on est au cours d'un combat
    			$x=rand(-1,1);//On ne peut se deplacer que d'une case  la fois en avant ou en arrire
    			$y=rand(-1,1);
    			if(parent::getCase()->getX()+$x>$carte->getLimiteX() || parent::getCase()->getX()+$x<$carte->getLimiteX())//Si on est hors des limites du tableau on prend la valeur oppos de x 
    				$x=-$x;
    			if(parent::getCase()->getY()+$y>$carte->getLimiteY() || parent::getCase()->getY()+$y<$carte->getLimitY())//Si on est hors des limites du tableau on prend la valeur opposé de y
    				$y=-$y;
    			$case=$carte->getCase($x,$y);
    			parent::setCase($case);
    			$case->setPerso($this);//Pour que le personnage avance, on met son id sur la case suivante 
    		}
    		if(parent::getPtsAction>0 && isset($combat) ) { //Remplacer 0 par le nb de pt d'action pour un combat
    			Combat::combatre($this,$combat);
    			unset($combat);
    			return null;
    			//Enlever le nb de ptAction necessaire au combat
    		}	
    		//parent::setPtsAction(-xx)  Enlever le nb de pts d'action necessaire au deplacement
	    }
	}
 
	private function attaquerPerso($carte){//Regarde si il y a un perso sur les case adjacentes
	$i=0;
	$x=-1;
	$y=-1;
	$coordonneeX=parent::getCase()->getX();
	$coordonneeY=parent::getCase()->getY();
	while($x<2){
	    $coordonneeX+=$x;
		while($y<2){
			$coordonneeY+=$y;
			if($carte->getCase($x,$y)->getPerso()!='' && $carte->getCase($x,$y)->getPerso() instanceof PJ)
				return $carte->getCase($x,$y)->getPerso();//Si la valeur d'une des case adjacentes n'est pas nulle alors il y a un probable adversaire a affronter
			$y++;
		}
		$x++;
	}
	return null;
	}
}
?>
merci d'avance