[Need Help] Programme Table Multiplication
Posté le 19/09/2013 21:55
Bonjour tous le monde
Comme ça fait depuis le CM2 qu'on me dit que ça craint que je connaisse pas mes tables de multiplication j'ai décidé de faire un programme sur ma calto pour m’entraîner à programmer et à apprendre les table
J'ai rapidement fais le gros du code qui faisait bien ce que je voulais mais je veux le perfectionner. Cependant j'ai quelques détailles que je comprends pas trop comme: Comment gérer l'affichage du
"-Disp-" qui se met un peu au milieu de mon texte quand je lance le programme.
Mais aussi j'ai fais une grande boucle qui fait le gros du programme comme vous m'aviez dis de faire dans mon autre topic
Le problème c'est quand je lui demande de s'arrêter (en appuyant sur F1) elle ne le fais tout simplement pas.
Voilà mon code dans l'état actuel des choses, je pourrais mettre le fichier en ligne si vous le désirez.
Locate 1,2,"CHOISIR TABLE"
?→T
Do
If T>0
Then T→A
Else Int (9Ran# +1 )→A
IfEnd
Int (9Ran# +1)→B
Locate 1,2,A
Locate 2,2,"x"
Locate 3,2,B
Locate 4,2,"="
AxB→C
?→D
If D≠C
Then Locate 1,4,"FAUX"
Locate 1,5,"REPONSE:"
Locate 9,5,C◢
IfEnd
F+1→F
ClrText
If D=C
Then Locate 1,4,"BIEN"◢
IfEnd
V+1→V
ClrText
LpWhile Getkey≠47
Locate 1,1,"RESULTATS JUSTES:"
Locate 18,1,V
Locate 1,2,"RESULTATS FAUX:"
Locate 17,2,F◢
Merci d'avance à ce qui vont me répondre.
Citer : Posté le 19/09/2013 22:39 | #
Pour enlever les disp, enlève les triangle et ajoute à la place
Do:Lpwhile Getkey !=31
(Le LpWhile Getkey = 31 est là pcq tu viens d'appuyer sur exe pour valider le nombre, et permet que, si tu restes appuyé trop longtemps dessus, le programme ''attende'' quand même)
Quand au fait que le programme ne quitte pas, c'est par ce que celui-ci ne regarde le getkey qu'à la toute fin :
le programme arrive à LpWhile Getkey != 47, et ne vérifie cette condition qu'a cette ligne là, il faut donc que tu appuis sur F1 PILE quand on arrive à cette ligne
Tu peux, pour quitter, mettre qqch comme
[b][blue]IfEnd[/blue][/b]
V+1[b]->[/b]V
[brown][strike]ClrText[/strike][/brown]
]
[b][blue]Do[/blue][/b]:[b][blue]LpWhile[/blue][/b] Getkey != [maroon]0[/maroon]
0[b]->[/b]F
[b][blue]Do[/blue][/b]
Getkey[b]->[/b]F
[b][blue]LpWhile[/blue][/b] F !=[maroon]0[/maroon]
[b][blue]LpWhile[/blue][/b] F != [maroon]47[/maroon] (<- Cette ligne remplace le LpWhile Getkey != 47)
[brown]ClrText[/brown]
Ce n'est qu'une suggestion, mais ça devrait marcher ; cependant, même si tu veux continuer le programme, il te faudra appuyer sur une touche
Avec la semelle de nos chaussures, on en fait autant
Citer : Posté le 20/09/2013 16:16 | #
Si jamais, la touche dont le code getkey est 47, c'est pas F1, c'est ESC
Citer : Posté le 20/09/2013 17:03 | #
En fait le fait de mettre la condition avec le Getkey à la toute fin n'est pas gênant en soi, parce que lorsque l'on appuie sur EXIT, on reste appuyé assez longtemps jusqu'à ce qu'on arrive à la fin de la boucle (c'est quand même assez rapide)
Mais ça ne marche que dans les petites boucles, ici effectivement, il y' a les ◢ ou les boucles "Do Lpwhile Getkey≠31)" qui gênent
Citer : Posté le 20/09/2013 19:20 | #
@Malafio: A quoi servent les crochés ? Je connais pas (encore ?).
@Cartix: Ouai je sais, au début j'avais mis Getkey = 79 après j'ai changé pour voir si ça venais pas de là mon problème...
@Malafio et @Position: Je vais m'inspiré de vos conseil pour faire les modifications nécéssaire Merci !
Citer : Posté le 20/09/2013 19:26 | #
Les crochets, c'était juste pour dire que ça faisait partie du code que tu avais déjà écris
Avec la semelle de nos chaussures, on en fait autant
Citer : Posté le 20/09/2013 23:48 | #
Ah ok.
Ajouté le 22/09/2013 à 23:37 :
J'ai modifié mon code avec ce que tu m'a dis Malafio.
Pour remplacer le -Disp- ça fonctionne bien. Mais à quoi sert précisément les deux points ":" ?
Sinon je comprends pas comment fonctionne le deuxième code et puis j'ai pas l'impression qu'il fonctionne...
Je vais réécrire mon code modifié ici quand j'aurai le temps.
Citer : Posté le 22/09/2013 23:48 | #
Les deux points ":" font exactement la même chose que le retour a la ligne, c'est un symbole de fin de ligne de code.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 23/09/2013 20:27 | #
Locate 1,2,"CHOISIR TABLE"
0→A~Z
?→T
Do
If T>0
Then T→A
Else Int (9Ran# +1 )→A
IfEnd
Int (9Ran# +1)→B
Locate 1,2,A
Locate 2,2,"x"
Locate 3,2,B
Locate 4,2,"="
AxB→C
?→D
If D≠C
Then Locate 1,4,"FAUX"
Locate 1,5,"REPONSE:"
Locate 9,5,C
Do:LpWhile Getkey = 31
Do:Lpwhile Getkey !=31
IfEnd
F+1→F
ClrText
If D=C
Then Locate 1,4,"BIEN"
Do:LpWhile Getkey = 31
Do:Lpwhile Getkey !=31
IfEnd
V+1→V
Do:LpWhile Getkey != 0
0->F
Do
Getkey->F
LpWhile F !=0
LpWhile F != 47
ClrText
Locate 1,1,"RESULTATS JUSTES:"
Locate 18,1,V
Locate 1,2,"RESULTATS FAUX:"
Locate 17,2,F
Do:LpWhile Getkey = 31
Do:Lpwhile Getkey !=31
Donc il faut que je tape ça ?
[
IfEnd
V+1->V
ClrText
]
Do:LpWhile Getkey != 0
0->F
Do
Getkey->F
LpWhile F !=0
LpWhile F != 47 (<- Cette ligne remplace le LpWhile Getkey != 47)
ClrText
Toutes cette partie je comprend pas. Et puis c'est fait exprès que tu prennes F comme variable ? (vu que je m'en sers déjà dans le code).
Et le
"Do:LpWhile Getkey = 31
Do:Lpwhile Getkey !=31"
c'est souvent utilisé comme code dans les programmes ?
Citer : Posté le 23/09/2013 20:35 | #
Comme variable, tu peut prendre de A ~ Z, F n'est qu'une variable prise au hasard, tu peut donc la changer
Pour le Do:LpWhile
Tu place Do avant ta question, tu pose ensuite ta question / phrase, et tu fait LpWhile Getkey≠31
Dans ce cas, lorsque l'utilisateur appuieras sur la touche 31 ( Exe ) ton programme reprendras et iras a la ligne suivante
Exemple :
"Bonjour"
LpWhile Getkey ≠ 31
Perso je mettrais plutôt :
"Bonjour"
LpWhile Getkey
ou même :
"Bonjour"
WhileEnd
Tout ces codes reviennent à la même chose
Citer : Posté le 23/09/2013 21:02 | #
ou plutôt :
While Getkey
WhileEnd
Sinon il affiche plein de bonjours tant que l'on appuie sur EXE
Citer : Posté le 23/09/2013 21:06 | #
Tous ça je le savais et je dois admettre que ça m'aide pas trop
Et j'insiste je comprends vraiment pas son code rien que le "Getkey->F" je vois pas ce que ça fait :-/
Ajouté le 23/09/2013 à 21:21 :
Et puis le système du genre
"Bonjour"
While Getkey
WhileEnd
Les 3/4 du temps on reste trop longtemps appuyé et on voit pas le message passer
Citer : Posté le 23/09/2013 21:32 | #
Le
La touche pressé ( donc l'ID de la touche ) est incrémenter dans la variable, sachant que la touche Exe possède comme ID 31, si j'appuie sur Exe, la variable F sera donc égal à 31.
Citer : Posté le 23/09/2013 21:48 | #
Do:LpWhile Getkey != 0 //Continuer cette boucle tant que 0 n'est pas appuyé ?
0->F //La variable F est remis 0
Do //initialisation d'une nouvelle boucle
Getkey->F //Le code de la touche appuyée va dans la variable F
LpWhile F !=0 //Arrêt de la boucle si F est 0
LpWhile F != 47 (<- Cette ligne remplace le LpWhile Getkey != 47) //Arrêt de la boucle si F est 47 (soit EXIT)
ClrText
Voilà ce que je comprends et je vois pas la logique
Citer : Posté le 23/09/2013 22:09 | #
Commence déjà par me dire ou tu compte mettre cela, et comment, ensuite :
Citer : Posté le 23/09/2013 22:09 | #
euh....
quand aucune touche n'est pressée, getkey renvoye zero...
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 23/09/2013 22:10 | #
En fait, Getkey vaut par défaut, et prend une autre valeur que si tu appuis sur une touche.
DU coup, LpWhile Getkey != 0 signifie "Tant que tu n'appuies pas sur aucune touche [= Tant que tu appuies sur une touche])
0->F Permet que, pour la suite
HA MAIS NAN
j'ai mis !=F ? c'était plutôt LpWhile F=0
C'est peut-être pour ça que c'était pas clair, effectivement :/
Sinon pour reprendre le choix de la variable F, j'en ai juste pris une au hasard comme l'as dit Thiladon, je n'ai pas fait gaffe qu'elle servait déjà
En tout cas désolé pour cette étourderie
Ajouté le 23/09/2013 à 22:12 :
C'est la pour empecher d'arriver dans la boucle suivante si tu n'as pas relevé ton doigt de la touche, sinon tu risque d'en ressortir direct sans avoir pu appuyer sur la touche pour quitter
Avec la semelle de nos chaussures, on en fait autant
Citer : Posté le 23/09/2013 22:12 | #
Du coup j'avais raison x')
Ce que je te propose, c'est de regarder tes messages personnel dans moins de 2 minute, et tu développe ton programme, mais je t'assisterais
Citer : Posté le 23/09/2013 22:35 | #
Mais c'est possible ça de mettre deux LpWhile ?
Do
Getkey→G
LpWhile F=0
LpWhile G!=47
J'invente rien hein, c'est tiré du code de Malafio
Citer : Posté le 23/09/2013 22:41 | #
Non justement, c'est ce que je disait, un des deux doit être enlevais, car ici nous n'avons qu'un seule DO, et de même, un seul GetKey qui renvoie a la variable G et pas F, donc le programme va considéré que LpWhile F=0 renvoie au Do, et comme on ne touche qu'à la variable G, le programme se répéteras a l'infini...
Citer : Posté le 23/09/2013 22:45 | #
Ah non mais le G c'est moi qui l'ai foutu à la place de F dans mon programme, (parce que F je l'ai déjà utilisé)
du coup c'était plutôt
Do
Getkey→G
LpWhile G=0
LpWhile G!=47
Sinon si c'est bien à moi que tu voulais envoyer un MP, je l'ai toujours pas reçu.