JeuWeb - Crée ton jeu par navigateur
Passer à la POO - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Passer à la POO (/showthread.php?tid=3776)



Passer à la POO - Arathor - 06-03-2009

Bonjour,
J'ai pu constaté que la Programmation Orientée Objet en PHP est plutôt indispensable pour la réalisation d'un jeu par navigateur. J'ai donc commencé à apprendre cette nouvelle façon de programmer, mais j'avoue que, n'ayant toujours fait que du PHP en procédural, j'ai bien du mal à imaginer la réalisation d'un site entier en POO.
En effet, partout je ne vois que des exemples "bidons", ou l'objet en question est une voiture, ou un système de commande de pizzas... qui ne m'aident pas vraiment à comprendre la mise en oeuvre de la POO pour un site. Est-ce que je dois par exemple créer une classe "inscription", ou bien carrément une classe "joueur" qui contiendra la méthode "inscription" ? J'ai vraiment du mal à "penser objet".
Vous qui utilisez la POO, pourriez-vous m'indiquer par quoi commencer (quelles sont les classes principales que vous créez pour vos jeux ?), ou me montrer un exemple concret d'utilisation car je n'en ai trouver nul part sur le net...


RE: Passer à la POO - pascal - 06-03-2009

les DAO :
http://fr.wikipedia.org/wiki/Data_Access_Object

C'est un début pour se mettre à l'objet.

A+

Pascal


RE: Passer à la POO - wild-D - 06-03-2009

y sont pas si bidon les exemples de base: imagine que tu crées un jeu de simulation de course de voiture... tu risque bien de te retrouver à modéliser ta voiture en objet. Et si au lieu tu voualais créer un jeu de simulation de pizzeria ^^

c'est simple un objet ("réel") donne un objet (PHP).

après on peut toujours décomposer plus finement/autrement. (vu qu'on objet est souvent composer d'objet plus petit)

c'est donc le bon sens:
si tu t'occupe de faire un programme de simulation de la circulation; le boulon de la roue arrière gauche c'est pas franchement le genre de détail (ou d'objet) qui te préoccupe. par contre une voiture la ça devient plus consistant.

Si t'as envie de te créer un objet inscription rien ne t'en empêche. Mais je suppose que l'objet qui t'intéresse vraiment c'est plutot les joueurs/membres (qui s'inscrivent sur ton jeu).

C'est à utiliser avec des pincettes, parce que ça marche pas à tous les coups, mais normalement si t'as de la peine à penser objet, tu peux essayer d'exprimer simplement ce qui se passe/ce que tu veux faire.Et tu regarde ce que tu as mis comme sujet, normalement ça te donnera une piste sur les objets qui t'intéresse^^.
-> le joueur s'inscrit sur mon site.


RE: Passer à la POO - Zamentur - 06-03-2009

C'est vrai qu'un exemple manque cruellement, il faudrait reprendre l'idée du tutorial global sur créer un jeu de A à Z et créer un jeu de A à Z en POO.

Sinon concernant l'inscription, je ne ferais pas un objet joueur avec une methode inscription.

A la limite une classe joueur avec une méthode statique inscription.

Car quand on inscris un joueur généralement ce joueur n'existe pas, donc l'objet n'existe pas! On ne peut donc pas lancer une méthode d'inscription, puisque pas encore d'objet!

Quand on y réfléchis l'inscription c'est la création d'un nouveau membre (qui n'est pas forcément joueur tout de suite d'ailleurs).

Ainsi pour inscrire un nouveau joueur il faudrait plutôt faire:
Code PHP :
<?php 
$toto
= new member("Zamentur","mdp","monmail@truc.ru")

Cela dit on peut très bien créer un objet visiteur qui se créer à chaque venu d'un nouveau visiteur (reconnu via session et éventuellement ip) et y intégrer une méthode inscrire, qui renverra alors l'objet membre nouvellement créer...

Un membre étant avant tout un visiteur on peut donc en deduire que la classe membre pourrait hériter de la classe visiteur.


RE: Passer à la POO - wild-D - 07-03-2009

perso en fait c'est p-e plus une erreur de nomenclature; mais ma classe s'appelle bien membre; par défaut le constructeur il construit une coquille vide (id, pseudo, email, etc... sont null, 0, "",etc... et droit d'accès minimaux/visiteurs); c'est un objet "anonyme". Et derrière j'ai 2 méthodes qui permettent de rempilr tout ça: sidentifier() et sinscrire(). Ensuite la seule méthode capable de modifier id étant sidentifier(); ma méthode sauvegarde() a aucun soucis pour savoir que faire si id=null c'est un INSERT, sinon c'est un UPDATE. (j'ai tendance à abuser de l'id null, histoire de pas me taper de requête SQL avec des ON DUPLICATE)


RE: Passer à la POO - Zamentur - 07-03-2009

Ouai en fait c'est un mix entre ma classe membre et ma classe visiteur...
Je dis pas non plus que c'est LA solution!

Enfin bon çà donne déjà des exemple plus concret.


RE: Passer à la POO - Arathor - 07-03-2009

Oui, merci beaucoup, j'y vois déjà un peut plus clair Smile
Je vais commencer à programmer la classe membre, et par la site je verrais bien de toute façon dans quel sens faire évoluer mes classes.


RE: Passer à la POO - Zamentur - 26-04-2009

Bon récemment j'ai fait une petite application toute bête en objet (sur le thème d'un tp que j'ai eu).

L'intérêt c'est que l'exemple est tout objet, incluant notamment:
- une abstraction de base de donnée (avec les drivers postgresql et mysql)
- une gestion des texte
- une gestion de la configuration
- une gestion des superglobals (avec un anti-csrf de mon cru assez chiant à hacker)
- une gestion des erreurs
- une séparation de l'affichage avec un système de template (celui de pascal)
- un composant user pouvant être étendu pour géré les histoires de connection
- un répartiteur
- la mise en place du design pattern RPC pour éviter les désagrément du refresh. Cependant l'anticsrf suffit à garantir ses désagréments. Donc le RPC est juste là pour n'afficher que des url de vue.

L'exemple implémente un modèle MVC assez simple et avec quelques lacunes au niveau du Modèle(j'ai mélangé du modèle avec un composant group hérité du composant user)...

L'exemple est un site ou des groupes peuvent s'inscrire à une soutenance grâce à un login et un mot de passe les identifiants.

Bon je ne prétendrais pas que c'est le trucs parfait pour du tout objet (les framework font mieux) mais çà à le mérite d'être un début!

Seul hic c'est en php4!
Donc je me demandais si çà en intéressé de voir à quoi çà peut ressembler. Si çà en intéresse je peux convertir tout çà en php5 et faire une explications de pourquoi il faut faire tel chose comme çà.


RE: Passer à la POO - keke - 27-04-2009

Zamentur > je pense que ce serait fort apprécié.
PHP 4 et POO me chagrine un peu. En effet, POO est "devenu" natif après la v5 de PHP. Avant, c'était un système assez lourd et peu efficace.

En tous les cas, migrer en PHP5 puis tuto, ou l'inverse ... je serais au moins un lecteur ^^

kéké


RE: Passer à la POO - Zamentur - 27-04-2009

Ah nana mais j'avais pas le choix, il se trouve que mon école est malheureusement encore sur php4.3 donc je me suis adapté...

Mais effectivement je pense qu'il vaut mieux attendre que je convertisse le tout en php5