Page 1 sur 1
[Ex] Révision de maths (tables)
Posté : ven. 10 déc. 2010 17:28
par Fish
Voici le code d'un petit programme que fait réciter les tables aléatoirement avec des Inputbox, il y a 20 question et une note sur 20...
Dites moi ce que vous en pensez!
Code : Tout sélectionner
Global $compteur,$enter,$mul1,$mul2,$point,$reponse
$compteur = 0
$point = 0
call ("start")
Func start ()
$mul1 = Random (4,9,1) ; Choisit un nombre aléatoire.
$mul2 = Random (4,9,1) ; Un deuxième.
$enter = InputBox ("Revision 1.0 by Fish-Panai","combien font "&$mul1&" X "&$mul2&" ??") ; Montre l'Inputbox avec les nombres aléatoires saisis plus hauts.
if @error = 1 then Exit ; Si on appui sur "Cancel", sa quitte.
$compteur = $compteur + 1 ; On augmente le compteur de questions.
if $compteur = 20 then Call ("fin") ; Si c'est la 20ème question, on passe à la partie note.
$reponse = $mul1 * $mul2 ; On calcule la bonne réponse.
If $enter = $reponse Then call ("good") ; Si la réponse est correcte on lance la fonction good.
MsgBox (0,"Non","mauvaise reponse, la reponsse était "&$reponse&"!!") ; Si la condition si-dessus n'est pas remplie
alors on dit qu'on c'est trompé et on affiche la solution.
Call ("start") ; Question suivante!
EndFunc ; Pas la peine de commenter...
func good () ; Si on a juste!
MsgBox (0,"Bien joué!!" ,"Bonne reponse!!") ;...
$point = $point + 1 ; On incrémente le compteur de bonne réponse (à la fin cela fera la note).
Call ("start") ; Question suivante.
EndFunc ;...
Func fin ()
MsgBox (0,"Fini!!","Le test est fini, votre note est de: "&$point&"/20.") ; On affiche la note.
Exit ; On quitte.
EndFunc
Re: [Ex]Révision de maths (tables)
Posté : ven. 10 déc. 2010 19:51
par timmalos
Sans critiquer le programme, en soit y'a une tres mauvaise utilisation de la memoire. Vous programmez comme je le faisais en TI-BASIC, avec des GOTO et des Labels, mais cette programmation est terminée depuis bien longtemps. Prenez un crayon et un papier, et parcourez votre script. Regardez ce qu'il fait , la fonction Start est appelée récursivement. Au lieu de mettre sur 20 vous mettez sur 1000, un petit bot pour repondre plus vite, et le pc plante
Bref, essayez de refaire ce script sans JAMAIS utiliser call()
Re: [Ex] Révision de maths (tables)
Posté : sam. 11 déc. 2010 00:28
par Fish
Bonjours timmalos.
Merci de cette astuce fort instructive, je m'attelle à cette tache

