Bonsoir,
J'ai voulu m'attaquer au développement d'une application qui me permettrait de manipuler des données.
Pour simplifier la discussion, je vais montrer exactement ce que je souhaite faire.
ce site http://www.krosmoz.com/fr/almanax fourni, pour chaque jour, des informations pour un jeu vidéo. Il contient 3 informations : une description du jour, un bonus du jour, et des objets à récupérer pour une quête.
J'aimerais récupérer les informations de l'année entière, les stocker en base ou autre chez moi, et faire un petit logiciel qui me permet de savoir quand tel objet sera nécessaire pour une quête, quelle est la date du prochain bonus de type "XP sur les monstres", etc.
J'ai un souci de conception sur la gestion des Bonus.
Il doit exister une 15aines de bonus différents, en voici une petite liste
- Les chances d'obtenir du butin sont augmentées de 75 % sur les créatures de type Machin
- Les gains d'experience sont augmentées de 75 % sur les créatures de type bidule
- Les bonus apportés par les challenges réussis sont augmentés de 150 % sur les créatures de type bidule
- Les chances d'obtenir du butin sont augmentées de 100 % dans la zone "Zone 51"
- La récolte de bois est augmenté de 100%
- La récolte de bois est augmenté de 100% dans la zone "bois machin".
Etc.
après une petite analyse, on peut voir qu'il existe grosso modo 3/4 grands types de récompenses (expérience, butin, récolte) avec des contraintes (expérience des challenges, bonus attribué dans une zone précise, bonus attribué sur un type de monstre).
Au début, j'ai commencé à me dire : tout ça, ça doit étendre de ma classe Bonus, et je créé une classe BonusXp,
Puis je fais BonusXpMonstre, BonusXpZone qui étendent Bonus Xp.
Ensuite je fais BonusButin qui étend Bonus,
Puis BonusButinMonstre qui étend BonusButin...
sauf que ça me convient pas du tout, c'est à la fois très rébarbatif et ça ne me permet pas, par exemple, de trouver tous les bonus (xp ou butin) qui touche une famille de monstre.
C'est là où j'aurais besoin de vos lumières : J'arrive pas du tout à voir comment modéliser ça, à la fois pour que ça passe dans une base de donnée (je pensais gérer mes infos avec un SQLite) et que ce soit assez facilement utilisable en java.
J'ai pensé, en fouillant un peu dans les design patterns, au DP Composite, qui a l'air de ressembler un peu à ce que je voulais faire (ne serait-ce que par le nom ^^) mais je ne comprend pas comment l'adapter à mon cas.
Je trouvais le design pattern Decorateur très ressemblant aussi : tous mes bonus sont des bonus, et chaque spécification est une décoration (Bonus de type XP, de type "famille de monstre", de type "zone", etc).
Ensuite, peut être que je dois abandonner l'idée de faire des objets complexes en java, et qu'il serait plus simple pour moi de stocker mes données en base avec juste une table "date", et des tables de relation "date_familleMonstre", "date_BonusXp", "date_BonusButin", ce qui me permet quand je cherche une date pour un bonus donné de juste chercher les relations entre le BonusCherché et les dates.
En résumé, je suis un peu paumé sur comment modéliser simplement, pour pouvoir faire des manipulations en sql et en Java sur les données que j'ai récupéré.
Partager