raboulave le 19/09/2013 à 13:37
Bonjour à tous

,
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
Comment faire ?
Merci d'avance de votre aide

raboulave le 19/09/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
linkakro le 19/09/2013 à 14:39
Tu viens de buter sur
un fameux défaut que j'ai prÃ[...]dans un article.
Les paramètres de la boucle For ne peuvent pas être modifiés pendant l'execution de ce For.
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