JavaScriptsSpiele

Bennys Quiz

15 Wissensfragen im Dialogfenster — geantwortet wird mit a, b, c oder d, am Ende gibt es die Punktzahl.

Dieses Quiz stammt von unserem User Benny. Nachdem ihr auf „Start“ geklickt habt, bekommt ihr 15 Fragen quer durch Sport, Geschichte, Technik und Allgemeinbildung gestellt. Jede Frage erscheint in einem eigenen Dialogfenster des Browsers, zusammen mit vier Antwortmöglichkeiten. Ihr tippt einfach den Buchstaben ein — a, b, c oder d, kleingeschrieben — und bestätigt mit OK.

Nach jeder Antwort sagt euch ein kurzer Hinweis, ob sie richtig war. Für jede richtige Antwort gibt es einen Punkt, am Ende erscheint eure Gesamtpunktzahl unter dem Start-Knopf. Wer gleich beim ersten Versuch 12 oder mehr Punkte erreicht, ist schon ziemlich gut — natürlich ohne zu schummeln.

Hinweis: Das Spiel lässt sich nicht unterbrechen, wenn es einmal gestartet wurde. Die 15 Fragen kommen nacheinander, auch wenn ihr die Dialoge abbrecht — ein Abbruch zählt dann einfach als falsche Antwort. Genau das ist die Eigenart dieser Bauweise: Dialogfenster halten das Script an, bis geantwortet wurde, und geben die Seite erst danach wieder frei.

Wenn ihr Gefallen an Frage-Antwort-Spielen findet, schaut euch auch den Einmaleins-Trainer an, der euch beim Kopfrechnen abfragt, oder Zahlenraten, wo ihr eine gesuchte Zahl einkreisen müsst. Wörter zu erraten ist die Aufgabe beim Galgenmännchen.

Spiele Baujahr 2008 läuft in deinem Browser

Antwortet in den Dialogfenstern jeweils mit a, b, c oder d.

Eingesandt von Benjamin August

So funktioniert das Script

Das Quiz besteht aus drei Teilen: einer Liste mit allen Fragen und Lösungen, einer Schleife, die diese Liste der Reihe nach abfragt, und einem Punktezähler. Im Original war jede Frage eine eigene Funktion, die am Ende die nächste aufrief — fünfzehn fast gleiche Blöcke hintereinander. Hier stehen die Fragen als Daten in einer Liste, und die Abfrage passiert einmal. Am Ablauf ändert das nichts, am Aufwand beim Erweitern sehr viel.

const fragen = [
  { text: "Bei welcher Sportart kann man alle Neune werfen?\n a:Diskuswurf  b:Kegeln …", loesung: "b" },
  { text: "Welches Duo hat zusammen acht Beine?\n a:Ernie und Bert …", loesung: "c" },
  …
];

Das ist ein Array (eine nummerierte Liste) aus Objekten. Jedes Objekt in den geschweiften Klammern hat zwei benannte Felder: text mit der Frage samt Antwortmöglichkeiten und loesung mit dem richtigen Buchstaben. Das \n mitten im Text ist ein Zeilenumbruch — dadurch stehen die vier Antworten im Dialogfenster unter der Frage. Hier fügt ihr auch neue Fragen ein: eine Zeile nach dem Muster der anderen, fertig. Die Höchstpunktzahl passt sich automatisch an, weil das Script mit fragen.length rechnet.

for (let i = 0; i < fragen.length; i++) {
  const antwort = prompt(fragen[i].text);
  if (antwort === fragen[i].loesung) { richtig(); } else { falsch(); }
}

Die for-Schleife zählt i von 0 bis zur letzten Frage hoch und holt sich mit fragen[i] jeweils den nächsten Eintrag. prompt() zeigt ein Eingabefenster und gibt zurück, was getippt wurde — oder null, wenn abgebrochen wird. Da null niemals dem Lösungsbuchstaben entspricht, zählt ein Abbruch schlicht als falsche Antwort. Beachtet: Verglichen wird genau, also zählt nur ein kleines b, kein großes.

function richtig() {
  alert("Das war richtig, weiter so! (1 Punkt)");
  a++;
}

Die Punktzahl steht in der Variablen a, die außerhalb der Funktionen angelegt ist und deshalb die ganze Runde über bestehen bleibt. a++ erhöht sie um eins. prompt() und alert() halten das Script jeweils an, bis das Fenster weggeklickt ist — deshalb kommen Frage und Rückmeldung sauber abwechselnd und nicht alle auf einmal.

function quizStarten() {
  a = 0;
  ausgabe.textContent = "";
  …
  ergebnis();
}

Ganz am Anfang jeder Runde wird der Punktezähler auf 0 zurückgesetzt und die alte Anzeige geleert — sonst würde ein zweiter Durchgang auf dem Ergebnis des ersten aufbauen. Nach der Schleife schreibt ergebnis() die Endpunktzahl in die Ergebnisfläche der Seite, statt sie wie früher in einem weiteren Dialogfenster zu zeigen. Zum Anpassen: Auch die Lobtexte in richtig() und falsch() dürft ihr frei umschreiben.

Script für die eigene Homepage

Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.

Mehr aus der Kategorie Spiele