Gestion des formules selon les niveaux - 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 : Gestion des formules selon les niveaux (/showthread.php?tid=7129) |
Gestion des formules selon les niveaux - Insectoid - 03-09-2014 Bonjour, Je planche depuis un long moment sur la gestion et l'interprétation de formule d'évolution pour le jeux que je developpe Exemple : Pour construire tel bâtiment au niveau supérieur, il faut :
ça prendra (1.6^(levelBat-1) * 5 + 1.7^(levelBat-1) * 4) * 1 - (1/(2^(LevelTechno-1))) Ce n'est qu'un exemple simple de formule. Le soucis et d'enregistrer ces formules et ensuite de les exploiter Des idées ? Merci Insectoïd RE: Gestion des formules selon les niveaux - Xenos - 03-09-2014 Hum... Faire une classe qui possède une méthode acceptant, en entrée, le niveau du bâtiment et qui renvoie la quantité de ressource demandée (donc, 2 classes s'il y a deux ressources)? Avec une interface/classe abstraite par-dessus pour ne pas faire de dépendances en dur (toujours travailler avec une classe abtrasite/interface dans les typehinting et la conception plutôt que des classes réelles).
En version "j'me contente des classes concrètes et zut pour les dépendances, interfaces, extensibilité et combinatoire", on peut ne garder que les classes concrètes "TelBatimentSableCalculator " et "TelBatimentStructureLevel". Après, la quantité retournée devrait être typée (schématiquement sans tenir compte des dépendances engendrées et en mono-ligne, return new RessourceSableQuantite( pow($this->baseExponent, $p_structureLevel->getLevel() - 1) ); la classe représentant alors une quantité de la ressource "sable"). Si t'as plusieurs fois le même patron de fonction (exemple: n^p +q*p) alors tu peux en faire une autre classe ou une fonction (pourquoi pas pour le coup, c'est logique) et la réutiliser dans TelBatimentSableCalculator. RE: Gestion des formules selon les niveaux - Insectoid - 03-09-2014 Merci, oui je vois L'objectif et de considérer que ces formules initiales pourront être compléter dans l'évolution du jeu. Les class semblent alors être pas mal J'avais pensé au départ via des tableaux (array) avec des series de array décomposer les type d'élément -> batiments -> technologie -> personnage -> ressourcesConsctuction -> ressourcesAlimentaires ensuite via un syteme de syntaxe retrouver chacun avec les minimums requis pour tel ou tel élément, puis les besoin pour passé au level suivent de l'élément Avec ce que tu me proposes, je pense qu'il est possible alors d'utiliser les liste via des array, puis de les exploiter via les class comme tu le présente... je vais vois de ce coté et je proposerai alors un résultat (bon j'espère ) Voilou Insectoïd RE: Gestion des formules selon les niveaux - niahoo - 04-09-2014 Hello, J'ai du mal à comprendre où est-ce que tu coinces en fait. Vu que tu exprimes tes ressources nécessaires sous formes de fonctions mathématiques et que PHP te permet d'écrire de telles fonctions, où est le problème ? De plus, tu dis que tu veux que ce soit évolutif, mais tu peux changer ton source pour le faire évoluer ... donc où est-ce que tu as besoin d'aide ? RE: Gestion des formules selon les niveaux - Aedius - 04-09-2014 Si vraiment des modifs coté clients sont génante, peut être la création d'un client lourd. Mais même ainsi, c'est toujours possible de faire des modifications ( mais c'est plus compliqué ) RE: Gestion des formules selon les niveaux - Insectoid - 04-09-2014 Je cherche une méthode Là, c'est du théorique J'ai utiliser les array pour mettre mes formules puis à parser la chaine de caractere pour en exraire la formule utilisable... Une cata... Et je seche sur une méthode facile à faire évoluer RE: Gestion des formules selon les niveaux - niahoo - 04-09-2014 Mais pourquoi dans ton array tu ne mets pas de vraies fonctions. Ou dans une classe plus simplement.
bien sûr à factoriser ... RE: Gestion des formules selon les niveaux - Insectoid - 04-09-2014 Je ne pensais pas du tout à ça... Mais oui, c'est la solution Lors du chargement de la page, les variables sont initialisé par rapport de level de chaque élément. Non seulement ça évite un calcul supplémentaire, mais en plus, tout est fait à l'avance ça accélère le traitement J'opte pour cette solution Les besoin pour chaque élément lors d'un up de level sont connus et permette alors l'autorisation rapide pour construire ou non Merci RE: Gestion des formules selon les niveaux - niahoo - 04-09-2014 Penses à utiliser l'héritage pour toutes les fonctions communes à tous les bâtiments. Et si tu as un modèle bâtiment de base tout ceci n'a pas grand chose à voir dans un namespace "Math". Concernant l'abstraction, les interfaces et tout ça, c'est bien beau, mais dans un JV la plupart des modèles ont des spécificités. Au final, avoir des interfaces vides et des classes pour transporter un simple entier c'est (excuse moi Xenos) un peu de la branlette. Si tu ne veux pas passer toute ta vie sur un seul jeu il vaut mieux accélérer le dev en acceptant que comme de toute façon tu vas te taper énormément de contenu à la main ça ne fait pas de mal d'utiliser des constantes et "fonctions constantes" en dur dans le code ; du moment que c'est bien rangé. Créer un jeu ce n'est pas que du code. Il y a beaucoup d'autres choses à apprendre alors ne pas passer tout son temps à avoir du code théoriquement parfait mais qui colle aux doigts c'est pas plus mal. Ceci étant dit, tu peux utiliser dans ton code des variables à la place des 1.6 , 1.7 et stocker ces ratios dans ta base de données pour ton bâtiment-type, à condition que tous (~=) les bâtiments utilisent un tel ratio.
RE: Gestion des formules selon les niveaux - Insectoid - 04-09-2014 Oui oui, bien sur Je ne cherche pas une méthode parfaite universelle qui fait tout. Juste quelque chose d'assez souple à maintenir Pour l'instant mes formules de calcul sont dans un beau table dans un tableur avec des graphique pour vérifier que l'évolution n'est ni trop lente ni trop rapide. (restera à vérifier) Ces formules ne concernent à ce jour qu'un seul type d'insecte. Il y en aura d'autre dans l'évolution du jeu avec des ratio bien différents selon les types d'insectes permettant alors plus de richesse de jeu pour les joueurs (enfin j'espère ) Mettre sous forme d'array les bases des différents éléments et gérer leur besoin pour l'évolution via ce qui m'est présenté s'adapte je pense très bien à mes besoins Voilou |