StrLen(Str 1)>7⇒StrLeft(Str 1,7→Str 1Ù
ClrText:3→C:0→DÙ
For 1→A To 21Ù
Locate [green][b][u]A[/u][/b][/green],1,"=":Next:DoÙ
Locate 1,1,"======="Ù
Locate 15,1,"======="Ù
Locate 8,1,Str 1Ù
Locate 3,3,"Nouvelle partie"Ù
Locate 3,4,"Continuer"Ù
Locate 3,5,"Crédits"Ù
Locate 15,7,"Quitter"Ù
Do:GetkeyÙ
LpWhile Ans≠0Ù
Do:Getkey→AÙ
LpWhile A≠27 And A≠37 And A≠47 And A≠28 And A≠31 And A≠38Ù
If A=31Ù
Then C=3⇒1→DÙ
C=2⇒2→DÙ
If C=1:Then ClrTextÙ
Locate 5,3,"Programmé par"Ù
Locate 8,5,"Starven"Ù
Do:GetkeyÙ
LpWhile Ans≠0Ù
Do:GetkeyÙ
LpWhile Ans≠31Ù
IfEnd:IfEndÙ
For 2→B To 7Ù
Locate 1,B," ":NextÙ
Locate 13,7," "Ù
If A=28:Then If C<1Ù
Then 1→C:Else Isz CÙ
IfEnd:IfEndÙ
If A=37:Then If C<1Ù
Then 3→C:Else C-1→CÙ
IfEnd:IfEndÙ
If (A=47 Or A=31) And C<1Ù
Then ClrTextÙ
Locate 6,3,"Voulez-vous"Ù
Locate 2,4,"vraiment quitter ??"Ù
Locate 1,6,"<- Oui"Ù
Locate 17,6,"Non →"Ù
Do:GetkeyÙ
LpWhile Ans≠38 And Ans≠27:If Ans=38Ù
Then ClrText:StopÙ
IfEnd[green][b][u]:IfEnd[/u][/b][/green]Ù
(A=27 Or A=47) And C<1⇒C*4→CÙ
A=38 And C<1⇒4C→CÙ
C>3⇒0.25→CÙ
C=3⇒Locate 1,3," :here: "Ù
C=2⇒Locate 1,4," :here: "Ù
C=1⇒Locate 1,5," :here: "Ù
C<1⇒Locate 13,7," :here: "Ù
LpWhile D≠1 And D≠2
Citer : Posté le 21/12/2016 18:40 | #
Then ClrText
Locate 6,3,"Voulez-vous"
Locate 2,4,"vraiment quitter ??"
...
Ce If n'est fermé nulle part.
Citer : Posté le 21/12/2016 18:43 | #
C'est bien ça, !
Comme quoi, les erreurs les plus bêtes sont les plus discrètes...
Je ne sais pas s'il y a une case "résolut" à cocher quelque part, mais le cœur y est !
Donc, Dieu créa la connerie. CQFD
Citer : Posté le 21/12/2016 18:44 | #
Il faut bien avouer que les erreurs annoncées par l'interpréteur Basic ne sont ni explicites ni pertinentes la plupart du temps... ça ne nous facilite pas vraiment la tâche.
Citer : Posté le 21/12/2016 18:46 | #
D'ailleurs j'ai oublié de dire qu'après avoir appuyé sur [EXIT] le curseur s'était placé sur la dernière ligne... Mais en l’occurrence, ça n'aurait servi à rien.
Merci encore !
PS : Je suis fan de ton avatar !
Donc, Dieu créa la connerie. CQFD
Citer : Posté le 21/12/2016 18:48 | #
Ça, c'est normal : PRGM s'arrête là où il ne comprend plus, et il a cru que tout le reste était dans le If.
Citer : Posté le 21/12/2016 18:49 | #
Oui, c'est bien l'une des quelques parcelles de programmation que j'ai à peu près compris !
Donc, Dieu créa la connerie. CQFD
Citer : Posté le 21/12/2016 18:52 | #
À vrai dire, le comportement de l'interpréteur de la calto n'est ni standard ni vraiment un modèle
J'en profite pour signaler d'autres choses dans ton code :
Locate Int (A+0.5),1,"=":Next
Pourquoi arrondir alors que A est entier ? Au fond ça ne change rien.
Then 1→C:Else Isz C
IfEnd:IfEnd
If A=37:Then If C<1
Then 3→C:Else C-1→C
IfEnd:IfEnd
Il existe aussi une commande Dsz qui fait l'exact opposé de Isz. Attention, ces deux commandes sont connues pour sauter l'instruction suivante si le résultat de l'incrémentation/décrémentation est 0. C'est fait pour être placé devant un WhileEnd, par exemple.
(Thx ! )
Citer : Posté le 21/12/2016 18:52 | #
À l'avenir, utilise le debuggeur de programmes Basic (merci Lephenixnoir).
Citer : Posté le 21/12/2016 19:29 | #
Ah oui merci pour A (je pensait que For générait tous les réels entre A et B... ).
Je n'ai pas utilisé Dsz justement parce qu'il peut arriver que C soit égal à 1.
Je ne connaissais pas le debugger, désolé...
Donc, Dieu créa la connerie. CQFD
Citer : Posté le 21/12/2016 19:38 | #
Générer tous les réels entre A et B ? Oh, elle est pas mal celle-là
(Il y en a une belle infinité en fait, une infinité dite indénombrable ; en gros, on ne peut pas numéroter les réels, donc impossible de les générer avec une boucle For !)
Citer : Posté le 21/12/2016 19:45 | #
Ben ouai je me disais bien aussi...
Donc, Dieu créa la connerie. CQFD
Citer : Posté le 22/12/2016 23:01 | #
J'ai modifié le titre, j'ai failli perdre la vue à plusieurs reprises.