Problème de suite, retrouver tous les nombres

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
zenko
Membre Naturel
Messages: 16
Enregistré le: 08 Mai 2008, 19:37

Problème de suite, retrouver tous les nombres

par zenko » 08 Mai 2008, 19:55

Bonjour à tous,

Voilà, je programme en ce moment un jeu online et j'aimerais faire un système d'expérience pour acquérir des points de compétence et augmenter son niveau seulement, je coince pour retrouver l'expérience du niveau en cours...
Regardez ce "tableau" :
Niveau / Exp pour niv+ / Exp total
1 / 70 / 70
2 / 75 / 145
3 / 81 / 226
4 / 87 / 313
5 / 94 / 407

Tout est arrondi à l'entier supérieur...

Voilà, on peut considéré cela comme une suite géométrique (je crois) lol
qui a pour formule :
U0 = 70
U1 = 70 + 70 * x/100 (x étant le pourcentage d'augmentation soit 7 dans l'exemple)
Donc, si je ne suis pas idiot, Un+1 = Un + Un * x / 100

Je ne me suis pas trompé jusque là ???? Alors voyons la suite...

Je voudrais récupérer Exp pour niv+ grâce à niveau et Exp total mais c'est la que je coince...

Quelqu'un peut-il m'aider s'il vous plaît... :)



Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 08 Mai 2008, 20:54

Bonjour,
Alors, 2 petites choses. Prenons Vn la suite qui représente l'XP pour passer du niveau n-1 au niveau n.
Premièrement, puisque la suite Vn, c'est celle qui permet d'atteindre le niveau supérieur, autant la commencer au bon rang. Donc, comme 70, c'est l'XP pour passer au niveau 2, disons plutôt V2=70 au lieu de V0=70.

Ensuite, il faut faire attention à ce que tu cherches. Tu as 2 façons de faire. Soit on prend une suite intermédiaire Un, où les résultats ne sont pas arrondis à l'entier supérieur. Alors Un+1 = Un*(1+x%), ce qui est une suite géomètrique, avec Un+1 et Un qui ne seront pas des entiers et alors tu arrondis en cours de route (c'est-à-dire au moment de reporter les valeurs dans le tableau), et tu as Vn=E(Un)+1, avec E(x) la fonction partie entière.

Soit, le calcul de Vn+1 se fait avec la valeur de Vn et dans ce cas, tu as Vn+1=E(Vn*(1+x%))+1. C'est ce que tu as fait d'après les valeurs que tu as mis dans ton tableau. Et dans ce cas, ce n'est plus une suite géométrique.

Dans le premier cas, étant donné que c'est une suite géométrique,
où n est le niveau à atteindre, et tu prends ensuite la partie entière et donc . Et tu n'as besoin ici que de connaître le niveau à atteindre n.

Dans le deuxième cas, je n'ai pas encore trouvé. Est-ce que la suite de la colonne de droite est connue à l'avance ? Si oui, c'est plus simple :), mais dans ce cas, je comprends pas trop l'intérêt de ton truc vu que c'est immédiat. Ou alors, c'est que je n'ai pas compris ton problème.

zenko
Membre Naturel
Messages: 16
Enregistré le: 08 Mai 2008, 19:37

par zenko » 09 Mai 2008, 00:09

Ok, merci beaucoup mais j'aurai une petite question, comment as-tu fait pour passer de Un+1=Un*(1+x%) à Vn=E(Un)+1 c'est une formule ou il y a un raisonnement à faire???

En tout cas, merci beaucoup, j'ai du relire ton message 3 ou 4 fois avant de comprendre, je ne suis pas une lumière en mathématique... lol

Sinon, pour éclairer ton petit problème, tu as un personnage avec 0 XP et tes XP augmente petit à petit et quand tu "enregistre" ta parti, seul le niveau et les XP totaux sont enregistrer. Le jeu (ou le problème) comment avec 0XP mais 70 pour accéder au niveau 2 soi un chiffre prédéfini et ton niveau 1....

J'espère que tu as compris... Donc, tu ne connais pas la colonne de droite moi, on peut dire que si mais elle ne se termine pas, aucune limite dévolution.... C'est pour ça que je ne trouvais pas, vu que les XP nécessaire au prochain niveau ne sont pas enregistrer, ca prend de la place tout ça... lol

Merci beaucoup :zen:

Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 09 Mai 2008, 09:14

zenko a écrit:Ok, merci beaucoup mais j'aurai une petite question, comment as-tu fait pour passer de Un+1=Un*(1+x%) à Vn=E(Un)+1 c'est une formule ou il y a un raisonnement à faire???

Je viens de me rendre compte d'une petite erreur dans mon raisonnement, mais ce n'est pas fondamental. Ma formule arrondit toujours à l'entier supérieur, même si tu as déjà un entier. Autrement dit, si tu tombes après le calcul sur 70 par exemple, dans le tableau, il faudrait mettre 71. Ce n'est pas ce qu'on veut. Je corriges donc cela :
Dans le premier cas, Vn=-E(-Un) (Et non plus Vn=E(Un)+1 qui était une erreur). Cela n'a rien à voir avec "Un+1=Un*(1+x%)". Je ne passe pas de l'un à l'autre. C'est purement de la logique. C'est juste que tu veux arrondir à l'entier supérieur. La fonction qui a un réel x associe -E(-x) arrondis x à l'entier supérieur, ne va pas chercher plus loin.
Dans le deuxième cas, tu auras Vn+1=-E(-Vn*(1+x%)).
En fait, la différence entre les 2 méthodes, c'est juste de savoir si pour calculer le palier suivant, on prend la valeur arrondie ou la valeur non arrondie.

Un exemple tout simple pour que tu comprennes la différence entre les 2 méthodes. Prenons x=50.
Partons de V2=50.

Première méthode :
On passe par le suite Un. Les calculs des points d'XP nécessaire au passage au niveau supérieur se font par son intermédiaire : U2=50.
U3=U2*1.5=50*1.5=75 et donc V3=75.
U4=U3*1.5=75*1.5=112.5 et donc V4=113.
U5=U4*1.5=112.5*1.5=168.75 et donc V5=169.
U6=U5*1.5=168.75*1.5=253.125 et donc V6=254.

Deuxième méthode (celle que tu as faites pour remplir ton tableau)
V3=-E(-V2*1.5)=-E(-75)=75.
V4=-E(-V3*1.5)=-E(-112.5)=113.
V5=-E(-V4*1.5)=-E(-113*1.5)=-E(-169.5)=170. C'est là que ça change !!!!
V6=-E(-V5*1.5)=-E(-170*1.5)=255.

Sinon, ne t'embête pas avec -E(-x), il y a dans les langages de prog des fonctions qui arrondissent directement à l'entier supérieur.

zenko a écrit:Sinon, pour éclairer ton petit problème, tu as un personnage avec 0 XP et tes XP augmente petit à petit et quand tu "enregistre" ta parti, seul le niveau et les XP totaux sont enregistrer.

Oui, c'est bien clair.

zenko a écrit:Le jeu (ou le problème) comment avec 0XP mais 70 pour accéder au niveau 2 soi un chiffre prédéfini et ton niveau 1

Là, j'ai rien compris. J'ai beau essayé, je comprends pas cette phrase.


zenko a écrit:Donc, tu ne connais pas la colonne de droite moi, on peut dire que si mais elle ne se termine pas, aucune limite dévolution

Ce n'est guère plus clair mais je pense avoir compris

zenko a écrit:les XP nécessaire au prochain niveau ne sont pas enregistrer, ca prend de la place tout ça... lol

Oui ok d'accord.

Maintenant, j'ai besoin de savoir si on connait x dans ton programme ou si il est à déterminer à partir des données enregistrées.
Ensuite, j'ai quand même du mal à voir pourquoi tu as besoin de la colone du milieu. Ce ne serait pas la colone de droite que tu cherches pour le coup ?

Parce qu'au lancement du jeu, avec un perso de niveau 10 qui a 535 XP (sachant que le palier était 500). A quoi ca va te servir de savoir qu'il faut 50 points pour passer du niveau 10 au niveau 11 ?? A mon sens, tu es bloqué et tu ne peux rien en faire. Puisque tu ne te souviens pas de la valeur-palier 500 vu que tu viens de charger la partie. Et 535+50=585 pour passer au niveau 11 n'est pas la bonne valeur, puisque celle-ci devrait être 500+50=550.

Qu'en penses-tu ?

zenko
Membre Naturel
Messages: 16
Enregistré le: 08 Mai 2008, 19:37

par zenko » 09 Mai 2008, 19:43

Benjamin631 a écrit:Sinon, ne t'embête pas avec -E(-x), il y a dans les langages de prog des fonctions qui arrondissent directement à l'entier supérieur.

Oui, elle s'appelle ceil et abs rapporte la valuer absolue, mais merci quand même ;) lol

Benjamin631 a écrit:
zenko a écrit:Sinon, pour éclairer ton petit problème, tu as un personnage avec 0 XP et tes XP augmente petit à petit et quand tu "enregistre" ta parti, seul le niveau et les XP totaux sont enregistrer.

Là, j'ai rien compris. J'ai beau essayé, je comprends pas cette phrase.

Là, je t'avoue que je ne me comprend pas non plus... :mur:

Benjamin631 a écrit:Maintenant, j'ai besoin de savoir si on connait x dans ton programme ou si il est à déterminer à partir des données enregistrées.
Ensuite, j'ai quand même du mal à voir pourquoi tu as besoin de la colone du milieu. Ce ne serait pas la colone de droite que tu cherches pour le coup ?

Non, je connais la colonne de droite(XP totaux) et le niveau pour la formule mais je veux afficher la colonne du milieu pour que le joueur sache combien il lui fait de XP pour accéder au niv sup... C'est plus clair dit comme ça? Parce qu'en fait, je veux que l'XP nécessaire augmente au fur et à mesure mais ta formule fonctionne à 1 ou 2 xp près...

Quant au x, on le connais sans le connaître, en fait que veux que l'XP nécessaire pour passer du n 10 au n 11 soit x% de plus que celui pour passer du n9 au n10 et ainsi de suite.... je cherche un x entre 7 et 9 %, voilà ce que je recherche, je ne veux pas que les XP montent trop vite...

Benjamin631 a écrit:Qu'en penses-tu ?


En cours d'édition du msg, j'ai eu un flash, si je cherche uniquement la colonne du milieu j'ai besoin en fait de faire un calcul qui me donne l'XP total pour accéder au niveau 11 soit quand tu es au n10, tu as 0 XP (de ce niveau) et il t'en faut x mais ce x = XP totaux quand tu accédera au niveau 11 - ceux que tu as.... que je suis bête, tu as raison, c'est la colonne de droite qu'il me faut (uniquement)...

Je ne me suis pas trompé, c'est bien ce que tu voulait me dire au final???

Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 09 Mai 2008, 19:58

Je commence un peu à me perdre là. Je vais te résumer ce que j'ai compris et tu me diras si c'est bien ça.
Quand on enregistre une partie, on sauvegarde le niveau et les XP totaux.
Sur la feuille de perso, tu veux qu'il s'affiche l'XP restante pour atteindre le niveau supérieur. Il suffit donc de ne connaitre que la colonne de droite et de faire une soustraction.

Si c'est bien ça, il suffit de faire une somme. Il ne faut pas se prendre la tête. Etant donné que tu travailles sur un prog, même si c'est pas un algo forcément très optimisé, on s'en fout un peu parce que tu ne fais pas du temps réel pour cette info !!!.

Donc, tout simplement : j'introduis la suite Wn qui représente l'XP total pour passer au niveau n. Tu définit le niveau d'XP pour atteindre le niveau 2 : W2=70 par exemple. Et ensuite, connaissant le niveau n du perso (n=10 par exemple), tu calcules l'XP nécessaire pour atteindre le niveau n+1. Et au final, l'XP que tu cherches, c'est W(n+1)-XP actuel. Tu peux donc faire tout simplement :

int W=70;
for(int i=2;i W=W+ceil(W*.07);
}

Et à ce moment là, W vaut l'XP dont tu as besoin pour atteindre le niveau n+1. Et il suffit de soustraire les XP actuels. Tu ne crois pas ?

zenko
Membre Naturel
Messages: 16
Enregistré le: 08 Mai 2008, 19:37

par zenko » 11 Mai 2008, 03:41

Oui, c'est ça je crois, je vais tester ce script mais je pense que c'est bien cela... Merci pour tout... ;)

Sinon, pourrais tu m'expliquer un peu ce qu'est un algorithme et/ou comment cela fonctionne...
Ou aurait tu un petit exemple... Merci beaucoup...

Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 11 Mai 2008, 12:27

Tu peux tout simplement aller voir sur Wikipedia, je ne crois pas que je ferrai mieux. Tu programmes ton jeu en quel langage sinon ? J'avoue que je ne m'attendait pas à cette question lol.

zenko
Membre Naturel
Messages: 16
Enregistré le: 08 Mai 2008, 19:37

par zenko » 12 Mai 2008, 12:10

Je programme mon jeu en PHP, avec du CSS et du xHTML bien sûr, et je compte mettre du javascript pour que le jeu soit plus attrayant...
Pourquoi cette question ??? Simple curiosité?
Merci bien en tout cas ;)

Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 12 Mai 2008, 12:29

Ok ok, pas de quoi. J'espère que ton jeu sera super ;) ^^

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 56 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite