Créer des questions choix multiples sous VB 2010.

yannel777 Messages postés 161 Statut Membre -  
yannel777 Messages postés 161 Statut Membre -
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


Même les gens résolus n'ont pas toujours la solution, là est le problème.

5 réponses

  1. Utilisateur anonyme
     
    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.
    0
    1. yannel777 Messages postés 161 Statut Membre 35
       
      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
      0
  2. Utilisateur anonyme
     
    Ok et c’est toujours un jeux de 2 questions?
    Ou il peut y envoir 1 seule avec 4 propositions ?
    0
    1. yannel777 Messages postés 161 Statut Membre 35
       
      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. :)
      0
  3. Utilisateur anonyme
     
    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.
    0
    1. yannel777 Messages postés 161 Statut Membre 35
       
      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. :)
      0
  4. Utilisateur anonyme
     
    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
    0
    1. yannel777 Messages postés 161 Statut Membre 35
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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.
    0
    1. yannel777 Messages postés 161 Statut Membre 35
       
      Une liste !? comment cela?

      une exemple?

      Merci de votre compréhension :)
      0
    2. yannel777 Messages postés 161 Statut Membre 35
       
      merci de cette information, je vais y regarder :)
      0