boucle sur rcse?

User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

boucle sur rcse?

Postby Aknoth » Wed May 23, 2018 12:20 pm

Bonjour
je me lance dans rolisteam et en commençant par mettre en place une feuille de personnage je me suis fixé de "l'automatiser" au mieux si cela est faisable.
j'ai vu que la feuille était en QML et que l'on pouvait y faire quelques calcules déjà interessant, mais j'aurai besoin d'une suite mathématique qui calcule l'xp dépensé pour obtenir un lvl.

donc ma question est: peut on intergrer dans le code des "conditions" du genre if, then etc et des variables pour réaliser des boucles. chose que l'on retrouve dans un petit programme quoi.
merci
Pour la Justice
User avatar
renaud
Site Admin
Posts: 177
Joined: Sun Mar 29, 2015 12:56 pm

Re: boucle sur rcse?

Postby renaud » Fri May 25, 2018 6:00 am

Tout à fait. C'est largement possible. Le qml utilise de javascript pour faire des calculs.
si vous souhaitez un exemple, je conseillerais de regarder cette fiche que j'ai faite ou il y a des calculs.

viewtopic.php?f=9&t=83

Si vous avez des questions, je peux y répondre.

Je vous conseille de faire une fonction javascript qui retourne l'xp demandée pour un niveau.
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Sat May 26, 2018 10:11 am

Bonjour
merci pour votre réponse

Pour résumer il sagit de calculer l'xp demander pour monter en lvl.
on passe de rang en rang en multipliant le rang à obtenir, par 10. sachant qu'il faut passer par le rang1 pour arriver au rang 2 et ainsi de suite.
cela donne R1= 10XP, R2=30xp, R3=60xp etc...
pour moi cela donne une suite Rn= Rn-1 +(n x 10) qui est une suite mathématique avec R0=0 et n niveau de rang.

Dans l'idée, sur ma feuile j'ai 4 cases:
_une pour le total xp(TTxp) dans laquelle viennent s'ajouter tout l'xp depuis le début de la création du personnage,
_une dans laquelle le MJ vient déposer l'xp gagné (Gxp). lorsque le joueur monte son perso pour une compétence, il dépense l'xp gagné qui vient s'ajouté à l'xp total.
_une case qui montre l'xp que dépenser pour ses changements de rang et qui une fois validé va se vider et soustraire ces XP aux gains et vérouller les nouveaux rangs.
_ j'ajoute une quatrieme case dans laquelle on dépense de l'xp calculé hors feuille pour d'autres raisons (par expl achat de talent sachant que chacun a un coût propre). pour l'achat aussi d'autres spécialités dans sa carrière ou hors carrière

pour compliquer, il existe quelques exeptions:
si cette compétence est de carrière: cela devient Rn= Rn-1 +(n x 5). pour le préciser j'ai mis une case a cocher.

j'ai peut être deux solutions possibles: soit faire un bon codage correct avec une boucle de calcul, soit attribuer directement un nombre d'xp par rang et faire le calcul d'avance du genre R1=10 R2=30 etc... surement la plus simple et la plus laide. :lol:
je ne sais pas des deux solutions laquelle sera la plus lourde à faire tourner.

sachant que l'on rentre un chiffre dans la case rang. on ne doit pas pouvoir rentrer un chiffre inferieur à celui actuel. Alors une fenêtre s'ouvre disant que le chiffre ne peut pas être inferieur. Il valide "ok" et le chiffre redevient l'ancien.
Pour la Justice
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Sat May 26, 2018 9:22 pm

re
alors je suis assez fier de moi car j'ai pu coder (et je ne suis pas coder) mon premier script qui rempli ce pourquoi j'ai commencé ce projet.
Alors pour certain biensur cela va vous paraitre facil mais pour moi c'est une autre affaire. j'avais déjà étudier le python et d'autres pour un rasberry mais jamais mis les mains dedans.

je cherchais donc comment calculer le coût en xp lors d'une progression de rang selon les régles cité ci dessus.

