Bon, l'autre façon, c'est avec les evenements. Mais un évènement permettrait de changer les règles en cours de jeu, ce qui n'est pas forcément ce que tu veux faire, et qui risque de poser des problèmes variés (ex: le plateau devient subitement plus grand, où est-ce qu'on replace les objets?).
Les évènements sont basés sur le design patter observer.
(premier résultat google sur 'design patter observer' : http://sern.ucalgary.ca/courses/SE [...] erLib.html )
La configuration serait un 'subject' et tes différents éléments les 'observers'.
Quand les éléments sont crées (avec une factory par exemple), on leur attache la configuration comme observeur
Code :
- configuration.attach(plateau)
- configuration.attach(des)
|
Quand la configuration est changée, on appelle config.notify(), et comme chaque élémet du jeu est observeur de la config, chaque élément recevra un appel à update().
Rien ne t'empêche de faire passer des informations comme paramètre de notify() à update(), comme c'est le cas avec les composant des gui (il y a toujours un objet event en paramètre je crois)
Par contre, utilisés sous cette forme, les évènements c'est pas très pratique, car c'est toujours la même fonction qui est appelée pour les éléments du jeu quand quelque chose change.
Une possibilité est de définir plusieurs stratégies (y'a aussi un design patter strategie, mais il n'est pas vraiment utilisé comme ça) de réponse aux messages pour les observers (éléments du jeu).
Une implémentation possible est de donner une hashmap de handlers à chaque observer. Un handler est une classe qui a la fonction handle(). Le handler est choisi en fonction du paramètre de notify/update.
Donc en gros :
Code :
- config.notify(new ChangementDeDes() )
- --> provoque l'appel de
- plateau.update(descriptionChangement) // c'est l'objet event
- qui fait
- handler = (HandlerStrategy) handlerStrategie.get(changementDes)
- if (handler!=null) handler.handle()
|
Bon, c'est ptet pas très clair car c'est présenté un peu rapidement, mais les idées sont dans les desciptions des design patterns
Bonne chance