Je cherche actuellement à coder une sorte de Cookie Clicker (disponible à cette adresse si vous ne connaissez pas ^^ http://orteil.dashnet.org/cookieclicker/)
C'est un jeu un peu à la con mais addictif
Bref, à chaque appui sur la touche Entrée, le joueur gagne un cookie, avec ces cookies il peut acheter des upgrades comme une augmentation de nombre de cookies gagnés par clic, ou encore l'augmentation du nombre de cookies par seconde gagnés.
Et c'est sur ce point que je pèche;
J'utilise une boucle For(A, 0, 10^20, 0.01) pour tout le programme, le joueur gagne donc de base environ 1 cookie par seconde, plus un cookie à chaque fois qu'il appuie sur Entrée.
Je voudrais qu'on puisse acheter une upgrade qui fait passer à 2 cookies par seconde. J'ai donc fait :
Code
0.01-> B
For(A, 0, 10^20, B)
codeTouche->K
If K=105: A+1->A
If L=1:0.02->B
End
Si le niveau (L) passe à 1, on augmente le pas.
Et ben.... ça marche pas ! Il n'y a pas l'accélération voulue
Autorisation : Membre
Nb de messages : 57
Inscrit le : Jeu 08 Oct 2009, 20:56
Posté le : Jeu 19 Sep 2013, 13:40
P.S : Désolé pour le double post,
Juste pour préciser même si c'est assez évident, que j'ai oublié l'affichage
Et que vous ne pourrez pas voir le changement en temps réel si je laisse juste L comme ça ^^
Testez ceci :
Code
EffEcr
0.01-> B
For(A, 0, 10^20, B)
codeTouche->K
If K=105: A+1->A
If K=11:0.02->B
Output(4,6,A
End
Je te propose de contrôler toi-même l'incrément puisque le For ne convient pas.
De plus la boucle For commettrait une "erreur incrément" dès que le rapport entre le pas et le compteur approcherait 10^14. (La calculatrice supporte 14 chiffres et en utilise moins selon les actions.). Quelques arrondis causent l'erreur un peu plus tôt ou un peu plus tard, mais c'est toujours lorsque le pas est négligeable devant la valeur.
Et une boucle autre que For, avec une condition posée nous-même, aurait des problèmes de calcul similaires mais ne nous avertirait pas. (les conditions utilisent 12 chiffres parmi les 14 si je me souviens bien)
Code
EffEcr
0.01-> B
0 -> A
While A<=10^14
codeTouche->K
If K=105: A+1->A
If K=11:0.02->B
Output(4,6,A
A+B->A
End
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)