JeuWeb - Crée ton jeu par navigateur
[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)

Pages : 1 2 3


[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...
  • Ayant 2000 d'armure réduise de 25% les dégâts infligés.
  • Ayant 4000 d'armure réduise de 30% les dégâts infligés.
  • Ayant 8000 d'armure réduise de 33% les dégâts infligés.
  • Ayant 16000 d'armure réduise de 35% les dégâts infligés.

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. Wink


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 )