Quizspiel erstellen (Zufallsbutton)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Quizspiel erstellen (Zufallsbutton)

    Hallo,Ich möchte ein kleine Software machen mit Fragen. Also ein kleines Quiz spiel. Wenn jetzt eine Frage kommt, dann soll die Antworten in die Buttons eingetragen werden.
    Beispiel: Welchen Geldschein gibt es nicht ?

    A: 5 Euro
    B: 22 Euro
    C: 10 Euro
    D: 500 Euro
    Und wenn man jetzt auf D gedrückt hat, dann ist es falsch. Wenn die Frage nochmal kommt, dann soll bei A: 22 Euro stehen. Also das alles durcheinander ist. Ein Zufallssystem, wo die Antwort hinkommt.Ich habe es zwar mit ein Zufallssystem gemacht, aber dann gibt es manchmal 2 mal die gleiche Antwort. Und genau das möchte ich verhindern. Es soll aber vertauscht sein. Sodass, man nicht einfach immer auf B drücken kann, sondern dann auch mal auf A, B, C oder D drücken muss, weil dort die Antwort drinnen steht und nicht nur bei B Hoffentlich wisst ihr, was ich damit meine.Danke im voraus.
    @stoneear Ich denke, das kannst Du über die Position der richtigen Antwort in der Auswahl machen, da muss nicht extra eine mögliche Fehlerqwuelle programmiert werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Tabelle mit 5x String und 1x Integer: Frage, Antwort 1, Antwort 2, Antwort 3, Antwort 4, Index der richtigen Antwort.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Und die Tabelle auf die Buttons zuweisen oder wie mache ich das, damit die Antwortmöglichkeiten auf den Buttons erscheint ?

    stoneear schrieb:

    die Tabelle auf die Buttons zuweisen
    geht nicht.
    Du kannst aber den Inhalt der Zellen der Text-Property der Buttons zuweisen.
    Mach Dir ne neue Form mit 4 Button und einer TextBox.
    Quizz

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private table As DataTable
    3. Private index As Integer = -1
    4. Private result As Integer = -1
    5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. Me.InitTable()
    7. Me.InitContent()
    8. Me.NextQuestion()
    9. End Sub
    10. Private Sub InitContent()
    11. Dim newRow As DataRow = Me.table.NewRow()
    12. newRow(0) = "Wieviel ist 1 * 1"
    13. newRow(1) = "1"
    14. newRow(2) = "2"
    15. newRow(3) = "3"
    16. newRow(4) = "4"
    17. newRow(5) = 1
    18. Me.table.Rows.Add(newRow)
    19. newRow = Me.table.NewRow()
    20. newRow(0) = "Wieviel ist 1 * 2"
    21. newRow(1) = "1"
    22. newRow(2) = "2"
    23. newRow(3) = "3"
    24. newRow(4) = "4"
    25. newRow(5) = 2
    26. Me.table.Rows.Add(newRow)
    27. newRow = Me.table.NewRow()
    28. newRow(0) = "Wieviel ist 1 * 3"
    29. newRow(1) = "1"
    30. newRow(2) = "2"
    31. newRow(3) = "3"
    32. newRow(4) = "4"
    33. newRow(5) = 3
    34. Me.table.Rows.Add(newRow)
    35. newRow = Me.table.NewRow()
    36. newRow(0) = "Wieviel ist 1 * 4"
    37. newRow(1) = "1"
    38. newRow(2) = "2"
    39. newRow(3) = "3"
    40. newRow(4) = "4"
    41. newRow(5) = 4
    42. Me.table.Rows.Add(newRow)
    43. 'Me.table.WriteXml("C:\Temp\Quizz.xml")
    44. 'Me.table.ReadXml("C:\Temp\Quizz.xml")
    45. End Sub
    46. Private Sub InitTable()
    47. Me.table = New DataTable()
    48. Me.table.TableName = "Quizz"
    49. Me.table.Columns.Add(New DataColumn() With { _
    50. .ColumnName = "Frage", _
    51. .DataType = GetType(String) _
    52. })
    53. Me.table.Columns.Add(New DataColumn() With { _
    54. .ColumnName = "Antwort 1", _
    55. .DataType = GetType(String) _
    56. })
    57. Me.table.Columns.Add(New DataColumn() With { _
    58. .ColumnName = "Antwort 2", _
    59. .DataType = GetType(String) _
    60. })
    61. Me.table.Columns.Add(New DataColumn() With { _
    62. .ColumnName = "Antwort 3", _
    63. .DataType = GetType(String) _
    64. })
    65. Me.table.Columns.Add(New DataColumn() With { _
    66. .ColumnName = "Antwort 4", _
    67. .DataType = GetType(String) _
    68. })
    69. Me.table.Columns.Add(New DataColumn() With { _
    70. .ColumnName = "Lösung", _
    71. .DataType = GetType(Integer) _
    72. })
    73. End Sub
    74. Private Sub NextQuestion()
    75. Me.index += 1
    76. If Me.index = Me.table.Rows.Count Then
    77. MessageBox.Show("Feddich")
    78. Me.result = -1
    79. Return
    80. End If
    81. Dim row As DataRow = Me.table.Rows(Me.index)
    82. Me.TextBox1.Text = row(0).ToString
    83. Dim btn() = {Button1, Button2, Button3, Button4}
    84. For i = 0 To 3
    85. btn(i).Text = row(i + 1).ToString
    86. Next
    87. Me.result = CInt(row(5))
    88. End Sub
    89. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
    90. Dim btn() = {Button1, Button2, Button3, Button4}
    91. If Me.result = -1 Then
    92. Return
    93. End If
    94. If sender Is btn(Me.result - 1) Then
    95. MessageBox.Show("richtig")
    96. Else
    97. MessageBox.Show("falsch")
    98. End If
    99. Me.NextQuestion()
    100. End Sub
    101. End Class
    Wenn Du das verstanden hast, laden und speichern wir die Datensätze in einer Datei:

    VB.NET-Quellcode

    1. table.WriteXml("C:\Temp\Quizz.xml")
    2. table.ReadXml("C:\Temp\Quizz.xml")

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!