j'ai lu ce cours : https://openclassrooms.com/courses/dyna ... javascript
qui conseil cette page pour vos essais: https://jsfiddle.net/

bref à ma deuxieme tentative j'ai trouvé ce que je cherchais et ca marche!!!!

1 var n = prompt('entrer le rang:');
2 var u = 0;
3 for (var i = 1; i<=n; i++) {
4 U = u+(i*10)
5 u = U
6 };
7 alert(U);
Last edited by Aknoth on Sun May 27, 2018 3:18 am, edited 1 time in total.
Pour la Justice
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Sun May 27, 2018 3:16 am

je progresse dans mes recherches

Code: Select all

1 function calculXP() {
2 if (confirm('est ce une compétence de carriere?')){
3 c = 5;
4 }
5
6 else {c = 10;
7 }
8 var n = prompt('entrer le rang:');
9 var u = 0;
10 for (var i = 1; i<=n; i++) {
11				U = u+(i*c)
12				u = U
13				var text = 'il faut ', text2 = ' xp';
14				result = text + U + text2
15 }
16
17 alert(result);
18 }
19
20 calculXP();
c'est pas completement comme ça que cela se passera, cela me permet de vérifier si c'est bon
donc ici, j'ai fait une foncion calculXP que j'execute et qui me demande si compétence de carriere ou non puis selon applique une valeur différente "c" pour le calcul de ma suite.
il me rend le résultat avec une petite phrase.
Pour la Justice
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Sun May 27, 2018 3:56 am

voici ma feuille de perso
Image
Pour la Justice
User avatar
renaud
Site Admin
Posts: 177
Joined: Sun Mar 29, 2015 12:56 pm

Re: boucle sur rcse?

Postby renaud » Sun May 27, 2018 4:15 pm

Je vous conseillerais de créer une fonction qui recoit en parametre le niveau de compétence et un parametre true ou false si c'est une compétence de carrière.

Ensuite, je pense qu'il est intéressant de réflechir comment vous voulez afficher/calculer ses infos sur la fiche.

Pour ma part, je prefere me faire un vrai cahier de compte des XP, sur mes persos. Cela permet de garder traces de tous les changements.
Une colonne nom , une colonne dépence, une colonne gain.
Exemple:

Code: Select all

Force à 4               : 40     0
XP partie du 20/05/2019 :  0    20
C'est mon point de vue.
La dépense est dissocié de l'affichage dans la fiche (car c'est compliqué de l'automatisé).

Code: Select all

function calculXP(var rang, var carriere) 
{
 	var cost = 10
 	if (carriere){
 		cost = 5;
 	}
 	var sum = 0;
 	for (var i = 1; i<=rang; i++) {
		sum = sum+(i*cost)
 	}
 	return sum;
}
result = calculXP(4,true);
// affciher result
Comme ca la function ne fait que calculer le cout. La cosmétique peut être fait après la fonction.
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Sun May 27, 2018 11:30 pm

ce que j'ai fait c'est pour m'exercer et je vois que c'est un peu différent de celle que vous proposez (je la comprend quand même. Ceci dit (je ne vois pas comment il connait "c")
Je vous conseillerais de créer une fonction qui recoit en parametre le niveau de compétence et un parametre true ou false si c'est une compétence de carrière.
oui c'est exactement ce que je veux. tous les parametres de la feuille d'un caracter seront à zero et on recupére le niv de compétence carrière etc...
sur la feuille dans chaque compétence je place une case a cocher pour signifier que c'est une compétence de carriere ou non..

la fonction récupère donc cette donné et, au changement refais les calculs pour sortir l'xp demandé pour ce changement.
une fois obtenu cet xp, il suffirait de le soustraire au xp gain (donné par le MJ) et de l'additionner qu xp totals.
Pour ma part, je prefere me faire un vrai cahier de compte des XP, sur mes persos.
cela ferait une feuille de plus au perso? ou c'est uniquement pour le MJ?

j'aimerai que le joueur puisse lui même faire ces changements et calculer lui même s'il est préférable ou non de mettre son xp dans telle ou telle compétence en fonction de son gain, pour optimiser son perso selon son goût. si cela est possible.

Je ne sais pas comment intégrer la "fonction".
je me trompe peut etre mais en plus chaque case de carrière ayant une id et pareil pour la compétence, pareil pour la caractéristique cela risqued'alourdir le code. a moins de pouvoir incorporer dans la fonction la recherche de chaque case coché ou non et la value de chaque rang.
Enfin la notion de validité d'apprentissage pour valider les changements est importante, pour que le joueur puisse travailler sa feuille tranquilement et une fois décidé, la valider définitivement.
un changement de couleur des nouvelles valeurs pendant les test pourrait aider a repèrer les valeur en cour de modification.
l'historique de ces changements est un "plus" qui peut apporter des éléments au MJ

je vais finaliser ma feuille de perso et 'l'editer correctement avec rcse. je la posterai ici demain
voila, si c'est trop compliqué, on vera pour une autre solution efficace
Pour la Justice
User avatar
renaud
Site Admin
Posts: 177
Joined: Sun Mar 29, 2015 12:56 pm

Re: boucle sur rcse?

Postby renaud » Mon May 28, 2018 10:29 am

Je vois dans cette liste une série de fonctionnalités. On va les séparer et faire le point.

D'abord, je vais commencer par le scénario idéal (Ce que vous voulez, si j'ai bien compris).


Le joueur gagne de l'xp et décide d'améliorer son score en tir.
Il calcule l'xp necessaire pour l'augmentation de la compétence tir.
Il "valide" la dépense et cela diminue son XP courante et cela augmente sa valeur de tir.
Cela apparait en vert (pour signifier le changement).
Le MJ jete un coup d'oeil. Il n'a rien à redire.
Il peut consulter la liste des changements pour être certains.

___

Comment vous voulez que le joueur intéragisse avec le système qui calcule le cout en xp pour la nouvelle valeur ?

On peut prévoir plusieurs trucs:
Soit un formulaire automatique, l'utilisateur choisi dans une liste la compétence, il inscrit le niveau à atteindre, et automatiquement cela calcule le cout.
La gestion automatique des choses n'est pas impossible mais cela va demander du travail.

Un formulaire basique: un niveau de départ, un niveau d'arrivée, une case à cocher (de carrière ou pas) et une petite liste pour savoir si c'est une compétence, un attribut, un talent ou autres.
C'est plus simple.

Dans les 2 solutions, c'est un formulaire, on peut prévoir de mettre ça sur une page spéciale à la fin de la fiche ou de l'afficher par un click bouton. C'est un outil dans la fiche. il n'est présent qu'une fois.

L'autre possibilité, c'est d'afficher le cout pour chaque élément pour augmenter de 1 le niveau.
Cela peut-être très lourd à mettre en place mais aussi très élégent (si c'est bien fait).
Je conseillerais d'utiliser des tooltips (petit message qui apparait quand la souris est dessus un élément).

* Le formulaire automatique: difficulté: 6/10, temps: 8/10
* Le formulaure simple: difficulté: 4/10, temps: 4/10
* Toujours présent: difficulté: 5/10, temps: 10/10

Fonctionnalité:

* Calcul du cout: simple
* Validation des changements: compliqué
* Affichage de couleur different des valeurs changées: facile mais long (il faut le répéter plein de fois)
* lister les modifications: compliqué (pourvoir les annuler par un click ou autre serait impossible), il serait plus pratique de faire cela dans le code de Rolisteam.



Pour votre fiche de perso, attention au case à cocher, elles buggent, il vaut mieux ne pas en utiliser trop. j'ai un outil pour les débugger dans tous les cas.
User avatar
Aknoth
Posts: 16
Joined: Tue May 22, 2018 2:27 pm

Re: boucle sur rcse?

Postby Aknoth » Tue May 29, 2018 10:16 pm

voila ma feuille de perso
Image
voila aussi ma simulation: c'est le scénario comme vous l'avez décrite.
http://zupimages.net/viewer.php?id=18/22/z6uo.jpg

Comment vous voulez que le joueur intéragisse avec le système qui calcule le cout en xp pour la nouvelle valeur ?
le plus simplement possible, cad en changeant directement ses valeurs.
attention au case à cocher, elles buggent, il vaut mieux ne pas en utiliser trop
c'est comme ça que je spécifie si c'est carrière ou non :roll:


En travaillant ma feuille, j'ai cependant un peu avancé et peut être trouvé dessolutions simples.
pour redonner un peu la situation qui bloque:
j'ai 4 cases qui conserne l'XP:
TOTAL XP (Xptt): Xp total aquis depuis le début de l'existance du perso avec compétences et caractéristiques égales à zero
TOTAL GAIN (Xptg): Xp donné par le MJ
DEPENSE XP (Xpd): Xp necessaire pour up une valeur
XP HORS CATEGORIE (Xph): Xp necéssaire pour up une valeur non gérée par la feuille, et rentré par le joueur en accord avec le MJ

pour les calculs ça donnait ceci
Xptg=(Xpd x -1)+(Xph x -1) or du coup le gain prenait la valeur des deux autres puisque liés par le "=" et ne tenait plus compte de l'entré du MJ dans Xptg
Xptt=Xpd+Xph et donc la aussi la valeur de TOTAL XP restait pas puisque lié par le = aussi

donc j'ai créé deux nouvelles id textInput TOTAL et GAIN dans lesquels le MJ pourra placé dans les données lXP TOTAL et le gain qu'il veut donner

au final, les calculs ont changés :
Xptt=${TOTAL}+${Xpd}+${Xph} donc mon xp total garde sa valeur de base
Xptg=${GAIN}+${Xpd}*-1+${Xph}*-1 donc mon gain reste bien et il la dépense se soustrait

à la validation:
le joueur demande au MJ de valider. le MJ remplace les nouvelles valeur dans les id TOTAL et GAIN, puis remet a zero Xpd et Xph


Donc je me suis dit avec une "fonction" qui calculerait l'ensemble d'xp pour toutes caract et compétences à la création du perso (carriere comprise) que l'on stockera soustrait à lui même pour être égale à zero, du coup au changement d'une seule caract etc donnera l'xp a dépenser et a mettre dans Xpd.
le reste se fera comme ci dessus.
on récupère chaque rang (carrière ou non) et chaque caractéristique auquel on applique la fonction pour obtenir le nombre d'xp que l'on va additionner dans Xpd
on crée une id XPD de même valeur que Xpd.
Xpd=xp recalculé à chaque changement-XPD
a chaque validation, le MJ change la valeur sur la feuille de donnée avec XPD=Xpd, ce qui remet le compteur Xpd a zero.

Code: Select all

function calculXP(var rang, var carriere)
{
    var cost = 10
    if (carriere){
       cost = 5;
    }
    var sum = 0;
    for (var i = 1; i<=rang; i++) {
      sum = sum+(i*cost)
    }
    return sum;
}
result = calculXP(4,true);
comment peut on récupérer la valeur de rang et l'état de carriere, sachant que j'ai un rang pour chaque compétence (de Rast (id 137) à Rpug (id 174), une valeur pour 6 caractéristques (AGI INT PRE RUS VIG VOL) et des cases à cocher pour carriere ou non (ccast (id25) à cpug (id61))
sinon peut etre faut il passer là aussi par un formulaire ou un tableau pour récupérer les valeur de chaque rang mais pour le moment je ne sais pas vraiment ce que c'est un formulaire (je me renseigne).

voila si c'est possible et surtout plus simple c'est bien. il est vrai qu'il n'y aura pas d'historique non plus mais je n'y tiens pas non plus
option:
changement de couleur
pour valider, cela envoi un message au MJ de demande de validation.
historique des mouvements

Et si tout ceci n'est pas possible alors, je penche pour le formulaire le plus simple. a voir en action, je me renseigne donc pour voir si je pourrai aider. ça pourrait être une prochaine étape, voir quelque chose de général dans toutes les feuilles de perso.
merci pour l'aide
Pour la Justice

Who is online

Users browsing this forum: No registered users and 1 guest

cron