Petit problème de logique
Posté le 15/07/2014 15:54
Bonjour à tous
J'ai honte, je suis au tout début du programme pour le Morpion et je galère depuis ce matin à tracer le quadrillage en mode texte.
Je voulais éviter de faire un truc comme ça :
Locate 10,3,"|"
Locate 10,5,"|"
Locate 10,7,"|"
Locate 12,3,"|"
Locate 12,5,"|"
Locate 12,7,"|"
Locate 9,4,"-"
Locate 9,6,"-"
Locate 10,4,"-"
Locate 10,6,"-"
Locate 11,6,"-"
Locate 11,4,"-"
Locate 12,4,"-"
Locate 12,6,"-"
Locate 13,4,"-"
Locate 13,6,"-"
Je me suis dis que ça devait être possible de faire ça avec des boucles. Donc j'ai fait une boucle sensée tracer les deux barres verticales. Mais je suis bloqué, le programme n'affiche pas plus que la première barre
Je dois avoir un truc qui tourne pas rond dans ma tête, un truc que j'ai pas compris...
Voilà la boucle :
10->A
3->B
Do
Locate A,B,"|"
B+2->B
If B=9 And A=10
Then A+2->A
B-6->B
ifEnd
LpWhile B/=9 And A/=12
Enfin la dernière que j'ai écrite parce que j'ai du la réécrire plusieurs fois de manière différente pour comprendre... Et encore je suis pas sûr qu'au final ça fera moins d'octets
Citer : Posté le 15/07/2014 15:59 | #
Il te manque un IfEnd :
3→B
Do
Locate A,B,"|"
B+2→B
If B=9 And A=10
Then A+2→A
B-6→B
[b]IfEnd[/b]
LpWhile B/=9 And A/=12
Edit : Je tiens quand même à préciser que je ne suis pas fou, cette erreur a été corrigée dans le post principal après mon message
Citer : Posté le 15/07/2014 16:11 | #
Non c'est une erreur que j'ai corrigé, ça marche toujours pas.
Citer : Posté le 15/07/2014 16:29 | #
J'ai trouvé : Mets un Or à la place du And dans ta dernière ligne
Citer : Posté le 15/07/2014 16:48 | #
Effectivement merci
Par contre je comprend pas pourquoi ça marche avec Or et pas avec And, je voulais demande d'arrêter seulement si B est égale 9 ET A égale 12 pas l'un ou l'autre
Citer : Posté le 15/07/2014 16:51 | #
Après le LpWhile n'est pas la condition qui marque l'arrêt mais la continuation de la boucle.
Citer : Posté le 15/07/2014 16:51 | #
Justement, c'est l'inverse : le LpWhile fait que la boucle tourne tant que B=9 ou A=12
Donc il faut que les deux conditions ne soient pas respectées avant qu'elle ne s'arrête
Il y a toujours cette gymnastique d'esprit lorsqu'on cherche l'inverse d'une condition