Version 1: Il s'agit de choisir un nombre au hasard :
Option Explicit
' Affichage d'un message de bienvenue et d'un message d'au revoir
Sub CalculMentalV1()
MsgBox "Bienvenue dans le programme de calcul mental"
MsgBox "Merci d'avoir joué"
End Sub
Version 2 : Il s'agit de choisir un nombre au hasard :
Sub CalculMentalV2()
Dim Nombre1
Randomize ' Cette instruction permet simplement d'assurer qu'à chaque
lancement du programme,
' Le nombre aléatoire sera toujours différent
MsgBox "Bienvenue dans le programme de calcul mental"
Nombre1 = Rnd
MsgBox Nombre1
MsgBox "Merci d'avoir joué"
End Sub
En fait, il faut le transformer d'un nombre au hasard entre 0 et 1 en nombre au hasard entre 1 et 100 (100 par exemple)
Sub CalculMentalV3()
Dim N1
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
N1 = Rnd ' 0.9963265412 - Nombre au hasard entre 0 et 1
N1 = N1 * 100 ' 99.63265412 - Le même nombre * 100
N1 = N1 + 1 ' 100.63265412 - Le même nombre + 1 (sinon ce serait un nombre
au hasard entre 0 et 99)
N1 = Int(Hasard) ' 100 ' On supprime toutes les décimales pour avoir
un nombre entier
MsgBox N1
MsgBox "Merci d'avoir joué"
End Sub
Il est possible de compresser la génération du nombre aléatoire en une seule ligne de code qui est plus difficile à comprendre mais qui permet un programme plus compact
Sub CalculMentalV4()
Dim N1
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
N1 = Int((100 * Rnd) + 1)
MsgBox N1
MsgBox "Merci d'avoir joué"
End Sub
En fait, ce n'est pas un seul nombre que nous avons besoin, mais 2
Sub CalculMentalV5()
Dim N1, N2
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
MsgBox "N1 égale " & N1
MsgBox "N2 égale " & N2
MsgBox "Merci d'avoir joué"
End Sub
Il s'agit maintenant de poser une question à l'utilisateur :
Sub CalculMentalV6()
Dim N1, N2
Randomize
MsgBox "Bienvenue dans
le programme de calcul mental"
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
' Utilisation astucieuse des & :
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
MsgBox "Merci d'avoir joué"
End Sub
Et maintenant, on vérifie si l'utilisateur a entré la bonne réponse : Cette version dit que l'utilisateur a entré une fausse réponse même si elle est correcte Je pense que c'est parce que N1 et N2 n'ont pas été déclarés en INTEGER
Sub CalculMentalV7()
Dim N1, N2
Dim Reponse ' Stockage de la réponse de l'utilisateur
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
MsgBox "Merci d'avoir joué"
End Sub
Cette version fonctionne
Sub CalculMentalV8()
' Déclaration des variables correctement
Dim N1 As Integer
Dim N2 As Integer
Dim Reponse ' Stockage de la réponse de l'utilisateur
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
MsgBox "Merci d'avoir joué"
End Sub
Maintenant, ce n'est pas un calcul qu'il faut proposer à l'utilisateur, mais 4 : Si on n'utilise pas de boucle For To Next, on obtient le programme suivant qui ressemble à un mammouth : (Et encore... on n'a que 4 calculs...)
Sub CalculMentalV9()
Dim N1 As Integer
Dim N2 As Integer
Dim Reponse ' Stockage de la réponse de l'utilisateur
Randomize
MsgBox "Bienvenue dans le programme de calcul mental"
' Premier calcul :
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
' Deuxième calcul :
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
' Troisième calcul :
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
' Quatrième et dernier calcul :
N1 = Int((100 * Rnd) + 1)
N2 = Int((100 * Rnd) + 1)
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Else
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
MsgBox "Merci d'avoir joué"
End Sub
Le programme est terminé. Mettons maintenant les commentaires correctement, et aérons le programme pour Pouvoir le relire facilement, et apporter aisément des modifications ultérieures.
Sub CalculMentalV12()
' *******************************
' * Déclaration des variables : *
' *******************************
Dim N1 As Integer ' Premier des deux nombre au hasard
Dim N2 As Integer ' Second des deux nombres au hasard
Dim Reponse As Integer ' Réponse proposée à chaque fois par le joueur
Dim Compteur As Integer ' Compteur de questions
Dim Score As Integer ' Contiendra le score du joueur (nombre de réponses
correctes)
' ***************************
' *Démarrage du programme : *
' ***************************
Score = 0 ' D'entrée son score est de zéro.
Randomize ' Permet d'assurer que les nombres seront toujours différents
à chaque tirage au sort
MsgBox "Bienvenue dans le programme de calcul mental"
' ***********************
' * Boucle principale : *
' ***********************
For Compteur = 1 To 4 ' Il est facile de remplacer 4 par un autre nombre...
N1 = Int((100 * Rnd) + 1) ' Génération d'un nombre au hasard N1
N2 = Int((100 * Rnd) + 1) ' Génération d'un nombre au hasard N2
Reponse = InputBox("Combien font " & N1 & " + " & N2 &
" ?")
' Si le joueur répond correctement :
If Reponse = N1 + N2 Then
MsgBox "Bonne réponse !"
Score = Score + 1 ' On augmente son score s'il répond bien
Else ' Sinon...
' Sinon, son score ne bouge pas...
MsgBox "Désolé... la bonne réponse était " & N1 + N2
End If
Next ' Fin du For
' **********************
' * Fin du programme : *
' **********************
MsgBox "Merci d'avoir joué. Votre score est de " & Score & "
sur 4."
End Sub
Tout programme est améliorable à l'infini. Essayez donc ces quelques améliorations :
TRES FACILE
- A la place d'addictions, faire des soustractions, ou des multiplications
FACILE
Demander au joueur son nom, pour personnaliser le message de conclusion :
"Roger, votre score est de 3 sur 4"
FACILE
- Demander au joueur à la base combien d'additions il veut (3, 4, 50 ?)
FACILE
- Demander la difficulté voulue au joueur (Des additions jusqu'à 100 comme ici,
ou 500, ou 10000 ?)
ASSEZ FACILE
- Faire des commentaires suivant le score :
"Score de 1 sur 4, Roger, vous êtes NUL !"
Ou
"Score de 4 sur 4, Marcel, vous êtes un génie !"
ASSEZ FACILE
- Afficher les résultats successifs des additions dans Word avec Selection.TypeText
et TypeParagraph
DIFFICILE
- Demander à l'utilisateur s'il veut faire des additions, des soustractions
ou des multiplications avant de commencer le jeu