Quizprogramm

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Quizprogramm

    Hallo liebe VB-Gemeinde,

    ich probiere mich gerade an einem Quiz, weil ich erst begonnen habe zu programmieren. Das klappt nach meinen Vorstellungen auch soweit alles gut, doch an einer Stelle hapert es:

    Public Class Form1
    Dim Richtig As String
    Dim Falsch As String
    Dim Berlin As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    btn2.Visible = False
    btn3.Visible = False
    btn4.Visible = False
    btn5.Visible = False
    btn6.Visible = False
    btn7.Visible = False
    btn8.Visible = False
    btn9.Visible = False
    btn10.Visible = False
    btn11.Visible = False
    btn12.Visible = False
    btn13.Visible = False
    btn14.Visible = False
    btn15.Visible = False
    btn16.Visible = False
    btn17.Visible = False
    btn18.Visible = False
    btn19.Visible = False
    btn20.Visible = False
    btn21.Visible = False
    End Sub

    Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
    btn2.Visible = True
    btn3.Visible = False
    btn4.Visible = False
    btn5.Visible = False
    btn6.Visible = False
    btn7.Visible = False
    btn8.Visible = False
    btn9.Visible = False
    btn10.Visible = False
    btn11.Visible = False
    btn12.Visible = False
    btn13.Visible = False
    btn14.Visible = False
    btn15.Visible = False
    btn16.Visible = False
    btn17.Visible = False
    btn18.Visible = False
    btn19.Visible = False
    btn20.Visible = False
    btn21.Visible = False

    MsgBox("Was ist Deutschlands Hauptstadt?")
    End Sub

    Private Sub btn22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn22.Click

    If txtbox1.Text = Berlin Then
    MsgBox("Richtig!")

    Else : MsgBox("Falsch!")
    End If
    End Sub
    End Class


    Hier könnt ihr meinen Entwurf sehen, das ist gerade der Anfang. Recht simpel, wenn ich den Knopf 1 drücke wird Knopf zwei sichtbar, insgesamt sind es 21 + einen "Lösung-Button". Nun soll beim Erscheinen der Frage die Antwort in eine Textbox eingegeben werden und wenn ich dann auf den Lösen Knopf drücke, soll entweder die Aussage "Richtig!" oder bei einer falschen Antwort die Aussage "Falsch!" erscheinen. Allerdings, kommt egal was dort reingeschrieben wird nur die Aussage "Falsch!".

    Was habe ich mir der If-Clause falsch gemacht? Hier nochmal gesagt, ich bin ein blutiger Anfänger :)

    Danke schon mal in Vorraus
    Jan
    Du deklarierst Berlin als Variable, weist ihr aber keinen Wert zu. Soll heißen: Du solltest z.B. eine Variable "Antwort" deklarieren, die den Wert "Berlin" bekommt, dann kannst du es so überprüfen. Oder du setzt "Berlin" in Anführungszeichen, dann wird es direkt als String behandelt.

    Oder - und das ist für dich vmtl. der richtigste Weg: du eignest dir die Grundlagen an. Empfehlenswert hierfür ist dieses Buch, das kostenlos zum download bereitsteht: microsoft.com/germany/msdn/akt…008dasentwicklerbuch.aspx
    Hallo BjöNi,

    ich momentan noch dabei mir die Grundlagen anzueigenen, aber jetzt zu deiner Antwort.
    Welchen Sinn hat es Berlin in Anführungszeichen zu setzten... es wird doch so oder so als ein String behandelt...

    Was würdest du denn ändern, damit das funktioniert was ich vorhabe, bzw. wie definier' ich eine Variable "Antwort"?
    Der Code ist Grütze.
    17 Controls einzeln Visible umzuschalten.
    Pack die alle in ein Panel und schalte die Panel-Visibility.
    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!
    nicht nur der Code, schon der Ansatz ist Grütze.
    Ein Quiz ist eine Datenverarbeitung, und wenn man das nicht nach den Prinzipien einer Datenverarbeitung anfasst (Trennung von Daten und Gui, Databinding, Datenmodellierung), dann gewöhnt man sich nur gräuseligen Unfung an, und steht sich in jedem weiteren Projekt mit seinen eigenen schlechten Angewohnheiten selbst im Weg.

    Wenn du Grundlagen lernen willst, dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)

    Eine ordentlich aufgezogene Datenverarbeitung setzt schon so einiges an Grundlagen vorraus.

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim zufall As String
    4. Dim Vergleich As String
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Label2.Text = "" 'label löschen
    7. Label3.Text = ""
    8. Label4.Text = ""
    9. Label5.Text = ""
    10. Timer1.Enabled = True
    11. End Sub
    12. 'timer
    13. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    14. ListBox1.Items.Clear()
    15. Dim rnd As New Random()
    16. zufall = CStr(rnd.Next(0, 100)) 'Zufalszahlen zwischen 0 bis 100
    17. If zufall = "11" Then 'kommt bei 11 zum zuge
    18. Vergleich = "4 Beine" 'Antwort für vergleich festlegen
    19. ListBox1.Items.Add("Wiviel Beine hat ein Stuhl") 'Frage
    20. Label2.Text = "2 Beine" 'Antworten 1-3
    21. Label3.Text = "3 Beine"
    22. Label4.Text = "4 Beine"
    23. End If
    24. If zufall = "21" Then
    25. Vergleich = "4"
    26. ListBox1.Items.Add("Wieviel sind 2+2")
    27. Label2.Text = "23" 'Antworten 1-3
    28. Label3.Text = "5"
    29. Label4.Text = "4"
    30. End If
    31. If zufall = "80" Then
    32. Vergleich = "Blau"
    33. ListBox1.Items.Add("Welche Farbe hat der Himmel ")
    34. Label2.Text = "Grün" 'Antworten 1-3
    35. Label3.Text = "Blau"
    36. Label4.Text = "Gelb"
    37. End If
    38. If CBool(ListBox1.Items.Add("")) Then ' Weiter machen bis was kommt
    39. Timer1.Enabled = False
    40. End If
    41. Label1.Text = zufall
    42. End Sub
    43. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    44. If Vergleich = Label2.Text Then
    45. Label5.Text = "RICHTIGE ANTWORT"
    46. Else
    47. Label5.Text = "FALSCHE ANTWORT"
    48. End If
    49. End Sub
    50. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    51. If Vergleich = Label3.Text Then
    52. Label5.Text = "RICHTIGE ANTWORT"
    53. Else
    54. Label5.Text = "FALSCHE ANTWORT"
    55. End If
    56. End Sub
    57. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    58. If Vergleich = Label4.Text Then
    59. Label5.Text = "RICHTIGE ANTWORT"
    60. Else
    61. Label5.Text = "FALSCHE ANTWORT"
    62. End If
    63. End Sub
    64. End Class


    TESTMAPPE IN VB2012
    www48.zippyshare.com/v/47224707/file.html
    @TVX: Dann sag ihm, dass er es lassen soll, bis er Programmieren gelernt hat.
    @Manawyrm: Recht hast Du. :thumbup:
    @Janni412: Gugst Du hier.
    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!
    @RodFromGermany danke für den Link, ich werde ihn mir bei Gelegenheit mal anschauen...
    @Manawyrm "Dann soll er's entweder lernen oder es lassen." -> Lassen werde ich es bestimmt nicht, das wäre zu einfach... :P
    Ich werde mir erstmal die Grundsätze reinziehen, also sagen wir so, ich bin schon dabei :)

    Gruß
    Jan
    naja - vlt. ist ein Quiz als Anfänger-Aufgabe auch garnet so verkehrt - auf jd. Fall sehr anspruchsvoll.

    Zunächstmal musste richtig konzipieren, und ich mein damit immer gleich Datenmodellierung.

    Also überlegen: Wie funzt ein Quiz?
    Da werden Fragen gestellt, und zu jeder Frage werden mehrere Antworten angeboten, und eine davon ist richtig (Multiple Choice).

    Also braucht man zuerst eine Liste von Datenobjekten mit je 3 Properties:
    Frage, AlleAntworten, RichtigeAntwort
    Dabei ist "AlleAntworten" eine besondere Property, weil es muß eine Auflistung sein, die mehrere Antworten enthält. Also eine Eigenschaft, die eine Liste ist.

    Tja, noch bevor man das Quiz ühaupt spielen kann braucht man ein Programm, mit dem man QuizFragen anlegen, zufügen, editieren, löschen kann, sowie laden und abspeichern.

    Erst danach kann man das Quiz programmieren, also einen Ablauf, wo ein Frage-Datensatz nach dem anneren zunächst unvollständig angezeigt wird, dann vollständig.
    Die Unvollständigkeit besteht darin, dass "RichtigeAntwort" zunächst ausgeblendet bleibt, ansonsten wird bei MultipleChoice ja die komplette Frage inklusive aller Antworten angezeigt.

    Jo, das wäre eine Art Fahrplan, und nu dieses Buch lesen (hingegen das Galileio-Openbook ist Mist), durcharbeiten, und dabei den eigenen Plan vlt. immer locker im Auge behalten, und sukzessive Teilaufgaben davon lösen oder auch umschreiben oder was auch immer.
    Auch wichtig, den ObjectBrowser kennenlernen, aber um davon zu profitieren muß man auch OOP beherrschen, rauf und runter, sodass man allermindestens weiß, was Events, Basisklassen, Methoden, Properties, Signaturen, Felder, Enumerationen, Gültigkeitsbereiche und so Zeugs ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades Super Antwort... :) Daran werde ich mich auf jeden Fall halten.
    Auch wichtig, den ObjectBrowser kennenlernen, aber um davon zu
    profitieren muß man auch OOP beherrschen, rauf und runter, sodass man
    allermindestens weiß, was Events, Basisklassen, Methoden, Properties,
    Signaturen, Felder, Enumerationen, Gültigkeitsbereiche und so Zeugs ist.


    Also es ist ja nicht so, dass ich rein gar nichts weiß. :D Was Events, Methoden, Properties, Enumerationen und Gültigkeitsbereiche sind, weiß ich ja schon. :) Felder... joar, da habe ich ne Vorstellung, aber mehr auch nicht.

    Naja ich werde mich auf jeden Fall mal daran halten und mein Glück versuchen.
    Nochmal danke an alle, die sich bemüht haben. ;)

    Gruß
    Jan

    Janni412 schrieb:


    If txtbox1.Text = Berlin Then
    MsgBox("Richtig!")

    Else : MsgBox("Falsch!")
    End If


    MsgBox benutzt man sowieso nicht mehr. Ist nur n Überbleibsel von VB6
    Benutze in Zukunft bitte
    MessageBox.Show

    Beispiel:

    VB.NET-Quellcode

    1. MessageBox.Show("Dein Text", "Dein Titel", MessageBoxButtons.OK, MessageBoxIcon.Information)
    na, wenn dir der ganze Kram wirklich bereits ein Begriff sein sollte, dann kannste vlt. schon mittm relationalen Datenmodell anfangen, also mittm typisierten Dataset, und daran zu binden. gugge Daten laden, speichern, verarbeiten und auch ähnliche Tuts im Datenbank-Tut-Bereich.
    Zu Prinzipien der Datenmodellierung gugge die relationale GrundIdee oder studiere das Main.doc von "Datenbank in 10 Minuten" auf Movie-Tuts, oder mach dich sonstwie schlau zum Thema ER-Diagramm und Normalisierung inne Datenbänkerei.
    Nur vermeide Sql - dassis eine phänomenal mächtige eigene Sprache für Datenbanken, aber für son popeliges Quiz brauchst du ühaupt keine DB.

    Aber vor allem: Trotzdem dieses Buch lesen (hingegen das Galileio-Openbook ist Mist). Meist denken die Leuts, sie kennten die Begriffe, und stellt sich dann als Halb- oder Viertel-Wissen heraus.
    Falls es bei dir anners ist, und du kennst dich wirklich bereits mit OOP aus, dann liest sich das Buch natürlich wesentlich schneller.

    kannst ja mal ein typDataset basteln mit den Tabellen "Frage" und "Antwort" und der DataRelation zw. beiden. Machn Screenshot davon und häng an - Anleitung (Bild-)DateiAnhänge