[Réglé] Créer des formules mathématiques - 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 : [Réglé] Créer des formules mathématiques (/showthread.php?tid=1871) |
[Réglé] Créer des formules mathématiques - Sephi-Chan - 11-10-2007 Salut à tous, Dans un autre cadre que le projet Seelies (Oui, je suis infidèle :p), je dois élaborer une formule pour gérer l'armure des personnages. L'armure est un score qui permet de réduire les dégâts reçus. L'idée est en fait d'avoir une courbe Logarithme pour éviter d'avoir des personnages forteresse. Mon problème, c'est que je ne pratique pas assez de maths théoriques, et je suis donc bien embêté. Je ne peux pas utiliser la fonction Logarithme directement, car les chiffres d'armures varient de 2k à 16k, et je ne peux pas déplacer le repère pour commencer à 2k. Donc je vous explique ce que je voudrais faire, peut-être que l'un de vous pourra m'aider. Les chiffres sont donnés arbitrairement, mais je pense que vous comprenez le type d'évolution que je souhaite avoir. Il faudrait qu'un personnage...
Comment donc pourrais-je obtenir une formule qui me donne ce type d'évolution. Je vous remercie d'avance, Sephi-Chan RE: Créer des formules mathématiques - Loetheri - 11-10-2007 Il existe une solution assez simple ^^ utiliser les logarithmes. Bien entendu, cela se base sur les chiffres que tu donnes. Tu divises l'armure par 1.000. Tu calcules le logarithme en base 2. Si je me souviens bien, le logarithme de 2 en base 2, cela fait 1. Donc tu fais après 20 + log (x/1.000) en base 2 * 5. C'est une façon de faire ;-) RE: Créer des formules mathématiques - exopi - 11-10-2007 en fiat tu veux une fonction qui augmente de x lorsque qu'on double par rapport à 2000, de 2x quand on quadruple par rapport à 2000, etc. ben voila : $nb = 25 + 5 * ln( $armure / 2000 ) / ln( 2 ) La démonstration : soit x= armure/2000 un tableua des var de x et de ce que doit etre nb : x- 1 2 4 8 nb- 1 2 3 4 on a donc 2^nb=x e(ln(2)nb)=x ln(2)nb=ln(x) nb=ln(x)/ln(2) RE: Créer des formules mathématiques - Sephi-Chan - 11-10-2007 Comment je calcule le Logarithme en base 2 ? La fonction log() le donne en base 10 et ln() en base 2,7 (e). Mon but est d'avoir le "coude de saturation" de la courbe quand on arrive à 8000 d'armure, après quoi la réduction des dégâts augmente très lentement. Il doit y avoir un moyen d'avoir ce rendu. Sephi-Chan RE: Créer des formules mathématiques - exopi - 11-10-2007 donc pour armure=2000, nb= 25+0/2=25 armure=4000, nb= 25+5*1 = 30 armure=8000, nb= 25+5*2=35 armure=16000, nb= 25+5*3=40 RE: Créer des formules mathématiques - exopi - 11-10-2007 ma formule fait ce que du demande Sephi-Chan RE: Créer des formules mathématiques - exopi - 11-10-2007 si tu veux reduire encore plus la progression mais sur les grandes valeurs, suffit d'imbriquer un autre ln par dessus RE: Créer des formules mathématiques - Sephi-Chan - 11-10-2007 Non c'est pas ça en fait, je ne veux pas de proportionnalité, c'est d'ailleurs pour ça que je me suis intéressé à la courbe du Logarithme. J'ai mis 25% de réduction pour 2000 d'armure à titre totalement arbitraire, pour illustrer mon but. Mieux vaut donc oublier ces valeurs au moment de concevoir la formule. Sephi-Chan @Exopi : Gaffe au multipost tu vas finir par te faire taper sur les doigts. RE: Créer des formules mathématiques - exopi - 11-10-2007 mais tu n'as pas lu atentivement ce que j'ai ecrit bon sang.... la formule générale... : nb = a + b * ln( c / d ) / ln( e ) avec : a le nb de depart b la valeur d'incrément ( nb augmente de b quand armure se multiplie par e ) c la valeur d'armure d la valeur d'armure de depart ( la c'était 2000 ) e la croissance d'incrémentation ( 2 étant ce que tu demande dans ton exemple ) RE: Créer des formules mathématiques - exopi - 11-10-2007 et si tu veux que la croissance soit 2 fois plus logarithmique, comem dans ton exemple : nb = a + b ln ( ln(c/d)/ln(e) ) / ln ( e ) |