Menu

Créer des questions choix multiples sous VB 2010.

Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
-
Bonjour,


Je suis actuellement entrain créer un mini QCM.

Je dispose d'une image ou vidéo, et d'un label dans ma question avec plusieurs choix possible comme réponse à cliquer sur les 4 gros boutons carrés.

Au final les bonnes réponses seront affichées en vert ou sinon en cas de mauvaise réponse le bouton carré s'affichera en rouge.

voir image exemple:





Je souhaiterai également faire une session de 10 questions totalement aléatoire puis une autre session de 10 questions ainsi de suite (Random).

C'est possible de faire cela?

Je ne trouve pas le bon code en vb.net adéquat à mon projet.

Merci de votre compréhension.


Configuration: Windows / Chrome 73.0.3683.103


Afficher la suite 

Votre réponse

5 réponses

Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519
0
Merci
Bonjour
Tu codes en Winform ou WPF?

Une remarque sur l’ergonomie, d’instinct j’aurais eu envie de cliquer sur le « A » à côté de « Oui » et pas sur le bouton en bas.
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
bonjour ,

oui je code en windows form
je voulais reproduire la méthode comme le questionnaire du code (de la route)

voir exemple:



mais par contre au niveau des question je le personnaliserais
Commenter la réponse de Whismeril
Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519
0
Merci
Ok et c’est toujours un jeux de 2 questions?
Ou il peut y envoir 1 seule avec 4 propositions ?
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
c'est jeu de 2 question avec 4 proposition possible et au moins 2 bonnes réponses possibles.

mais il peut aussi y avoir 1 question avec 2 propositions possibles et 1 bonne réponse :)



Exemple 1





Exemple 2:



Merci de votre compréhension. :)
Commenter la réponse de Whismeril
Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519
0
Merci
Ok alors je te conseille de faire un controle perso pour une question.
Tu lui fournis la question, les 2 réponses possibles et la solution.
Ensuite tu affiches un ou deux contrôles.

Quand tu cliques sur le bouton, il interroge les contrôles pour savoir si il est un bonne réponse.
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
oui par la fonction

case()
mais c'est après qui me bloque c'est d'intégrée la question et les différentes propositions qui donne 1 ou deux réponses possible.

j'avais fait ce code la pour une précédente application avant.


Public Class Form1

Private numéroQuestion As Integer
Private random As Random = New Random()
Private nbTentatives As Integer
Private questions As String() =
{
"Quelle est la capitale de la France ?",
"Quelle est la couleur du cheval blanc d'Henri IV?",
"Qui a peint la Joconde?",
"Quelle est l'espérance de vie du lapin domestique ?",
"À partir de combien de km/h peut-on entendre un ""Bang""?",
"En quelle année la marque ""Škoda"" a-t-elle été créée?",
"Sur les 2 mains, combien a-t-on de phalanges ?",
"Les célèbres Beatles étaient...?",
"Qui a écrit ""L'Avare"" ?",
"""Alea jacta est"" signifie ?",
"Combien de temps Nicolas Sarkozy est-il resté président de la République française ?",
"Qu'est ce qu'un gecko?",
"Qui a tiré la flèche fatale dans le talon d'Achille?",
"Quel est le dieu suprême du panthéon égyptien?",
"Quels sont les deux départements qui forment la Corse?",
"Qu'est ce qu`un chèche?",
"Dans quel lac le Nil prend-il sa source?",
"Combien une araignée a-t-elle de pattes",
"Combien de lettres possède l'alphabet grec?",
"Dans quelle ville se trouve le Golden Gate Bridge?",
"Christophe Colomb a découvert l'Amérique en ...",
"Où se trouve le Massif Armoricain ?",
"Anubis, gardien des nécropoles est un dieu ?",
"L'intensité électrique s'exprime en ?",
"Le TCHAD a une frontière commune avec quelle pays?",
"Quels sont les pays frontaliers à la France",
"Dans la superstition maritime, quel nom d'animal est tabou à bord d'un bateau?"
}

Private réponses As String() =
{
"Paris",
"Blanc",
"Léonard De Vinci",
"7 ans",
"1000",
"1919",
"28",
"Anglais",
"Molière",
"Le sort en est jeté",
"5 ans",
"Un lézard",
"Paris",
"Amon",
"Haute Corse et Corse du Sud",
"Une écharpe",
"Victoria",
"8",
"24",
"San Francisco",
"1492",
"En Bretagne",
"Egyptien",
"Ampères",
"Le Soudan",
"9",
"Le Lapin"
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.TabIndex = 0
InitialiserNouvelleQuestion()
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Verification()

End Sub
Sub Verification()

If TextBox1.Text = Me.réponses(Me.numéroQuestion) Then
Label2.Visible = True
Label2.ForeColor = Color.Green
Label2.Text = "OK"
Timer1.Start()
Timer1.Interval = 1500

Else
Label2.Visible = True
Label2.ForeColor = Color.Red
Label2.Text = " Réponse Incorrecte"
MsgBox("Votre réponse est fausse, Veuillez réessayer", vbOKOnly, "test")
TextBox1.Focus()
TextBox1.Clear()
Label2.Visible = False
Me.nbTentatives = Me.nbTentatives + 1

If Me.nbTentatives = 3 Then
MsgBox("La Réponse est " & Me.réponses(Me.numéroQuestion), 32, "Questions")
Timer1.Start()
Timer1.Interval = 1500
End If
End If

End Sub

Private Sub InitialiserNouvelleQuestion()

Me.nbTentatives = 0
Me.numéroQuestion = random.Next(0, questions.Length - 1)
Label1.Text = Me.questions(Me.numéroQuestion)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Dispose()
End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(13) Then
Verification()
e.Handled = True
Else
e.Handled = False
End If
End Sub


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop()
TextBox1.Clear()
Label2.Visible = False
InitialiserNouvelleQuestion()
End Sub

End Class


J'aimerai récupérer ce code là et le modifier pour y intégré mes nouvelle conditions ci dessus.
c'est possible ?

Merci de votre compréhension. :)
Commenter la réponse de Whismeril
Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519
0
Merci
oui par la fonction

case()
non pas forcément.


Pour poster un code, merci de lire et d'appliquer (à l'avenir) ce qui est décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Si tu as déjà un code que tu veux réutiliser pourquoi poser une question ouverte au départ.

Ce que je t'ai proposé n'a rien à voir avec ton ancien code, d'abord parce que tu n'as pas codé objet.
VB.Net est optimisé pour coder objet, je t'ai donc répondu objet.
Mais c'est pas obligé de coder ainsi.


Donc au final, veux tu que je t'aide à ma façon, ou essaye de réadapter ton code? Sachant que je ne code plus avec des tableaux à la pelle et du séquentielle depuis plus de 10 ans
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
bonjour, merci de me le préciser au niveau du code.
donc pas besoin de case()

je pense que j'ai trouvé un équivalent de ce que je veux faire :)


Private Sub LectureQuestionnaire()
        Dim FichierQuestionnaire As New StreamReader(TBQuestionnaire.Text, System.Text.Encoding.Default)
        Dim UneQuestion As String
        Dim SeparateurSplit As Char() = {"~"}                    ' Table des séparateurs
        Dim ResultatSplit() As String

        NombreQuestions = CType(FichierQuestionnaire.ReadLine(), Integer)
        ReDim TableauDesQuestions(NombreQuestions - 1)
        For NumQuest As Integer = 0 To NombreQuestions - 1
            UneQuestion = FichierQuestionnaire.ReadLine()
            ResultatSplit = UneQuestion.Split(SeparateurSplit)
            TableauDesQuestions(NumQuest).Numero = CType(ResultatSplit(0), Integer)
            TableauDesQuestions(NumQuest).Illustration = ResultatSplit(1)
            TableauDesQuestions(NumQuest).Question1 = ResultatSplit(2)
            TableauDesQuestions(NumQuest).ResponseA = ResultatSplit(3)
            TableauDesQuestions(NumQuest).ResponseB = ResultatSplit(4)
            TableauDesQuestions(NumQuest).Question2 = ResultatSplit(5)
            TableauDesQuestions(NumQuest).ResponseC = ResultatSplit(6)
            TableauDesQuestions(NumQuest).ResponseD = ResultatSplit(7)
            TableauDesQuestions(NumQuest).RepOK1 = ResultatSplit(8)
            TableauDesQuestions(NumQuest).RepOK2 = ResultatSplit(9)
        Next
        FichierQuestionnaire.Close()




    Private Sub AfficheQuestion()
        TBNumQuest.Text = TableauDesQuestions(IndiceQuestionActuelle).Numero
        PBIllustration.Image = Image.FromFile(DossierImage & TableauDesQuestions(IndiceQuestionActuelle).Illustration)
        PBIllustration.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
        LQuestion1.Text = TableauDesQuestions(IndiceQuestionActuelle).Question1
        LResponseA.Text = TableauDesQuestions(IndiceQuestionActuelle).ResponseA
        LResponseB.Text = TableauDesQuestions(IndiceQuestionActuelle).ResponseB
        LQuestion2.Text = TableauDesQuestions(IndiceQuestionActuelle).Question2
        LResponseC.Text = TableauDesQuestions(IndiceQuestionActuelle).ResponseC
        LResponseD.Text = TableauDesQuestions(IndiceQuestionActuelle).ResponseD
    End Sub
Commenter la réponse de Whismeril
Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519
0
Merci
Utiliser un redim est extrêmement couteux en ressources système.

Au lieu d’utiliser un tableau, sers toi d’une liste. Cette coolection permet d’ajouter, d’enlever ou de changer l’ordre des items.

Sinon, à priori tu es sur la bonne voie.
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
Une liste !? comment cela?

une exemple?

Merci de votre compréhension :)
Whismeril
Messages postés
13139
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 avril 2019
519 -
yannel777
Messages postés
130
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
19 avril 2019
7 -
merci de cette information, je vais y regarder :)
Commenter la réponse de Whismeril