Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Erreur lors d'une boucle for ?
Bulito Hors ligne Membre Points: 117 Défis: 3 Message

Erreur lors d'une boucle for ?

Posté le 22/10/2019 20:18

Bonjour, j'essaie de créer un jeu snake, mais pour l'instant, je veux juste créer une barre qu avance (sans aucune intervention de l'utilisateur) et qui s'efface au fur et à mesure pour qu'elle soir d'une taille de 20px.
Voici le code en texte :
'ProgramMode:RUN
ViewWindow 1,127,0,1,63,0
20->L
1->A
Do
For A->X To 20 Step 1
Text 50,60,A
PxlOn 20,X◢
Next
X-19->A◢
Text 50,1,X◢
Text 50,30,A◢
PxlOff 20,A
LpWhile 1

Il y a des Text un peu partout, c'est pour le débugage. Visiblement, la variable descend et monte de 10 en 10, sans raison...

Sinon, pour ceux qui veulent tester, j'ai joint le fichier.

PS: J'ai une casio graph 35+EII

Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 18201 Défis: 142 Message

Citer : Posté le 22/10/2019 20:33 | #


Certaines fonctions de dessin, notamment PxlOn, modifient les variables X et Y.

Solution : utilise une autre variable pour ta boucle
Bulito Hors ligne Membre Points: 117 Défis: 3 Message

Citer : Posté le 22/10/2019 21:16 | #


Ah, c'est donc ceci les changements non voulus de variables...
Merci !


Edit : Je viens d'essayer mais ce n'est pas ça, j'ai utilisé les variables B, ou S à la place de la variable X, mais ça me fait le même bug, avec un changement de variable inattendu...

Ajouté le 22/10/2019 à 21:36 :
En fait, je me demande si ça se voit un edit...
J'ai essayé avec 4 variables différentes, mais ça ne change rien, d'autres idées ?
N'hésitez pas à me MP pour des échanges d'indices pour le Puzzle de l'Avent 2019 !
Lephenixnoir Hors ligne Administrateur Points: 18201 Défis: 142 Message

Citer : Posté le 22/10/2019 21:45 | #


Je pense que la boucle marche, mais le programme a d'autres problèmes. D'abord dans "For A→X To 20 Step 1" ta position est limitée à 20. Si tu veux que le serpent avance ce serait plutôt quelque chose comme "To A+19".

Ensuite, au moment où ta boucle redémarre, tu exécutes PxlOff 20,A et dès le début du tour suivant tu exécutes A→X (au début de la boucle) puis PxlOn 20,X. Tu ré-affiches donc le pixel que tu as effacé.

Enfin, puisque la boucle For s'arrête à 20, à la fin du premier tour de la boucle While, A est ramené à 1 par l'instruction "X-19→A", mais c'était sa valeur initiale. Ta boucle fait bien 20 tours mais comme les bornes sont incluses il faut soustraire 18 sinon A n'augmente pas.
Bulito Hors ligne Membre Points: 117 Défis: 3 Message

Citer : Posté le 23/10/2019 08:06 | #


Merci, le trait avance, mais malheureusement très lentement, je pense que c'est à cause de la vitesse de la calculatrice et que je ne peux pas résoudre le problème, si ?
N'hésitez pas à me MP pour des échanges d'indices pour le Puzzle de l'Avent 2019 !
Lephenixnoir Hors ligne Administrateur Points: 18201 Défis: 142 Message

Citer : Posté le 23/10/2019 08:51 | #


Le programme tel qu'il est écrit ne peut pas aller plus vite, mais tu peux écrire un programme plus court qui fait la même chose.

Par exemple, actuellement tu redessines tout le serpent à chaque fois, alors qu'il suffit de dessiner le nouveau pixel noir et d'effacer le plus ancien.
Bulito Hors ligne Membre Points: 117 Défis: 3 Message

Citer : Posté le 24/10/2019 09:59 | #


Oui, en effet, nouveau script, donc qui va beaucoup plus vite, merci !
N'hésitez pas à me MP pour des échanges d'indices pour le Puzzle de l'Avent 2019 !


Legagoux Invité

Citer : Posté le 24/10/2019 10:45 | #


Je ne sais pas si c'est ca mais je crois que lorsque tu effectue la boucle for ta variable X n'est modifie que dans cette boucle et que dans ton calcul x est donc egale a 0 et par consequent A est egale a -19. Cela n est qu une hypothese mais je pense que tu devrais verifier
Bulito Hors ligne Membre Points: 117 Défis: 3 Message

Citer : Posté le 24/10/2019 10:47 | #


Avec un nouveau script, c'est modifié, mais non, la variable passait par des valeurs comme 31,41,51... (de 10 en 10, je ne lui ai jamais demandé du 10 en 10 !!)
N'hésitez pas à me MP pour des échanges d'indices pour le Puzzle de l'Avent 2019 !

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
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
: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 v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 35 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