Quiz erstellen - Neues Form für jede Frage

  • VB.NET

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

    Quiz erstellen - Neues Form für jede Frage

    Hallo,
    ich habe ein Problem und hoffe, das ihr mir helfen könntet.
    Also ich muss(kann/soll) für die Schule eion Quiz erstellen. Es soll ein Zuordnungsspiel werden. Die Grundideee habe ich aber...
    Also wenn man eine Frage richtig hat erschient immer ein Button(soll auch so sein), der vorher auf Visible = false gestellt wurde und danach bei richtiger Antwort erschient nun möchte ich, dass man zur nächsten Frage gelangt. Wenn ich für jede Frage ein Form benutzen muss, dann wird das
    1. doch eher mühselig
    2. erscheint die Form immer berstellt, sogar wenn ich die vorherige frage auf hide stelle, dann erscheint doch immer noch die nächste Frage auf einer anderen Position. und das sieht sehr unpürofessionell aus. wie kann man das lösen, dass die Form immer auf der gleichen Stelle erschein, wie die vorherige(beide forms sind natürlich gleich groß) oder kann man das besser lösen/machen irgend eine andere Idee?

    Danke im Vorraus :)
    Die Fragen sehen doch alle gleich aus? Zum Beispiel immer ein Fragetext, vier Antworten und eine ist richtig. Dann erstelle doch eine Klasse, die eine Frage repräsentiert. Dann erstellst du ein User-Interface, welches den Inhalt dieser Frage-Klasse darstellt und musst dann immer nur die Frage-Klassen-Instanz auswechseln (mit einer Variable).

    Viele Grüße, Phil.
    Ich hab noch nen Code von Unwesend es hat mir sehr geholfen damals. (Danke Unwesen :))

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim anzahl As Integer = 9 'Amzahl der Fragen & Antworten (10 Stück, Nullbasiert)
    3. Dim aktuelleFrage As Integer 'Zeiger auf aktuelle Frage
    4. Dim fragen(anzahl) As String 'Array für die Fragen
    5. Dim lösungen(anzahl) As String 'Array für die Antworten
    6. Dim antwort, eingabe As String 'Hilfsstrings für vergleich der eingegebenen Antwort mit der Lösung
    7. Dim richtigeAntworten As Integer 'Zählt die korrekten Antworten
    8. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    9. 'Fragen in Array schreiben
    10. fragen = {"Frage 1", "Frage 2", "Frage 3", "Frage 4", "Frage 5", "Frage 6", "Frage 7", "Frage 8", "Frage 9", "Frage 10"}
    11. 'Lösungen...
    12. lösungen = {"Antwort 1", "Antwort 2", "Antwort 3", "Antwort 4", "Antwort 5", "Antwort 6", "Antwort 7", "Antwort 8", "Antwort 9", "Antwort 10"}
    13. 'Erste Frage ausgeben
    14. FrageStellen()
    15. End Sub
    16. Private Sub btnAntwortAbgeben_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAntworten.Click
    17. 'Wandele in kleinbuchstaben um
    18. eingabe = txtAntwortEingabe.Text.ToLower
    19. antwort = lösungen(aktuelleFrage).ToLower
    20. 'Vergleiche Eingabe mit Antwort
    21. If eingabe = antwort Then
    22. richtigeAntworten += 1
    23. NächsteFrage()
    24. Else
    25. NächsteFrage()
    26. End If
    27. End Sub
    28. Private Sub NächsteFrage()
    29. 'EIngabefeld leeren
    30. txtAntworteingabe.Clear()
    31. 'Zeiger auf nächste Frage setzen
    32. aktuelleFrage += 1
    33. 'Prüfen, ob schon die Letzte Frage gestellt wurde
    34. If aktuelleFrage > anzahl Then
    35. 'Ja, war die letzte; setze Zeiger um eins zurück
    36. aktuelleFrage -= 1
    37. 'Gebe ergebnis aus
    38. MessageBox.Show("Das war die letzte Frage!" & vbNewLine & "Du hast " & CStr(richtigeAntworten) & " von " & CStr(anzahl + 1) & " Fragen richtig beantwortet!")
    39. 'Verlasse die Sub jetzt
    40. Exit Sub
    41. End If
    42. 'Stelle eine neue Frage
    43. FrageStellen()
    44. End Sub
    45. Private Sub FrageStellen()
    46. '"Überschrift" ausgeben
    47. lblNummer.Text = "Frage " & CStr(aktuelleFrage + 1)
    48. 'Frage ausgeben
    49. lblFragetext.Text = fragen(aktuelleFrage)
    50. End Sub
    51. End Class


    lblNummer => "Frage:" Label
    lblAntwort => "Antwort:" Label
    lblFragetext => "Frage in Textbox"
    txtAntwortEingabe => "Textbox wo man antwort eingibt"
    btnAntworten => "Button um antwort zu senden"

    Das ganze könnte so in etwa aussehen:
    myimg.de/?img=screen3542e.jpg
    Ein Fragen-DataSet, für jede Frage ein Eintrag. Per LoadXml(), SaveXml(NAME) leicht zu handeln.
    Eine Form, die die Fragen und die möglichen Antworten anzeigt und das ganze handelt.
    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!
    15 Zeilen, 5 Spalten.
    Was ist denn da dabei?
    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!