Fragespiel

  • Tach,

    hab vor ein Fragespiel zu programmieren. Wie kann ich denn mehrere Fragen speichern und die per Zufall "auftauchen" lassen wenn eine Frage richtig beantwortet wurde?
    Hab bis jetzt das hier. Ist ein bisschen Schrott, aber egal :)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Fragespiel", 405, 324, 282, 177)
    $Label1 = GUICtrlCreateLabel(" Wie heisst die Hauptstadt von Frankreich?", 28, 32, 284, 52)
    $Button1 = GUICtrlCreateButton("c) Paris", 24, 176, 129, 41, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("b) Berlin", 184, 112, 129, 41, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("a) Wien", 24, 112, 129, 41, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("d) Bern", 184, 176, 129, 41, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Frage 1", 336, 232, 40, 17)
    $Label3 = GUICtrlCreateLabel("Frage 8", 336, 64, 40, 17)
    $Label5 = GUICtrlCreateLabel("Frage 10", 336, 16, 46, 17)
    $Label10 = GUICtrlCreateLabel("Frage 3", 336, 184, 40, 17)
    $Label11 = GUICtrlCreateLabel("Frage 9", 336, 40, 40, 17)
    $Label12 = GUICtrlCreateLabel("Frage 6", 336, 112, 40, 17)
    $Label13 = GUICtrlCreateLabel("Frage 4", 336, 160, 40, 17)
    $Label14 = GUICtrlCreateLabel("Frage 7", 336, 88, 40, 17)
    $Label15 = GUICtrlCreateLabel("Frage 5", 336, 136, 40, 17)
    $Label16 = GUICtrlCreateLabel("Frage 2", 336, 208, 40, 17)
    $Button5 = GUICtrlCreateButton("Beenden", 328, 288, 65, 25, $WS_GROUP)
    $Label4 = GUICtrlCreateLabel("", 132, 232, 76, 28)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $Variable5 = MsgBox(4, "Beenden?", "Möchtest Du wirklich beenden?")
    If $Variable5 = 6 Then
    MsgBox(0,"Auf Wiedersehen!", "Danke für's Mitspielen!")
    Exit
    EndIf
    Case $Button5
    $Variable0 = MsgBox(4, "Beenden?", "Möchtest Du wirklich beenden?")
    If $Variable0 = 6 Then
    MsgBox(0,"Auf Wiedersehen!", "Danke für's Mitspielen!")
    Exit
    EndIf
    Case $Button1
    $Variable1 = MsgBox(4, "Sicher?", "Möchtest du Antwort c) nehmen?")
    If $Variable1 = 6 Then
    Sleep(500)
    GUICtrlSetData($Label4, " Korrekt!")
    EndIf
    Case $Button2
    $Variable2 = MsgBox(4, "Sicher?", "Möchtest du Antwort b) nehmen?")
    If $Variable2 = 6 Then
    Sleep (500)
    GUICtrlSetData($Label4," Falsch!")
    Sleep(1000)
    MsgBox(0, "Auf Wiedersehen!", "Du hast verloren!")
    Exit
    EndIf
    Case $Button3
    $Variable3 = MsgBox(4, "Sicher?", "Möchtest du Antwort a) nehmen?")
    If $Variable3 = 6 Then
    Sleep(500)
    GUICtrlSetData($Label4," Falsch!")
    Sleep(1000)
    MsgBox(0, "Auf Wiedersehen!", "Du hast verloren!")
    Exit
    EndIf
    Case $Button4
    $Variable4 = MsgBox(4, "Sicher?", "Möchtest du Antwort d) nehmen?")
    If $Variable4 = 6 Then
    Sleep(500)
    GUICtrlSetData($Label4," Falsch!")
    Sleep(1000)
    MsgBox(0, "Auf Wiedersehen!", "Du hast verloren!")
    Exit
    EndIf
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Die rechte Frageleiste kann weggedenkt werden^^

    mfG
    Charlie

  • Du könntest die Fragen mit Antwort in ne .ini schreiben und dann einfach mit random zufällig eine auswählen. wenn du die ragen, die schon gemacht wurden ausschliessen willst einfac mit ner schleife, die z.b. in ner array speichert welche schon aufgerufen wurden, und diese dann nicht mehr frage/ den random einfach nochmal laufen lässt.

    Guck dir dazu mal folgende Funktionen an:

    iniread
    iniwrite
    random

    und wenn du das mit den Arrays machen willst, guck dir die auch noch an, können sehr hilfreich sein, wenn auch anfangs schwer zu verstehen

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.