• Guten Morgen Community,


    ich habe eine Frage, vielleicht kann mir jemand helfen. Ich möchte in einem Quiz einen Counter einbauen. Leider funktioniert es bei mir nicht richtig. Der Counter soll bis drei gehen. Bei mir ist kein Abbruch des Quiz.


    Wie programmiere ich so etwas?


    Ich bin für jede Hilfe dankbar.


    Danke.


    Patrick

  • Wenn ich mir deinen anderen Thread ansehe, sehe ich zwei Möglichkeiten, das zu berücksichtigen:


    1. Bei der Abfrage innerhalb der do-Schleife die Schleife verlassen:

    Code
            do {
                if (count <= 3) { // Hier fehlte das "if"
                    var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:", "");
                } else {
                    break;
                }


    2. Den Counter in der while-Bedingung berücksichtigen:

    Code
            } while (eingabe != antwort1 && count < 3)
  • Ich habe den Code jetzt mal so erfasst, aber trotzdem funktioniert es nicht ganz reibungslos. Er schreibt mir jetzt beim OK Button ohne Eingabe einer Antwort Richtig.


    Ich kopiere den aktuellen Code einmal ein.


    function schreibwas() {

    var count = 3;

    var antwort1 = "Laika";

    var antwort2 = "Juri Gagarin";

    var antwort3 = "3 x falsch";

    do {

    if (count <= 3) {

    var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:","");

    } else {

    break;

    }

    if (eingabe == antwort2) {

    alert("Fast richtig, Sie dürfen noch einmal raten");

    continue;

    }

    if (eingabe == antwort1) {

    document.getElementById("ergebnis").innerHTML = "Richtig";

    break;

    }

    if (eingabe == antwort3) {

    document.getElementById("ergebnis").innerHTML = "3 x mal falsch";

    break;

    }

    } while (eingabe != antwort1 && count < 3)

    {

    document.getElementById("ergebnis").innerHTML = "Richtig";

    }

    }

    Vielleicht kannst du ja nochmal schauen.


    Danke.

  • Ja, in meinem Posting #2 hatte ich zwei Alternativen beschrieben, d. h. Du hättest nur eine umzusetzen brauchen.

    Außerdem: Du zeigst ja dem Benutzer an, der wievielte Versuch es ist. Dazu musst Du beim Zählen mit 1 beginnen, also let count = 1;.

  • Folgende Änderungen habe ich vorgenommen.


    var count = 3; ersetzt durch let count = 1; an gleicher Stelle


    Ich habe beide Varianten von count einzeln probiert, trotzdem starte er mir das Quiz nicht.

  • function schreibwas() {

    let count = 1;

    var antwort1 = "Laika";

    var antwort2 = "Juri Gagarin";

    var antwort3 = "3 x falsch";

    do {

    var eingabe = prompt (count + ". Versuch. Wie hieß der erste Erdbewohner im All:","");

    }

    if (eingabe == antwort2) {

    alert ("Fast richtig, Sie dürfen noch einmal raten");

    continue;

    }

    if (eingabe == antwort1) {

    document.getElementById("ergebnis").innerHTML = "Richtig";

    break;

    }

    if (eingabe == antwort3) {

    document.getElementById("ergebnis").innerHTML = "3 x mal falsch";

    break;

    }

    } while (eingabe != antwort1 && count < 3)

    {

    document.getElementById("ergebnis").innerHTML = "Richtig";

    }

    }

  • Da ist eine schließende geschweifte Klammer fehl am Platze:

    Code
                do {
    
                    var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:", "");
    
                    } // Die schließende Klammer ist hier fehl am Platze
    
                    if (eingabe == antwort2) {

    Lösche ich sie ist der Code zumindest frei von Syntaxfehlern. Rückt man den Code sinnvoll ein, sieht man schnell, dass da etwas nicht stimmt.


    Benutze bitte Code-Tags wenn Du Code postest, das </> in der Werkzeugleist oben.

  • Hallo, bei meinem Code habe ich noch ein kleines Problem. Er zeigt mir bei Laika Richtig an, bei einer ungültigen Eingabe wie die vorgegeben Antworten zeigt er mir Richtig an. Dort sollte aber 3x falsch stehen. Vielleicht kann nochmal jemand drüberschauen. Danke. Patrick


  • Kernproblem: Um fest zu stellen ob 3x falsch geraten wurde, musst Du den Schleifenzähler count abfragen, nicht den String.

    Ich bin der Meinung, dass die Arbeit mit break und continue nur Verwirrung stiftet, klarer wird es, wenn man verschachtelte if-Abfragen verwendet:

    (ungetestet)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!