Frage - Antwort Script

  • Hallo,

    kann mir bitte jemand einen Script erstellen, der so ähnlich wie der Script mit der Zufallsfrage ist ( [ offen ] Zufallsfragen erstellen? ) nur , dass dieser Script dann noch am Ende von z.B. 10 gestellten Fragen die Punkte auswertet?

    Danke im voraus.

    Mit freundlichen Grüßen,

    White

  • hi,
    du hast 'vergessen' zu erwähnen, wieviel du zu zahlen bereit bist!
    Wenn ich mir deinen Kopf zerbrechen soll, wird das teuer :rofl:
    Einen Tipp gibts allerdings gratis: lt. Duden ist es DAS Skript..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Zitat

    du hast 'vergessen' zu erwähnen, wieviel du zu zahlen bereit bist!
    Wenn ich mir deinen Kopf zerbrechen soll, wird das teuer :rofl:


    Der Auftrag steht im Bereich "Ohne Gegenleistung" und somit ist eine Angabe
    der Bezahlung redundant, da sie höchstens einem "Danke" entspricht.
    Hier ist mein Vorschlag:

    Spoiler anzeigen
    [autoit]

    Dim $aFragen[2] = [ _
    "Welche Farbe hat eine rote Ampel?", _
    "Wieviele Fußballspieler stehen in einer Partie für gewöhnlich auf dem Feld?" _
    ]

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

    Dim $aAntworten[2] = [ _
    "rot", _
    "22" _
    ]
    $iDurchgaenge = 2
    $iZaehler = 0
    $iRichtigeAntworten = 0
    Do
    $iZaehler += 1
    $iAktuelleFrage = Random(0,UBound($aFragen)-1,1)
    $sEingabe = InputBox("Frage Nr. " & $iZaehler, $aFragen[$iAktuelleFrage])
    If $sEingabe = $aAntworten[$iAktuelleFrage] Then
    MsgBox(0,"Richtig","Antwort ist : " & $aAntworten[$iAktuelleFrage])
    $iRichtigeAntworten += 1
    Else
    MsgBox(0,"Leider Falsch","Antwort ist : " & $aAntworten[$iAktuelleFrage])
    EndIf
    Until $iZaehler >= $iDurchgaenge
    MsgBox(0,"Auswertung","Du hast " & $iRichtigeAntworten & " richtige Antwort(en) zu insgesamt " & $iDurchgaenge & _
    " Fragen gegeben, und lagst somit zu " & Round($iRichtigeAntworten/$iDurchgaenge*100,2) & " % richtig!")

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • ..
    Der Auftrag steht im Bereich "Ohne Gegenleistung" und somit ist eine Angabe
    der Bezahlung redundant, da sie höchstens einem "Danke" entspricht.
    ..

    Ooops, das hatte ich glatt übersehen :blush: (der fehlt in der Sammlung..)
    @White: Sry, wenn ich dir zu nah getreten sein sollte.
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Habe das Script von XovoxKingdom noch auf 2D-Arrays umgebaut und die Do-Until Schleife durch eine For-Next ersetzt:

    Spoiler anzeigen
    [autoit]


    Dim $aItems[2][2] = [["Welche Farbe hat eine rote Ampel?", "rot"], ["Wieviele Fußballspieler stehen in einer Partie für gewöhnlich auf dem Feld?", "22"]]

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

    $iDurchgaenge = 2
    $iRichtigeAntworten = 0

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

    For $i = 1 To $iDurchgaenge
    $iAktuelleFrage = Random(0, UBound($aItems, 1)-1,1)
    $sEingabe = InputBox("Frage Nr. " & $i, $aItems[$iAktuelleFrage][0])
    If $sEingabe = $aItems[$iAktuelleFrage][1] Then
    MsgBox(0,"Richtig","Richtig, " & $aItems[$iAktuelleFrage][1] & " ist die gesuchte Antwort!")
    $iRichtigeAntworten += 1
    Else
    MsgBox(0,"Leider Falsch","Falsch, Antwort wäre gewesen: " & $aItems[$iAktuelleFrage][1])
    EndIf
    Next
    MsgBox(0,"Auswertung","Du hast " & $iRichtigeAntworten & " richtige Antwort(en) zu insgesamt " & $iDurchgaenge & " Fragen gegeben und lagst somit zu " & Round($iRichtigeAntworten/$iDurchgaenge*100, 2) & "% richtig!")

    [/autoit]
  • Ich versteh den Witz nicht 8|

    @Script von stayawayknight :

    Kann ich auch einstellen, dass mehrere Antworten richtig sind?

    z.B. Frage : Welche Farbe hat eine Tomate?

    Antwort : grün, orange, gelb, Peter

    Alle Antworten davon sollen dann als richtig angezeigt werden.

    Danke für eure Hilfe und danke im voraus. ;)

  • Klar geht das, dann müsstest du jedoch wieder auf 2 Arrays umsteigen und diese Beispielsweise so aufbauen:

    [autoit]


    $Fragen[2] = ["Welche Farbe kann eine Ampel haben?", "Wie heißt Peter?"]
    $Antworten[2][3] = [["grün", "gelb", "rot"],["Peter", "", ""]]

    [/autoit]


    Müsstest das Antworten-Array eben jenachdem erweitern und das ganze als eine For schleife oder so einbauen. Dafür benutze ich gerne UBound($array), dazu mehr in der Hilfe

    Meine Werke


    EasyScreen (teilweise Crocoframe): <EasyScreen>
    Spotify2Title: <Spotify2Title> (zur Info, dies ist KEIN Spotify-Downloader! Wer das dachte... :rofl: sowas gibts hier nicht :thumbdown: )

  • Mit dem einen Script mit 2D Array bin ich garnicht klar gekommen, wenn ich mehrere Fragen haben möchte, also habe ich mal den anderen genommen, jedoch kommen bei mir immer nur Fehlermeldung

    So sieht es nun bei mir aus :

    Spoiler anzeigen

    Dim $aFragen[2] = [ _
    "Welche Farbe hat eine rote Ampel?", _
    "Wieviele Fußballspieler stehen in einer Partie für gewöhnlich auf dem Feld?" _
    ]

    Dim $aAntworten[2][3] = [ _
    "rot","grün","orange", _
    "22","11","33", _
    ]
    $iDurchgaenge = 2
    $iZaehler = 0
    $iRichtigeAntworten = 0
    Do
    $iZaehler += 1
    $iAktuelleFrage = Random(0,UBound($aFragen)-1,1)
    $sEingabe = InputBox("Frage Nr. " & $iZaehler, $aFragen[$iAktuelleFrage])
    If $sEingabe = $aAntworten[$iAktuelleFrage] Then
    MsgBox(0,"Richtig","Antwort ist : " & $aAntworten[$iAktuelleFrage])
    $iRichtigeAntworten += 1
    Else
    MsgBox(0,"Leider Falsch","Antwort ist : " & $aAntworten[$iAktuelleFrage])
    EndIf
    Until $iZaehler >= $iDurchgaenge
    MsgBox(0,"Auswertung","Du hast " & $iRichtigeAntworten & " richtige Antwort(en) zu insgesamt " & $iDurchgaenge & _
    " Fragen gegeben, und lagst somit zu " & Round($iRichtigeAntworten/$iDurchgaenge*100,2) & " % richtig!")

    Wo liegt dort der Fehler?

  • Hi White,
    du deklarierst z.B. $a[2][3]=[[1, 2, 3], [4, 5, 6]]
    und prüfst dann: If $Eingabe=$a[1] Then..
    Siehst du selbst, daß das nicht funktionieren kann?
    Ok, wenn nicht: Du mußt natürlich jedes Element der Matrix durchgehen, um herauszufinden, ob die Eingabe übereinstimmt, erst wenn alle durchgeprüft sind und keine Übereinstimmung vorhanden ist, ist die Antwort falsch..
    @Quizfrage 1: Du solltest vllt noch eine weitere Frage aufnehmen, die auch Bildzeitungsleser lösen könnten^^
    Frage: Wer wohnte damals in dem Haus, das heute zu seinen Ehren Rembrandt-Museum heißt?
    Antwort: Leonardo Da Vinci, Albrecht Dürer, Rembrandt Harmenszoon van Rijn
    Das würde aber bedeuten, daß der Benutzer die Lösung genauso eingibt, wie du sie vorgibst!
    Oder du prüfst mit StringInstr() und StringLower()|StringUpper()
    Die Funktionen werden in der Hilfe beschrieben..
    Viel Spaß beim Probieren..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Hier ist nochmal eine überarbeitete Variante, die nun auch mehrere Lösungen zulässt, wobei
    der Benutzer immernoch nur !eine! Lösung eingibt.

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    #cs
    Kurze Erklärung:
    Das Array $aFragen speichert die 1-basierte Antwort in der zweiten Spalte.
    Die erste Spalte trägt offensichtlich die Fragestellung.
    Bsp.: Will man die 4te Antwort aus dem $aAntworten-Array speichern, so müsste eine 4 da stehen.
    Gibt es mehrere Antworten, so müssen sie durch Kommata (ohne Leerschritt) getrennt werden!

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

    Der Rest sollte klar sein.

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

    PS: Ich würde an deiner Stelle die Fragen und Antworten in Inidateien auslagern.
    #ce

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

    Dim $aFragen[3][2] = [ _
    ["Welche Farbe hat eine rote Ampel?", "1"] , _ ; Antwort 1 aus dem $aAntworten-Array trifft zu
    ["Wieviele Fußballspieler stehen in einer Partie für gewöhnlich auf dem Feld?" , "2"], _
    ["Nenne eine der Farben: grün, rot oder blau" , "1,3,4"] _ ; Antwort 1 oder 3 oder 4 trifft hier zu
    ]

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

    Dim $aAntworten[4] = [ _
    "rot", _;Antwort 1
    "22" , _
    "grün" , _ ;Antwort 3
    "blau" _ ;Antwort 4
    ]
    $iDurchgaenge = 2 ;ist die Anzahl der Fragestellungen
    $iZaehler = 0 ;zählt bereits gestellte Fragen
    $iRichtigeAntworten = 0 ;zählt richtige Antworten
    $bRichtigeAntwort = False
    $sAntwort = "" ;speichert die richtige Antwort, oder bei mehreren nach folgendem Muster: Antwort1 oder Antwort2 oder ...
    Do
    $iZaehler += 1
    $iAktuelleFrage = Random(0,UBound($aFragen)-1,1)
    $sEingabe = InputBox("Frage Nr. " & $iZaehler, $aFragen[$iAktuelleFrage][0])
    $aAntwortAuswahl = StringSplit($aFragen[$iAktuelleFrage][1],",")
    $bRichtigeAntwort = False
    $sAntwort = ""
    For $i=1 To $aAntwortAuswahl[0]
    $sAntwort &= $aAntworten[$aAntwortAuswahl[$i]-1]&" oder "
    If $sEingabe = $aAntworten[$aAntwortAuswahl[$i]-1] Then
    $bRichtigeAntwort = True
    EndIf
    Next
    $sAntwort = StringTrimRight($sAntwort,6)
    If $bRichtigeAntwort = True Then
    MsgBox(0,"Richtig","Antwort ist : " & $sAntwort)
    $iRichtigeAntworten += 1
    Else
    MsgBox(0,"Leider Falsch","Antwort ist : " & $sAntwort)
    EndIf
    Until $iZaehler >= $iDurchgaenge
    MsgBox(0,"Auswertung","Du hast " & $iRichtigeAntworten & " richtige Antwort(en) zu insgesamt " & $iDurchgaenge & _
    " Fragen gegeben, und lagst somit zu " & Round($iRichtigeAntworten/$iDurchgaenge*100,2) & " % richtig!")

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • So sieht es nun bei mir aus :

    Spoiler anzeigen


    Dim $aFragen[4][9] = [ _
    ["Welche Farbe hat eine rote Ampel?", "1,3,4"] , _ ; Antwort 1 aus dem $aAntworten-Array trifft zu
    ["Wieviele Fußballspieler stehen in einer Partie für gewöhnlich auf dem Feld?" , "2,3,4"], _
    ["Nenne eine der Farben: grün, rot oder blau" , "1,3,4"] _ ; Antwort 1 oder 3 oder 4 trifft hier zu
    ["Bin ich cool?" , "5,6,7"] _

    Dim $aAntworten[7] = [ _
    "rot", _;Antwort 1
    "22" , _
    "grün" , _ ;Antwort 3
    "blau" _ ;Antwort 4
    "Ja" _
    "Nein" _
    "Vielleicht" _
    ]

    Habe ich mal zum Testen etwas erweitert , doch ich versteh es immer noch nicht mit dem $aFragen ...

    Bis jetzt habe ich es so verstanden:

    Dim $aFragen[Anzahl der Fragen][Weiß ich nicht?]
    Dim $aAntworten[Anzahl der Antworten]

    Könntet ihr das bitte noch einmal für ganz blöde erklären?

  • Ahh hat sich erledigt.

    Danke für deine schnelle Hilfe.

    Einmal editiert, zuletzt von White (8. Juni 2011 um 00:42)