Chapitre 2. Les entités: la base du moteur

Entité: caractérisée par sa capacité à effectuer des actions (se déplacer, attaquer...), exploiter des objets (les porter, les utiliser...), etc.

Ainsi, dès lors que vous voulez faire agir un joueur (ou tout autre type d’entité) dans votre jeu, vous commencerez par créer un objet de type Entity qui représentera ce personnage.

Fichiers à inclure pour utiliser les entités: tout fichier correspondant au type d’entité que vous souhaitez utiliser.

Exemple: nous souhaitons utiliser l’entité Player, nous allons donc inclure la classe Player qui étend la classe principal Entity.

require Engine::file("entities/Player");

2.1 Initialiser une entité

A chaque type d’entité est associé une table dans la base de données. Cette table doit OBLIGATOIREMENT posséder un champ intitulé ‘id’, de type entier et auto-incrément. Vous êtes libre d’ajouter toutes les informations nécessaires à votre jeu dans cette table. GamePHP inclut des fonctions vous permettant d’accéder aux autres champs de la table pour les mettre à jour (voir Utiliser des champs additionnels)

Ainsi, créer une entité d’un type défini revient, en PHP, à créer un objet de type Entity en lui fournissant l’id de l’entité dans la base de données.

Exemple de code (faisant abstraction des inclusions générales):

require Engine::file("entities/Player"); // On va utiliser l'entité de type Player
 
$Joueur1 = new Player(1); // Ici, la bibliothèque ira chercher les informations concernant le joueur d'id 1 
 

L’entité est maintenant créée, mais vous ne pouvez à ce stade là rien faire de plus (voir 3. Actions et 4. Objets).

2.2 Utiliser des champs additionnels

Vous pouvez accéder aux différents champs d’une table de la base de données et afficher ou éditer les informations stockées concernant une entité. Toute information est éditable sauf l’identifiant unique (id).

Reprenons l’exemple précédent et considérons que nous travaillons désormais sur une table contenant les champs id, vie et magie.

id vie magie
1 10 10

require Engine::file("entities/Player"); // On va utiliser l'entité de type Player
 
$Joueur1 = new Player(1); // Ici, la bibliothèque ira chercher les informations concernant le joueur d'id 1
 
echo "Le joueur d'identifiant ".$Joueur1->id." a actuellement ".$Joueur1->vie." points de vie et ".$Joueur1->magie." points de magie."; // On affiche les informations contenues dans la base de données
 
// Éditons maintenant ces informations
$Joueur1->vie = 20; // On donne 20 points de vie au joueur
$Joueur1->magie = 20; // On lui donne 20 points de magie
$Joueur1->update(); // On met à jour la base de données avec les modifications précédente.

Comme vu dans l’exemple ci-dessus, vous pouvez accéder à tout champ de la base de données par <code>$Joueur→nomduchamp</code>.

Si vous effectuez une modification sur l’un de ces champs, vous devez mettre à jour la base de données par l’appel de la fonction update(). La fonction update() mettra à jour tous les champs modifiés (il ne faut donc pas faire un appel à chaque modification).

En cas d’erreur, ou si vous souhaitez annuler une modification faite avec update(), vous pouvez appeler la fonction rollback().


→ Accéder au troisième chapitre: les Actions

 
entites.txt · Last modified: 2005/10/17 22:15
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki