Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1761 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[php] Jeux de dame en PHP-> refonte en objet -> Phase de test

n°652706
Profil sup​primé
Posté le 24-02-2004 à 10:09:27  answer
 

Reprise du message précédent :

KLeMiX a écrit :

ca avance bien
 
il me reste les tours a faire
l'ia !!!!
les multi coups
les dames
et les soufflet n'est pas jouer


le soufller n'est pas jouer  c'est à oublier je crois pas que ce soit une regle de base du jeu

mood
Publicité
Posté le 24-02-2004 à 10:09:27  profilanswer
 

n°652843
KLeMiX
Laisse pas trainer ton site
Posté le 24-02-2004 à 11:22:45  profilanswer
 

spike a écrit :


le soufller n'est pas jouer  c'est à oublier je crois pas que ce soit une regle de base du jeu
 


 
c'est un truc auquel il faut que je pense c'est etudier les regle :D


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°652894
KLeMiX
Laisse pas trainer ton site
Posté le 24-02-2004 à 11:53:13  profilanswer
 

Je crois que j'ai trouver les regles officiels ca m'arrange pas ca complique tout :D
 
http://membres.lycos.fr/nic55/dames/dames1.htm


Message édité par KLeMiX le 24-02-2004 à 11:53:22

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°654218
KLeMiX
Laisse pas trainer ton site
Posté le 25-02-2004 à 10:13:50  profilanswer
 

Normalement je fais les dames se soir et demain je m'attaque a la partis la plus interessante L'ia :D
 
J'y connais rien mais ca devrait etre passionnant


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°654281
Profil sup​primé
Posté le 25-02-2004 à 10:51:02  answer
 

je te confirme, ce sont les bonnes regles :)
par contre pr l'IA jepense pas que ce soit réalisable pi faut une sacrée réflexion...
je pense pas que php puisse gérer l'IA d'un tel jeu en terme de durée de recherche de coups(me rappelle d'un vieux jeu electronique ou l'IA cherchais tous les coups possibles pour chaque joueurs....
fait le jeu en duel par IP, doit etre plus sympa et + vite fait


Message édité par Profil supprimé le 25-02-2004 à 10:51:32
n°654390
KLeMiX
Laisse pas trainer ton site
Posté le 25-02-2004 à 11:48:08  profilanswer
 

spike a écrit :

je te confirme, ce sont les bonnes regles :)
par contre pr l'IA jepense pas que ce soit réalisable pi faut une sacrée réflexion...
je pense pas que php puisse gérer l'IA d'un tel jeu en terme de durée de recherche de coups(me rappelle d'un vieux jeu electronique ou l'IA cherchais tous les coups possibles pour chaque joueurs....
fait le jeu en duel par IP, doit etre plus sympa et + vite fait


 
 :o defetiste !!
 
Je pense developper une petite IA pas un bigblue !!  
 
Dans un permier tps le meilleur coup sans prévision
Dans un 2eme tps sur 2 ou 3 coup
 
Mais jouer par ip me semble aussi une bonne idée mais comment tu rafraichirais qd l'autre joueur a jouer ??


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°654393
KLeMiX
Laisse pas trainer ton site
Posté le 25-02-2004 à 11:49:44  profilanswer
 

Une autre question j'aimerais changer l'image clicker pour suivre les coup jouer avant de valider mais j'y connais rien en javascript c'est possible car j'ai trouver juste le rollover


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°654397
Profil sup​primé
Posté le 25-02-2004 à 11:50:42  answer
 

KLeMiX a écrit :


 
 :o defetiste !!
 
Je pense developper une petite IA pas un bigblue !!  
 
Dans un permier tps le meilleur coup sans prévision
Dans un 2eme tps sur 2 ou 3 coup
 
Mais jouer par ip me semble aussi une bonne idée mais comment tu rafraichirais qd l'autre joueur a jouer ??


erf ca faut voir comment tu va gerer le deplacement des pions : comment en sélectionner un et dire qu'il va a tel endroit

n°654404
KLeMiX
Laisse pas trainer ton site
Posté le 25-02-2004 à 11:55:09  profilanswer
 

spike a écrit :


erf ca faut voir comment tu va gerer le deplacement des pions : comment en sélectionner un et dire qu'il va a tel endroit
 


 
bas ca c'est deja fait  :o  
 
Je fait le deplacement du poin en clickant sur les images et j'incremante la variable choix que je decoupe ensuite pour modifier les valeur de mon tableau !
 
Le pb c'est pas dechanger le tableau entre les 2 ip mais de dire c'est bon j'ai jouer


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°655188
KLeMiX
Laisse pas trainer ton site
Posté le 25-02-2004 à 22:09:09  profilanswer
 

Question sur les modulot
 
 if(($depart-$arriver)%9)==( 0))  
 
Ca veux bien dire que $depart-$arriver=0 ou 9 ou 18 ou -18 ou 9*n


Message édité par KLeMiX le 25-02-2004 à 22:09:33

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
mood
Publicité
Posté le 25-02-2004 à 22:09:09  profilanswer
 

n°655922
format_c
Plouf plouf ...
Posté le 26-02-2004 à 09:58:08  profilanswer
 

KLeMix,
Je pensais à un truc pour pouvoir jouer à 2.
Pour faire le refresh automatique, est ce qu'il ne saurait pas possible de faire une boucle avec un wait dedans, qui intérroegerait la base.
Un truc du genre :
while($coup_adverse==0)
{
// T'intérroge ta base pour récupérer le champs $coup_adverse. Si l'aversaire a joué, son $coup_adverse==0 et le tient ==1
// Tu fais un Wait de 5 secondes
}
//Refresh de ta page :)


Message édité par format_c le 26-02-2004 à 09:58:34

---------------
Mes guitares, ampli, et effets sont en vente !
n°907359
sky99
http://www.core-tx.com
Posté le 25-11-2004 à 01:10:56  profilanswer
 

JagStang a écrit :

Entre nous, PHP (et tout autre language orienté web en mode déconnecté) n'est pas vraiment le language fait pour ce genre de jeux. ça me fait penser au gars qui voulait faire un jeu de STR en PHP.


par contre ça je suis pas du tout d'accord...
je suis aussi en train de developer un jeu de strategie (a la mode MMO) avec un pote, et php est parfait...
simple, puissant...
 
Pour le jeu de dames, c'est pas non plus sorcier, suffit de mettre un refresh toutes les x secondes...


---------------
http://www.core-tx.com
n°907365
sky99
http://www.core-tx.com
Posté le 25-11-2004 à 01:21:49  profilanswer
 

Format_c a écrit :

KLeMix,
Je pensais à un truc pour pouvoir jouer à 2.
Pour faire le refresh automatique, est ce qu'il ne saurait pas possible de faire une boucle avec un wait dedans, qui intérroegerait la base.
Un truc du genre :
while($coup_adverse==0)
{
// T'intérroge ta base pour récupérer le champs $coup_adverse. Si l'aversaire a joué, son $coup_adverse==0 et le tient ==1
// Tu fais un Wait de 5 secondes
}
//Refresh de ta page :)


Ca me semble etre une bonne idée, mais je ne connais pas la fonction wait en php...
moi a votre place, j'aurais simplement fait un petit test : si l'adversaire a joué,
on refreshe la page tout de suite (donc echo 'code pour rafraichir la page de suite) else {'rafraichir dans X secondes en utilisant du javascript'}
 
Pour ton IA, ça va etre drole a développer, mais je suis d'avis que c'est loin d'etre impossible...
tu n'a qu'a commencer basiquement, l'IA fait des tests sur les X prochains coups pour voir comment elle fait pour manger le plus de pions...
Et pour les choix entre diverses actions, utilises des priorités , par ex:
manger un pion priorité 1
faire une dame priorité 5  
manger une dame priorité 8
perdre un pion priorité -1
perdre une dame priorité -5
 
Et la, il calculele coup suivant :
action possible 1 :je mange 3 pions ici et je perds mon pion, priorité 1+1+1-1=2 action possible 2 :je mange un pion ici et je fais une dame : priorité 5+1=6
priorité action 2> priorité action 1 donc je fais action 2...
 
le tout est de commencer simple je pense, pour faire evoluer ton IA au fur et a mesure...
pour faire varier le comportement de ton IA, utilise des random si plusieur actions ont la meme priorité, ou bien force la parfois a faire des trucs de priorité legerement plus faible que sa meilleure priorité pour la rendre plus imprevisible...


---------------
http://www.core-tx.com
n°907386
burgergold
5$? va chez l'diable!
Posté le 25-11-2004 à 03:14:14  profilanswer
 

corrige ca sur ton site
 
J'ai developpé ce jeu de dames pour le plaisir et j'espère qu'il vous en procurera quand il sera fini. N'hésiter pas à me proposer un skin de votre création.


Message édité par burgergold le 25-11-2004 à 03:15:20
n°2164573
KLeMiX
Laisse pas trainer ton site
Posté le 19-11-2012 à 10:52:28  profilanswer
 

Up de la mort qui tue.
 
 
Version qui marche a peu près : http://jeux.dame.free.fr/
 
Bon j'ai envie de refaire mon jeux de dames en Objet.
 
La programmation Objet je sais plus ou mois faire. Mon souci c'est réfléchir en objet.
 
Faut que je refasse tout l'algo en objet et la je manque cruellement d'expérience.
 
J'ai fait une classe damier avec : un tableau que soit initialise soit je charge avec un code de parti. Mis a jour avec le chemin d'un pion : Ca marche
 
J'ai fait une classe joueur avec les code des pions, pion adverse dame et changement de joueur : Ca marche
 
J'arrive pas à voir comment faire une classe de déplacement ?
 
Elle aurait en paramètre : un chemin defini par l'utilisateur, le tableau en cours et le joueur en cours
On peut utiliser une classe dans une classe ?
 
Faut il que je pense autrement ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164669
CyberDenix
Posté le 19-11-2012 à 23:14:47  profilanswer
 

Ouais, tu dois faire autrement
 
Les déplacements ne sont pas des objets, mais des comportements.
Autrement dit, des interfaces (PHP 5) et des traits (PHP 5.4).
 
Exemple :
 

Code :
  1. interface MoveInterface { // On définit un comportement
  2.  public function move();
  3. }
  4.  
  5. trait Move { // On définit une implémentation du comportement
  6.  protected $speed = 0;
  7.  public function move() {
  8.    return get_class($this).' moves at '.$this->speed.' km/h';
  9.  }
  10. }
  11.  
  12. abstract class Animal implements MoveInterface { // On utilise l'interface
  13.  use Move; // On utilise une implémentation de l'interface
  14.  
  15.  // Intéressant car on peut "implements" plusieurs interfaces
  16.  // et "use" plusieurs traits (séparation par des virgules),
  17.  // donc ce sont des morceaux de code réutilisables décentralisés
  18.  
  19.  // Tu n'es pas obligé d'utiliser des traits pour implémenter des interfaces
  20.  // Tu peux les implémenter directement dans ta classe, mais c'est moins joli
  21.  // sachant que tu ne peux hériter que d'une classe là où tu peux implémenter
  22.  // autant d'interfaces que tu veux. Le couple interface / trait est donc une
  23.  // solution élégante au problème d'héritage multiple
  24. }
  25.  
  26. class Tiger extends Animal {
  27.  public function __construct() {
  28.    $this->speed = 50;
  29.  }
  30. }
  31.  
  32. $species = 'Tiger';
  33. $animal  = new $species();  // Instanciate a new Tiger.
  34. echo $animal->move();       // Display 'Tiger moves at 50 km/h'.
  35.  
  36. $animal = null;             // Free memory.
  37. gc_collect_cycles();


 
Tu dois aussi faire une classe Pion, sachant que ta classe Damier doit contenir une liste / un tableau de pion
Pour le stockage des coordonnées, tu as vaguement trois options :
- Laisser le damier décider
- Stocker les coordonnées x,y dans le pion
- Stocker une référence au Damier dans le Pion (on peut demander au pion ses coordonnées, mais la logique reste au niveau du damier et en fait c'est lui qui va faire tout le boulot de recherche. Attention aux références circulaire et à bien mettre le Damier du Pion à null dans son __destruct)
 
Ce qui basiquement donnerait (j'ai pas traduit le nom des classes et le code est grossier)  
 

Code :
  1. class Damier {
  2.  
  3.  protected $a = array();
  4.  
  5.  public function __construct() {
  6.    for ($i = 0; $i < 50; ++$i) {
  7.      for ($j = 0; $j < 50; ++$j) {
  8.        
  9.        $player = new Player();
  10.        $player->setId(1);
  11.        $player->setIA(true);
  12.  
  13.        $pion = new Pion();
  14.        $pion->setDamier($this);    // Optionnel selon la stratégie choisie
  15.        $pion->setPlayer($player);
  16.  
  17.        $this->$a[$i][$j] = p;
  18.  
  19.      }
  20.    }
  21.  }
  22. }

Message cité 1 fois
Message édité par CyberDenix le 21-11-2012 à 01:30:35

---------------
Directeur Technique (CTO)
n°2164717
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 11:49:13  profilanswer
 

je vais etudier les interfaces, je pense que c'est effectivement cstte notion qui me manque.
 
Merci,  
Je vous tiens au courant des avancés


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164730
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 13:27:13  profilanswer
 

 

Dans ton exemple, je joue un coup, le player change de main, comment je fait pour utiliser les méthodes de Player dans la classe Damier ?

 
Code :
  1. class Damier {
  2.   protected $a = array();
  3. ..private $player;
  4.   public function __construct() {
  5.     for ($i = 0; $i < 50; ++$i) {
  6.       for ($j = 0; $j < 50; ++$j) {
  7.        
  8.         $player = new Player();
  9.         $player->setId(1);
  10.         $player->setIA(true);
  11.         $pion = new Pion();
  12.         $pion->setDamier($this);    // Optionnel selon la stratégie choisie
  13.         $pion->setPlayer($player);
  14.         $this->$a[$i][$j] = p;
  15.       }
  16.    }
  17.      Public FindeTour()
  18.    {
  19.       $this->player->changeJoueur();
  20.    }
  21. }
 

Ca : $this->player->changeJoueur();
C'est pas bon :o


Message édité par KLeMiX le 20-11-2012 à 13:27:45

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164731
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 13:48:55  profilanswer
 

si ca marche en faite :o²


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164758
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 15:56:59  profilanswer
 

Pourquoi ca ca marche :
 
class o_damier  
    {
        private $tab_damier ;
        private $code_init;
        private $player;
        public function __construct()
        {
            $this->tab_damier = array( ) ;
            $this->code_init = '2-1-20A10C20B';
            $this->loadDamier($this->code_init);
            $this->player = new o_joueur('Player');
            echo 'test :'.$this->player->nom_joueur();
        }
        public function LoadJoueur($joueur)
        {
//         echo $this->player->nom_joueur();
}
}
 
et pas ca :
 
 
class o_damier  
    {
        private $tab_damier ;
        private $code_init;
        private $player;
        public function __construct()
        {
            $this->tab_damier = array( ) ;
            $this->code_init = '2-1-20A10C20B';
            $this->loadDamier($this->code_init);
            $this->player = new o_joueur('Player');
 
        }
        public function LoadJoueur($joueur)
        {
         echo $this->player->nom_joueur();
}
}
 
 
-> Fatal error: Call to a member function nom_joueur() on a non-object


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164761
x1fr
Posté le 20-11-2012 à 16:19:15  profilanswer
 

Essaye de faire un var_dump sur $this->player avant d'afficher le nom, mais à priori elle n'est pas initialisée, ou en tout cas pas à une instance de o_joueur


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2164762
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 16:23:27  profilanswer
 

tu as raison  
        public function LoadJoueur($joueur)
        {
         var_dump($this->player);
//         echo $this->player->nom_joueur();
//         $this->player->setJoueur($joueur);
        }
 
me donne null
 
Pourquoi le $this->player = new o_joueur('Player'); dans le  __construct()  n'instancie pas l'objet ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164765
x1fr
Posté le 20-11-2012 à 16:49:52  profilanswer
 

A priori il l'instancie puisque que dans ton exemple précédent le "echo 'test'" fonctionne.
 
Il faudrait faire un var_dump à chaque étape tu manipules le $this->player entre les 2 pour voir où ça coince.


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2164768
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 16:59:25  profilanswer
 

le var_dump dans le contruct fonctionne.
si je met les 2. J'ai les def + variable, et NULL


Message édité par KLeMiX le 20-11-2012 à 17:00:11

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164770
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 17:07:56  profilanswer
 

Boulet mode !!!
 
 
            $this->loadDamier($this->code_init);  
            $this->player = new o_joueur('Player');  
 
la fonction LoadJoueur($joueur)  est appeler dans loadDamier et donc player n'est pas instacier !


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164773
x1fr
Posté le 20-11-2012 à 17:10:57  profilanswer
 

C'est dans ces moments qu'un débugger est pratique :p


Message édité par x1fr le 20-11-2012 à 17:11:05

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2164779
KLeMiX
Laisse pas trainer ton site
Posté le 20-11-2012 à 17:51:09  profilanswer
 

Bon mes 2 classes principales sont faites je vais pouvoir attaquer les interfaces de mouvements :D


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2164872
KLeMiX
Laisse pas trainer ton site
Posté le 21-11-2012 à 13:05:35  profilanswer
 

Comment je force le PHP 5.4 chez free ?
 
Sinon j'ai pas compris l’intérêt des interface sans le trait ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2165040
CyberDenix
Posté le 22-11-2012 à 01:47:56  profilanswer
 

1] J'en sais foutrement rien, je suis en dédié, donc j'installe ce que je veux comme je veux pour 15 €/mois :)
 
2] Tu as plusieurs possibilités, voilà un exemple de cheminement :
 
Faire des héritages de classes
 
class A {}
class B extends A {}
 
Mais dès que tu veux faire un
 
class A {}
class B {}
class C extends A,B {}
 
Tu peux pas, car l'héritage multiple est interdit.
C'est une bonne pratique qui évite de se retrouver avec des conflits de méthodes qui avaient le même nom dans A et B.
C'est aussi un reliquat de C++ (Rappel : PHP est écrit en C++).
 
Tu vas donc passer par des interfaces.
Une interface t'engage à écrire à un moment donne une implémentation du code (tu auras une erreur si tel n'est pas le cas)
 
interface A {}
interface B {}
class C implements A,B {}  
 
La caractéristique des interfaces, c'est qu'elles ne contiennent que des méthodes virtuelles pures, c'est à dire dépourvues d'implémentation.
Ce sont juste des définitions (bien pratique pour voir clairement ce que fait ton objet et quelles méthodes sont disponibles)
On ne voit de fait que des signatures de méthodes.
 
Tu peux alors adjoindre à ces interfaces une classe ou un trait pour l'implémentation.
Si tu choisis une classe, il est préférable d'utiliser une classe abstraite : pas de possibilité de l'instancier directement avec un new, on s'en sert juste pour la hiérarchie de classes.
 
interface A {}
abstract class AA implements A {}
class B extends AA implements A {}
 
$aa = new AA(); // Erreur
$b   = new B();  // OK
 
Mais du coup tu te retrouves avec le travers de ne pouvoir étendre qu'une seule classe. Or la plupart du temps tu veux implémenter plusieurs comportements, métiers ou non métier, comme un enregistrement en base, qui n'a rien à faire dans une hiérarchie de classes. Du coup ça devient bricolo, car tu fais des héritages de trucs qui n'ont rien à voir, ou alors tu implémentes le tout directement dans ta classe finale pour satisfaire l'interface mais tu perds l'intérêt de la séparation du code.
 
Exemple de sémantique pourrie ante-PHP 5.4 (pas le choix)
 
abstract class DatabaseObject {}
abstract class Animal extends DatabaseObject {}
class Tiger extends Animal {}
 
On propage certes les propriétés d'auto enregistrement en base sur tous les animaux, mais on détruit complètement la sémantique.
Un Tigre est un Animal. Mais un Animal n'est pas un putain d'objet de base de données, ça c'est un comportement.
Et donc avant PHP 5.4, tu faisais des tas d'héritages (un par comportement) et tu te retrouvais avec des hiérarchies insensées sur X niveaux.
Ça fonctionne, mais c'est du grand n'importe quoi.
 
Alors qu'avec les traits tu es beaucoup plus souple pour séparer ton code, ça ajoute un niveau de granularité très appréciable :
 
interface A {}
trait AA {}
interface B {}
trait BB {}
abstract class C implements A, B {use AA, BB;}
class D extends C {}
$d = new D();
 
Et surtout, tu places les traits uniquement dans les classes qui en ont besoin.
Alors qu'avec la méthode old school toutes tes classes héritaient obligatoirement de tous les comportements même si seulement quelques unes en avaient besoin.
Ouais, avant on codait vraiment comme des moches.
 
En définitive, tu peux utiliser les traits sans interface et vice versa, mais ils sont vraiment faits pour fonctionner ensemble.
 
