Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Boucle for interrogation
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Boucle for interrogation

Posté le 21/08/2018 13:01

J'ai utilisé la boucle for pour faire un délai dans l'ensemble déplacement "d'objet" et dans ce délai, je voulais pour utiliser getkey.
Sauf que le délai varie beaucoup si j'appuie ou non sur Des touches pendant le prog, j'aimerais savoir pourquoi et aussi est ce qu'il y aurait un moyen de faire un delai qui ne varie pas ?


1, 2 Suivante
Shadow15510 Hors ligne Administrateur Points: 5500 Défis: 18 Message

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 ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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 ...
Shadow15510 Hors ligne Administrateur Points: 5500 Défis: 18 Message

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


"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir Hors ligne Administrateur Points: 24236 Défis: 170 Message

Citer : Posté le 21/08/2018 13:25 | #


Chapochinoi a écrit :
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) !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5500 Défis: 18 Message

Citer : Posté le 21/08/2018 13:25 | #



"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

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 ?
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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 ?
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

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
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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 !
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 21/08/2018 13:35 | #


Chapochinoi a écrit :
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
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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 !
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

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 !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 22/08/2018 13:40 | #


"1" : "2" : "3" : "4" : "5" : "6" : "7"
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
En gros, voila ton code.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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 ?
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 22/08/2018 14:00 | #


For 1 -> D To 50 : Not I => GetKey -> I : Next

C'est à cet endroit que ta boucle For se met à s'accélérer quand tu appuies sur une touche, n'est-ce pas ?
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

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 :
For 1→D To 50
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

Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

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
Lephenixnoir Hors ligne Administrateur Points: 24236 Défis: 170 Message

Citer : Posté le 22/08/2018 14:35 | #


Le fait est que Getkey est plus lent quand aucune touche n'est pressée.

For 1→I To 1000
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 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 63 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