...
Part contre comment je vais faire? En utilisant que des If c'est sa?
Edit : C'est bon j'ai trouvé comment faire et effectivement timmalos, cela rend mon script plus court et plus concis, plus clair et moins gourmand en mémoire. Je vous remercie!
Sinon voila le nouveau :
Code : Tout sélectionner
;=====================|Variables|=======================
Global $compteur,$enter,$mul1,$mul2,$point,$reponse
$compteur = 0
$point = 0
;==================|Révision de maths|==================
while 1
$mul1 = Random (4,9,1) ; Choisit un chiffre au hasard.
$mul2 = Random (4,9,1) ; Choisit un autre chiffre au hasard.
$reponse = $mul1 * $mul2 ; Calcule les deux chiffres contenus dans les variables.
$enter = InputBox ("Révision 1.0 By Fish-Panai","combien font "&$mul1&" X "&$mul2&" ??") ; Pose la question.
if @error = 1 then Exit ; Si l'utilisateur appui sur "Cancel", le programme se ferme.
$compteur = $compteur + 1 ; On incrémente le compteur pour bien avoir à la fin 20 questions.
if $compteur = 20 then ; On vérifie si le compteur est à 20 pour finir le test.
MsgBox (0,"Fini!!","Le test est fini, votre note est de: "&$point&"/20.") ; Si c'est le cas on affiche la note.
Exit ; On quitte le programme (toujours si c'est fini).
ElseIf $enter = $reponse Then ; Si la réponse correcte est entrée alors...
MsgBox (0,"Bien joué!!" ,"Bonne reponse!!") ; On affiche la Msgbox bien joué!
$point = $point + 1 ; On incrémente la variable des points.
Else ; Sinon.
MsgBox (0,"Non","mauvaise reponse, la reponsse était "&$reponse&"!!") ; C'est que la réponse est fausse, on affiche la Msgbox contenant la réponse.
EndIf ; Fin de la condition.
WEnd ; Fin de la boucle.
Re: [Ex] Révision de maths (tables)
Posté : dim. 12 déc. 2010 14:34
par Colin117
Salut, j'ai trouver ton programme bien amusant alors j'ai nettoyer ton code (enfin a ma façon ^^' ), et je l'ai améliorer avec un For au lieu d'un While, avec plusieurs fin possible :
► Afficher le texte
Code : Tout sélectionner
;=====================|Variables|=======================
Global $compteur,$enter,$mul1,$mul2,$point,$reponse
$point = 0
;==================|Révision de maths|==================
For $i = 1 to 20 step +1 ;On par de $i = 0 jusqu'a ce que $i = 20 en faisant + 1 a chaque boucle.
$mul1 = Random (4,9,1) ; Choisit un chiffre au hasard.
$mul2 = Random (4,9,1) ; Choisit un autre chiffre au hasard.
$reponse = $mul1 * $mul2 ; Calcule les deux chiffres contenus dans les variables.
$enter = InputBox ("Révision 1.0 By Fish-Panai" , "Question N° " & $i & " : combien font " & $mul1 & " X " & $mul2 & " ??") ; On pose la question.
if @error = 1 then
Exit ; Si l'utilisateur appui sur "Cancel", le programme se ferme.
EndIf
;==================|vérification|==================
If $enter = $reponse Then ; Si la réponse correcte est entrée alors...
MsgBox (0,"Bien joué!!" ,"Bonne reponse!!") ; On affiche la Msgbox bien joué!
$point = $point + 1 ; On incrémente la variable des points.
Else ; Sinon.
MsgBox (0,"Non","mauvaise reponse, la reponsse était "&$reponse&"!!") ; C'est que la réponse est fausse, on affiche la Msgbox contenant la réponse.
EndIf ; Fin de la condition.
Next ; On retourne au For
;==================|Phrases finales|==================
If $point <= 0 And $point < 5 Then
MsgBox (0,"Fini!!","Le test est fini, votre note est de: " & $point & "/20. Retournez au CE1 !!") ; Il est vraiment null --'
ElseIf $point <= 5 And $point < 10 Then
MsgBox (0,"Fini!!","Le test est fini, votre note est de: " & $point & "/20. Franchement vous pouvez faire mieu !") ; La lui il a encore des progret a faire
ElseIf $point <= 10 And $point < 15 Then
MsgBox (0,"Fini!!","Le test est fini, votre note est de: " & $point & "/20. Tu t'en sort bien") ; ça va c'est relativement bien...
ElseIf $point <= 15 And $point < 20 Then
MsgBox (0,"Fini!!","Le test est fini, votre note est de: " & $point & "/20. Arf t'y est presque ! bien joué.") ; Alors la lui il est fort
ElseIf $point = 20 Then
MsgBox (0,"Fini!!","Le test est fini, votre note est de: " & $point & "/20. T'es un champion !") ; C'est un champion !
Else
MsgBox (0,"Fini!!","Désoler, y'a un bug dans la matrice !") ; Dans les autres cas (enfin si ça bug)
EndIf
Exit
Re: [Ex] Révision de maths (tables)
Posté : lun. 13 déc. 2010 18:10
par Fish
Merci même si il y a quelques fautes d'orthographe

.
Re: [Ex] Révision de maths (tables)
Posté : lun. 13 déc. 2010 19:50
par Colin117
En effet, l'orthographe n'est pas mon fort ^^'
Re: [Ex] Révision de maths (tables)
Posté : lun. 13 déc. 2010 22:17
par bloodwolff
Fish a écrit :Merci même si il y a quelques fautes d'orthographe

.
En regardant seulement les 2 premières lignes de ton code
Code : Tout sélectionner
$mul1 = Random (4,9,1) ; [strike]Choisit[/strike] Choisis un chiffre au hasard.
$mul2 = Random (4,9,1) ; [strike]Choisit[/strike] Choisis un autre chiffre au hasard.
Avec sa je sens que je vais me faire corriger mes scripts !

Re: [Ex] Révision de maths (tables)
Posté : mar. 14 déc. 2010 11:24
par pierrotm777
Alors la, j'adore.
Une bonne idée de jeu dans la voiture pour réviser avant l'entrevue avec le patron pour la prochaine augmentation !

Re: [Ex] Révision de maths (tables)
Posté : jeu. 16 déc. 2010 15:39
par zeshrek
bloodwolff a écrit :Fish a écrit :Merci même si il y a quelques fautes d'orthographe

.
En regardant seulement les 2 premières lignes de ton code
Code : Tout sélectionner
$mul1 = Random (4,9,1) ; [strike]Choisit[/strike] Choisis un chiffre au hasard.
$mul2 = Random (4,9,1) ; [strike]Choisit[/strike] Choisis un autre chiffre au hasard.
Avec
sa je sens que je vais me faire corriger mes scripts !

Avec 'ça' !
Allez hop, ça, c'est fait !
-------------->[] Trop tard, je suis déjà sorti
Re: [Ex] Révision de maths (tables)
Posté : mer. 22 déc. 2010 10:38
par Fish
@ Zeshrek :

Et autrement tu pense quoi du piti script??