Posté le 21/08/2018 13:01
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 175 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 21/08/2018 13:05 | #
Je ne comprends pas vraiment ce que tu veux dire...
Peux-tu être un peu plus précis s'il te plait ?
Citer : Posté le 21/08/2018 13:14 | #
Et bien par exemple j'ai refait ma boucle for dans un autre programme le for va de 1 à 1000 et dans cette boucle je mets juste un getkey que je donne à une variable.
Si j'attends sans rien faire la boucle mets 10 secondes je crois mais si je bourrine une touche, la boucle se termine au bout de 3 secondes à peine ...
J'aimerais conserver mon getkey à l'intérieur de ma boucle mais que cette boucle dire autant si j'appuie ou pas sur les touches !
J'espère que tu as compris même si mon explication est brouillonne ...
Citer : Posté le 21/08/2018 13:21 | #
J'ai pas tout compris
Imaginons que tu veuilles un boucle tourne tant qu'aucune touche n'est appuyée : ce code devrait convenir :
0→A //tu met 0 dans A
Do //début de la boucle
Getkey→A //tu met la valeur de la touche dans A
LpWhile A=0 //tant que A est égal à 0 tu tourne autrement distant qu'aucune touche n'est pressée.
J'ai essayé le code suivant ressemble-t-il au tien ?
0→B
For 0→A to 1000
Getkey→B
Next
Citer : Posté le 21/08/2018 13:25 | #
Si j'attends sans rien faire la boucle mets 10 secondes je crois mais si je bourrine une touche, la boucle se termine au bout de 3 secondes à peine ...
Je précise que c'est un phénomène bien connnu (sauf de Shadow) !
Citer : Posté le 21/08/2018 13:25 | #
Citer : Posté le 21/08/2018 13:25 | #
Bonjour Chapochinoi !
Es-tu en mesure de partager le bout de code avec nous ? Puisque tu as un problème avec ta boucle For, pourquoi ne pas nous l'écrire ?
Citer : Posté le 21/08/2018 13:25 | #
Exactement ! Et tu vas voir que le temps que la boucle met à s'écouler n'est pas le même si tu appuies sur Des touches ou pas
Ajouté le 21/08/2018 à 13:26 :
Et donc comment je peux faire pour que le temps soit toujours le même ?
Citer : Posté le 21/08/2018 13:29 | #
Tu peux ralentir le code artificiellement quand tu appuies sur une touches, de façon à avoir 10 secondes même si tu appuies.
Par exemple avec une boucle For 0->I To 35:Next il faut trouver la bonne valeur, à toi de faire des tests
Citer : Posté le 21/08/2018 13:32 | #
Oui mais c'est plus compliqué parce que mon programme ce sont des objets à rattraper qui se déplacent de la droite vers la gauche et en gros il faut les rattraper mais si j'appuie sur une touche pour rattraper un Des objets, ça fait accélérer la cadence des autres objets ... donc j'aimerais que tout cela se calme un peu !
Citer : Posté le 21/08/2018 13:35 | #
Oui mais c'est plus compliqué parce que mon programme ce sont des objets à rattraper qui se déplacent de la droite vers la gauche et en gros il faut les rattraper mais si j'appuie sur une touche pour rattraper un Des objets, ça fait accélérer la cadence des autres objets ... donc j'aimerais que tout cela se calme un peu !
Partage-nous ton code pour qu'on puisse voir
Citer : Posté le 21/08/2018 23:00 | #
bon j'ai pas compris trop comment envoyer un programme de ma calculatrice depuis FA-124 donc je vais l'écrire: (le plus important du programme)
do
Locate A,F,"x"
Lct B,G,"x"
Lct C,H,"x"
For 1 => D to 50
Getkey => I
Next
A inférieur ou égal à 21 "then" Locate A,F," "
B inférieur ou égal à 21 "then" Lct B,G," "
C inférieur ou égal à 21 "then" Locate C,H," "
A sup 1 "then" Dsz A (pareil pour B et C)
A inférieur ou égal à 21 "then" Locate A,F,"x"
B inférieur ou égal à 21 "then" Lct B,G,"x"
C inférieur ou égal à 21 "then" Locate C,H,"x"
LpWhile 1 (pour l'instant)
bref un peu brouillon mais c'est le début, qu'est ce que je me suis fais chier à tout écrire !
Citer : Posté le 22/08/2018 01:09 | #
Tu stockes ton GetKey dans I mais je ne vois même pas à quoi I te sert dans ce code.
Si tu as encore du mal avec FA-124 essaie de suivre attentivement ce tutoriel ! Depuis FA-124, en double-cliquant sur un programme dans ta calculatrice, tu pourras l'ouvrir et le copier-coller.
Autrement, il y a BIDE (Basic IDE), c'est encore mieux !
Citer : Posté le 22/08/2018 13:00 | #
"1":"2":"3":"4":"5":"6":"7"Ù
RanBin#(21,41)ãAÙ
Do:RanBin#(21,41)ãB:LpWhile B=AÙ
Do:RanBin#(21,41)ãC:LpWhile C=B Or C=AÙ
While AÈ21 And BÈ21 And CÈ21Ù
Dsz A:Dsz B:Dsz CÙ
WhileEndÙ
RanBin#(1,7)ãFÙ
RanBin#(1,7)ãGÙ
RanBin#(1,7)ãHÙ
Do:0ãIÙ
A=21×Locate A,F,"#E656"Ù
B=21×4Ù
ÁLocate B,G,"#E656"Ù
C=21×Locate C,H,"#E656"Ù
For 1ãD To 50:Not I×GetkeyãI:NextÙ
If IÈ0Ù
Then If A=2 Or B=2 Or C=2Ù
Then BreakÙ
IfEnd:IfEndÙ
AÉ21×Locate A,F," "Ù
BÉ21×Locate B,G," "Ù
CÉ21×Locate C,H," "Ù
A>1×Dsz A:B>1×Dsz B:C>1×Dsz CÙ
AÉ21×Locate A,F,"#E656"Ù
BÉ21×Locate B,G,"#E656"Ù
CÉ21×Locate C,H,"#E656"Ù
LpWhile 1Ù
ca donne ca c'est pas très compréhensible … en plus le programme n'est qu'au début donc c'est des "tests" avec le I justement en gros ce que je veux faire c'est que lorsque l'objet arrive tout a gauche juste avant les numéros marqués, si tu appuies sur le numéro de la ligne de l'objet tu "l'attrape" et ca le fait disparaitre mais les autres objets continuent à avancer normalement
Citer : Posté le 22/08/2018 13:40 | #
RanInt#(21, 41) -> A
Do : RanInt#(21, 41) -> B : LpWhile B = A
Do : RanInt#(21, 41) -> C : LpWhile C = B Or C = A
While A != 21 And B != 21 And C != 21
Dsz A : Dsz B : Dsz C
WhileEnd
RanInt#(1, 7) -> F
RanInt#(1, 7) -> G
RanInt#(1, 7) -> H
Do : 0 -> I
A = 21 => Locate A, F, "χ"
B = 21 => 4
/ Locate B, G, "χ"
C = 21 => Locate C, H, "χ"
For 1 -> D To 50 : Not I => GetKey -> I : Next
If I != 0 :Then
If A = 2 Or B = 2 Or C = 2 :Then
Break
IfEnd : IfEnd
A <= 21 => Locate A, F, " "
B <= 21 => Locate B, G, " "
C <= 21 => Locate C, H, " "
A > 1 => Dsz A : B > 1 => Dsz B : C > 1 => Dsz C
A <= 21 => Locate A, F, "χ"
B <= 21 => Locate B, G, "χ"
C <= 21 => Locate C, H, "χ"
LpWhile 1
Citer : Posté le 22/08/2018 13:55 | #
oui exact pour l'instant j'ai mis Break mais faudra que je change ca il y a aussi le premier locate B qui bug là mais sinon oui.
donc je fais comment pour la boucle for ?
Citer : Posté le 22/08/2018 14:00 | #
C'est à cet endroit que ta boucle For se met à s'accélérer quand tu appuies sur une touche, n'est-ce pas ?
Citer : Posté le 22/08/2018 14:04 | #
oui je ne sais pas si tu peux exécuter le code ...en gros le délai de déplacement est "coupé" si j'appuie sur une touche
Citer : Posté le 22/08/2018 14:15 | #
Oui, c'est normal. En gros, je t'explique. La condition Not I => fait que, tant que I est nul, la boucle exécute la commande GetKey -> I. En revanche, dès que la valeur de I n'est plus nulle, la condition n'est plus vérifiée, le GetKey n'est plus assigné à I et donc, la boucle va beaucoup plus vite parce qu'elle ne fait presque plus rien !
Alors, ce que tu veux, c'est que le tour de boucle se fasse 50 fois et que la durée d'exécution de la boucle reste la même. Tu veux aussi que, une fois qu'une touche ait été pressée, qu'il ne soit plus possible d'en changer avant la prochaine boucle.
Je réfléchis...
Tu peux peut-être essayer ceci, ça devrait régler ton souci, en peu de place et en respectant ce que tu voulais :
GetKey //GetKey est stocké dans Ans
//Si le joueur a appuyé sur une touche (Ans non nul) et que I est nul...
Ans And Not I ⇒ Ans→I
Next
Citer : Posté le 22/08/2018 14:28 | #
rahlala merci ça améliore déjà beaucoup les choses et maintenant je comprends ce qui ne vas pas mais le temps que met un objet pour parcourir l'écran est de 15 secondes lorsque l'on ne fait rien et il est de 10 lorsque l'on bourrine … Il reste beaucoup d'écart j'avoue que j'en demande pas mal mais je sais pas si je suis en mesure de trouver une solution seul
Citer : Posté le 22/08/2018 14:35 | #
Le fait est que Getkey est plus lent quand aucune touche n'est pressée.
Getkey
Next
- Aucune touche pressée : 8~9 s
- F1 pressé tout le long : 2~3 s
Je suggère de charger inutilement la boucle quitte à réduire son nombre de tours ?