Comment utiliser Visual Basic pour créer un test à choix multiples

Ouvrez un nouveau projet Visual Basic. Ajoutez deux étiquettes, trois boutons radio et deux contrôles de bouton au formulaire. Faites glisser les deux étiquettes vers le haut avec Label1 au-dessus de Label2. Faites glisser RadioButton1, RadioButton2 et RadioButton3 pour les aligner verticalement sous les étiquettes. Faites glisser les deux boutons sous les boutons radio avec Button1 à gauche et Button2 à droite.

La première ligne crée un tableau à deux dimensions. La première dimension est pour chaque question et la deuxième dimension est pour la question elle-même, trois choix de réponses et la bonne réponse. La deuxième ligne crée un tableau pour stocker les réponses de l'utilisateur. La troisième ligne crée une variable de compteur qui garde une trace de la question sur laquelle se trouve l'utilisateur.

Private Sub GetQuestions() questions = New String(,) {{"Combien de couleurs y a-t-il dans un arc-en-ciel ?", "5", "6", "7", "7"}, {"Qui a joué dans Pirates des Caraïbes ?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"},

{"Quelle est la capitale de la Floride ?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub

Ce sous-programme initialise simplement les trois questions et réponses dans le tableau des questions. Vous pouvez ajouter des questions supplémentaires ou les obtenir par d'autres moyens, par exemple via un fichier texte, mais si vous faire, n'oubliez pas de modifier la taille des tableaux de questions et réponses pour accueillir le nombre de des questions.

Private Sub MarkTest() Dim grade As Integer = 0 For i = 0 To 2 If réponses (i) = questions (i, 4) Then note += 1 End If Next Label1.Text = "Test terminé !" Label2.Text = "Vous avez noté " & notez & " sur " & réponses. Longueur & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub

La première ligne déclare un sous-programme qui marque le test. Il crée une variable locale pour compter le score, puis parcourt les réponses dans le tableau des questions et les réponses soumises par l'utilisateur. Pour chaque réponse qui correspond, la note augmente d'une unité. Il affiche ensuite le score dans les étiquettes et désactive le reste des contrôles.

Moi. Text = "Mon quiz à choix multiples !" GetQuestions() quesNum = 1 Label1.Text = "Question " & quesNum & " de " & réponses. Longueur Label2.Text = questions (0, 0) Button1.Text = "Précédent" Button2.Text = "Suivant" RadioButton1.Text = questions (0, 1) RadioButton2.Text = questions (0, 2) RadioButton3.Text = questions (0, 3)

La première ligne définit le titre dans la barre de titre. La ligne suivante appelle le sous-programme GetQuestions(). La troisième ligne initialise la variable du compteur de questions. La quatrième ligne affiche le numéro de la question sur laquelle se trouve l'utilisateur. La cinquième ligne affiche la question 1 dans l'étiquette. Les sixième et septième lignes modifient le texte des deux boutons. Les trois dernières lignes insèrent les trois réponses à choix multiples sous forme de texte pour les trois boutons radio.

Si quesNum > 1 Then quesNum -= 1 Label1.Text = "QuesNum " & quesNum & " of 3" Label2.Text = questions (quesNum - 1, 0) RadioButton1.Text = questions (quesNum - 1, 1) RadioButton2.Text = questions (quesNum - 1, 2) RadioButton3.Text = questions (quesNum - 1, 3) If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If

C'est le code du bouton "Précédent". Il vérifie d'abord si l'utilisateur a appuyé sur le bouton alors qu'il était déjà sur la première question. Sinon, il décrémente le compteur de questions d'une unité et met à jour le texte des étiquettes et des boutons radio pour afficher la question précédente. Si l'utilisateur était sur la dernière question, le texte sur Button2 passe de « Envoyer » à « Suivant ».

Si RadioButton1.Checked = True Then réponses (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Then réponses (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Then réponses (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() If quesNum < 3 Then quesNum += 1 Label1.Text = "Question " & quesNum & " of " & réponses. Longueur Label2.Text = questions (quesNum - 1, 0) RadioButton1.Text = questions (quesNum - 1, 1) RadioButton2.Text = questions (quesNum - 1, 2) RadioButton3.Text = questions (quesNum - 1, 3) Si quesNum = 3 Then Button2.Text = "Submit" End If Else MarkTest() Fin si

C'est le code du bouton "Suivant". Les sept premières lignes vérifient quel bouton radio l'utilisateur a sélectionné, puis enregistrent cette réponse dans le tableau des réponses. La ligne suivante concentre la sélection du bouton radio sur RadioButton1. La ligne suivante vérifie que l'utilisateur n'est pas sur la dernière question. Si cela est vrai, il augmente le compteur de questions d'une unité et met à jour les étiquettes et les boutons radio pour afficher la question suivante. Il vérifie ensuite si l'utilisateur est maintenant sur la dernière question. Si tel est le cas, le texte du bouton Suivant passe de "Suivant" à "Soumettre". Si l'utilisateur était déjà sur le question finale et cliqué sur « Envoyer », le programme appelle la fonction « MarkTest » pour obtenir le score de l'utilisateur.