Si on résonne avec un restaurant, tu peux voir une interface comme une ligne du menu à la carte, et un trait comme le plat physique y afférant.
La classe abstraite représente alors une composition de plats, une recette ou une formule (il y a cette notion d'agrégat), et la classe la transposition de la formule dans le monde réel, c'est à dire les différents plats que tu vas déguster.
 
interface SaladeTheorique {}
trait SaladeReelle {}
interface SteakTheorique {}
trait SteakReel{}
abstract class MenuDuMidiTheorique implements SaladeTheorique, SteakTheorique {use SaladeReelle, SteakReel;}
class MenuDuMidiReel extends MenuDuMidiTheorique {}
$m = new MenuDuMidiReel();
 
Sachant que tu peux avoir d'autres menus qui utilisent aussi de la salade, du steak... bref tu réutilises un peu tes composants comme tu veux.
 
Donc pour répondre à ta question, les traits, c'est TRES élégant.  :sol:
 
Bref, j'espère avoir été clair !  :D


Message édité par CyberDenix le 22-11-2012 à 02:36:01

---------------
Directeur Technique (CTO)
n°2165107
KLeMiX
Laisse pas trainer ton site
Posté le 22-11-2012 à 13:38:48  profilanswer
 

Bon apparament chez free le 5.4 c'est pas pour tout de suite donc les traits c'est mort.

 

D'apres se que j'ai compris les interfaces ( sans les traits) c'est juste des contraintes pour avoir code plus claire

 

Si j'ai bien compris mon exemple serait :

 

interface calcule
{
public function addition
public function soustration
public function multiplication
public function soustraction
}

 

class caculatriceBasic implements calcule

 

class calculatriceScientifique implements calcule

 


Cela oblige tes 2 classes a avoir des opération de calcule.

 

Mais sans les traits tu es obligé de faire 2 fois les fonctions dans 2 les classes.

 


J'ai bon ?

 


Message édité par KLeMiX le 22-11-2012 à 13:40:06

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2165135
CyberDenix
Posté le 22-11-2012 à 14:17:23  profilanswer
 

Ouais t'as bon !
 
Soit tu implémentes direct dans les calculatrices avec la redondance que ça implique (à toi de voir combien de fois tu vas redonder ton code), soit tu implémentes le code commun dans une abstract class, et tes deux calculatrices en héritent.  
 
interface calculInterface {
  public function addition($a , $b);
  public function soustration($a , $b);
  public function multiplication($a , $b);
  public function division($a , $b);
}
 
abstract class calcul {
  public function addition($a , $b) {
    // ...
  }  
  public function soustration($a , $b) {
    // ...
  }
  public function multiplication($a , $b) {
    // ...
  }
  public function division($a , $b) {
    // ...
  }
}
 
class calculatriceBasic extends calcul implements calculInterface {
}
 
class calculatriceScientifique extends calcul implements calculInterface {
  function sinus($a) {
    // ...
  }
  function cosinus($a) {
    // ...
  }
  function tangente($a) {
    // ...
  }
}
 
$b = new calculatriceBasic();
$s = new calculatriceScientifique();
 
$b->add();
$s->add();


Message édité par CyberDenix le 22-11-2012 à 14:55:24

---------------
Directeur Technique (CTO)
n°2165506
KLeMiX
Laisse pas trainer ton site
Posté le 26-11-2012 à 17:57:43  profilanswer
 

J'ai l'impression que le clone me fait pas une copie de l'objet mais juste une duplication de nom de variable
 
$a = clone $b;
me donne le même résultat que
$a=$b;
 
c'est a dire
$a->nom_jour('IA');
$b = clone $a;
$b->changejoueur(); // aucune variable static
$a->getjoueur() // me donne Humain
 
C'est normal ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2165552
CyberDenix
Posté le 27-11-2012 à 01:19:59  profilanswer
 

Nan c'est pas normal du tout !
 
Sauf si tu utilises des références comme dans ce post :
http://www.php.net/manual/fr/langu [...] php#106135
 
Mais dans ce cas là tu overriderais volontairement le cloning.


---------------
Directeur Technique (CTO)
n°2165608
KLeMiX
Laisse pas trainer ton site
Posté le 27-11-2012 à 14:21:52  profilanswer
 

J'ai pas encore fait les mouvements IA de dame mais l'IA commence a être dure a battre :D

 

Version objet : http://klemix.free.fr/dame/


Message édité par KLeMiX le 27-11-2012 à 14:22:03

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2166017
KLeMiX
Laisse pas trainer ton site
Posté le 29-11-2012 à 12:24:10  profilanswer
 

Question :
 
Mon IA triche quand elle a plusieurs chemins d'atttaque.
Dans les fonctions récursives y a des méthodes pour débugger simplement ?
 
L'affichage de variable devient vite ingérable :s
 
Pour info je developpe sous ultraEdite


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2166598
KLeMiX
Laisse pas trainer ton site
Posté le 04-12-2012 à 12:10:58  profilanswer
 

Bon j'ai finis (reste de la cosmétique a faire)
 
Vous pouvez faire une partie ou 2 pour tester et me donner votre avis ?
 
http://klemix.free.fr/dame
 
Merci  
 
Ps: pour les ano pas besoin de faire un ticket juste un petit poste ici ;)


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2308022
Fabien
Vive la super 5 !
Posté le 24-11-2017 à 10:04:42  profilanswer
 

salut klem, tu le dev encore ? :) c'est open source?
 
j'ai testé, mais je sais pas si c'est un bug ou pas, mais faut cliquer sur "jouer" pour l'IA ?


---------------
Découvre le HFRcoin ✈ - smilies
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[PHP] conserver les blancs en debut et fin dans une base mysql ? :-/Generer un PDF en PHP.
[PHP] isset et variable : 2 questions ![PHP] Conseil sur Pseudo Frames et includes
[PHP] Affichage page par pageScript PHP exportant un bdd ACCESS (Linux)
[nOOb] Besoin d'aide pour activation PHP-Nuke[PHP] dupliquer une variable... [Resolu]
PHP/MySQL: Date - Comparaison de 2 périodes[PHP] redirection
Plus de sujets relatifs à : [php] Jeux de dame en PHP-> refonte en objet -> Phase de test


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR