Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse
Accélération grâce à une boucle For( ?
Auteur Message
raboulave
Invité
Posté le : Jeu 19 Sep 2013, 13:37   Citer 

Bonjour à tous happy.gif ,

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 tongue.gif
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 sad.gif

Comment faire ?
Merci d'avance de votre aide happy.gif

  Haut de page Bas de page 
 
raboulave



Autorisation : Membre
Nb de messages : 57
Inscrit le : Jeu 08 Oct 2009, 20:56
Posté le : Jeu 19 Sep 2013, 13:40   Citer 

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



 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3772
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 19 Sep 2013, 14:39   Citer 

Tu viens de buter sur un fameux défaut que j'ai présenté 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



----------------------
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)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2018 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa