Anna: Anleitung zum Erstellen eines Quiz/ quizähnlichen Spiels gesucht

Hallo allerseits,

ich habe schon überall herumgegoogelt, aber nichts Brauchbares gefunden, daher frage ich jetzt mal hier:
Und zwar suche ich eine möglichst verständliche und nachvollziehbare Anleitung, um ein Quiz zu erstellen.
Ein einfaches Quiz mit ein paar Multiple-Choice-Fragen habe ich schon erfolgreich hingekriegt, aber das hier soll ein paar Dinge mehr können.

Es soll den Spielern zunächst eine Kategorie-Auswahl ("Obst für 10 Punkte", "Tiere für 50 Punkte" oder sowas) anbieten und dann in der jeweiligen Kategorie eine Frage präsentieren.
Soweit ist das einfach. Aber dann muss es ja weitergehen, und zwar zur nächsten Fragenauswahl. Und da darf natürlich keine schon verwendete Frage dabeisein.

An dem Punkt stecke ich fest. Eine fest vorgegebene Reihenfolge der Fragen wäre leicht hinzukriegen. Aber wie mache ich das, dass eine variable Reihenfolge sich immer irgendetwas aus den noch nicht verwendeten Fragen heraussucht?

Außerdem wäre es toll, wenn der Punktestand mehrerer Spieler verwaltet und nach Möglichkeit übersichtlich angezeigt werden könnte.

Hätte jemand einen Tipp oder einen Link für mich, wo ich für so etwas eine gute Anleitung finde?

Vielen Dank schonmal und Gruß,
Anna

  1. Hello,

    An dem Punkt stecke ich fest. Eine fest vorgegebene Reihenfolge der Fragen wäre leicht hinzukriegen. Aber wie mache ich das, dass eine variable Reihenfolge sich immer irgendetwas aus den noch nicht verwendeten Fragen heraussucht?

    Arbeite mit einer Session.
    Gebe den Fragen eineindeutige Identifier.
    Merke Dir in der Session, welche Frage der Teilnehmer schon hatte. Dafür eignet sich am beten ein Subarray im $_SESSION-Array.

    Nun kannst Du aus dem Fragenpool immer eine neue Frage auswürfeln, in der Session des Teilnehmers nachschauen, ob er diese schon hatte. Wenn sie schon da war, wiederholst Du einfach das Würfeln nochmal.

    Sicherheitshalber solltest Du mitzählen, wie oft Du Treffer erzielst, und diese begrenzen, sodass bei einem Versagen des Zufallsgenerators keine Endlosschleife entsteht und Du einen Logbucheintrag bekommst.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo

      arbeiten »» arbeite
      merken »» merke
      beten »» bete

      aber:

      Geben »» Gib

      vielleicht bin ich doch nicht der einzige, dem es auffällt...

      1. Hello,

        arbeiten »» arbeite
        merken »» merke
        beten »» bete

        aber:

        Geben »» Gib

        Stimmt.
        Der Imperativ singular 2. Person lautet "gib".

        vielleicht bin ich doch nicht der einzige, dem es auffällt...

        Man gewöhnt sich hier oben den Slang so langsam an...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      2. Om nah hoo pez nyeetz, Nicht Nick!

        vielleicht bin ich doch nicht der einzige, dem es auffällt...

        Du bist nicht der einzige, dem das auffällt, aber du solltest solche Kritik auch immer mit einem Zwinkern üben.

        Matthias

        --
        1/z ist kein Blatt Papier.

      3. vielleicht bin ich doch nicht der einzige, dem es auffällt...

        Nee. Aber vielleicht der Einzige? ;-)

    2. Arbeite mit einer Session.
      Gebe den Fragen eineindeutige Identifier.
      Merke Dir in der Session, welche Frage der Teilnehmer schon hatte. Dafür eignet sich am beten ein Subarray im $_SESSION-Array.

      Vielen Dank!
      Diese Begriffe sagen mir jetzt zwar noch nicht so viel... aber jetzt weiß ich immerhin schonmal, wonach ich weiter googeln muss...

      Gruß,
      Anna

    3. Hallo,

      Arbeite mit einer Session.
      Gebe den Fragen eineindeutige Identifier.
      Merke Dir in der Session, welche Frage der Teilnehmer schon hatte. Dafür eignet sich am beten ein Subarray im $_SESSION-Array.

      ja (falls man mit PHP arbeitet :-)).

      Nun kannst Du aus dem Fragenpool immer eine neue Frage auswürfeln, in der Session des Teilnehmers nachschauen, ob er diese schon hatte. Wenn sie schon da war, wiederholst Du einfach das Würfeln nochmal.

      nö, das ist ineffektiv. Das "Würfeln" beschränkt sich einfach auf die Liste der Fragen, die noch nicht gestellt wurden. Ein Wurf genügt somit. Deswegen kann es sinnvoll sein, auch die Liste der noch nicht gestellten Fragen zu führen. Die ausgewürfelte Frage wird anschließend aus dieser Liste entfernt und an die Liste der bereits gestellten Fragen angehängt.

      Freundliche Grüße

      Vinzenz

      1. Hello,

        Arbeite mit einer Session.
        Gebe den Fragen eineindeutige Identifier.
        Merke Dir in der Session, welche Frage der Teilnehmer schon hatte. Dafür eignet sich am beten ein Subarray im $_SESSION-Array.

        ja (falls man mit PHP arbeitet :-)).

        Das geht sicherlich auch mit Perl oder in C. Da heißt dann nur die Session-Variable ander :-D

        Nun kannst Du aus dem Fragenpool immer eine neue Frage auswürfeln, in der Session des Teilnehmers nachschauen, ob er diese schon hatte. Wenn sie schon da war, wiederholst Du einfach das Würfeln nochmal.

        nö, das ist ineffektiv. Das "Würfeln" beschränkt sich einfach auf die Liste der Fragen, die noch nicht gestellt wurden. Ein Wurf genügt somit. Deswegen kann es sinnvoll sein, auch die Liste der noch nicht gestellten Fragen zu führen. Die ausgewürfelte Frage wird anschließend aus dieser Liste entfernt und an die Liste der bereits gestellten Fragen angehängt.

        Es ist aber besonders ineffektiv, mit einem Sieb zu arbeiten, wenn man im Fragenpool sehr viele Fragen hat, mehrere Mitspieler und nur eine kleine Untermenge der Fragen zur Aufgabe werden.

        Man könnte aber mit zwei Tabellen in der Datenbank arbeiten.
        Eine enthält die Gesamtmenge der Fragen und die andere die User-Aufgaben-Paarungen, die schon vorkamen.

        Dann lässt sich das Ganze sicherlich durch eine Abfrage erledigen. Darin bist Du aber besser :-)

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
  2. Hallo,

    Außerdem wäre es toll, wenn der Punktestand mehrerer Spieler verwaltet und nach Möglichkeit übersichtlich angezeigt werden könnte.

    denkst Du bei dieser Anforderung an einen (ewigen) Highscore oder an mehrere Spieler, die in einer Partie gegeneinander spielen? In beiden Fällen nähme ich eine Datenbank zu Hilfe.

    Freundliche Grüße

    Vinzenz

    1. denkst Du bei dieser Anforderung an einen (ewigen) Highscore oder an mehrere Spieler, die in einer Partie gegeneinander spielen? In beiden Fällen nähme ich eine Datenbank zu Hilfe.

      Letzteres. Das soll nur ein je einmal von einer Gruppe zu spielendes Quiz werden.

      Gut, dann werde ich mich mal mit dem Thema Datenbank befassen... danke Dir!

      Gruß,
      Anna

      1. Hallo,

        denkst Du bei dieser Anforderung an einen (ewigen) Highscore oder an mehrere Spieler, die in einer Partie gegeneinander spielen? In beiden Fällen nähme ich eine Datenbank zu Hilfe.

        Letzteres. Das soll nur ein je einmal von einer Gruppe zu spielendes Quiz werden.

        Spielt diese Gruppe am gleichen Rechner (genauer in der gleichen Browsersitzung)? Die Antwort auf diese Frage hat erheblichen Einfluss auf die Umsetzung.

        Freundliche Grüße

        Vinzenz