Basis-Quiz für Director-Einsteiger

Was tut das Ding?
Es ist die Basis für ein kleines Quiz, bei dem sowohl die Reihenfolge der Fragen als auch die der Antworten zufällig sind.

Normalerweise macht man ein Quiz so: Man steckt alle Fragen, Antworten, Bildnamen usw in eine (Excel-)Tabelle und bastelt ein möglichst universelles Scriptchen herum, das das Ganze dann abspielt. Für einen Anfänger ist das aber nicht so einfach, weil man nicht so leicht raufkommt, wo man den Fehler überhaupt suchen soll.
Darum habe ich mich hier für eine Variante entschieden, bei der man etwas deutlicher sieht, was da eigentlich passiert.

Vorab: Das ist bewußt kein Musterbeispiel für eleganten Code. Feste SpriteNummern sind pfui, aber einfach besser verständlich. Auch anderes habe ich sehr einfach gehalten und mal mehrere Schritte gemacht, wo es einer auch getan hätte.


Zur Sache:

Pro Frage muss ein Frame gestaltet werden, also die nötigen Bilder usw im Score positioniert werden. Prinzipiell kann also jede Frage anders aussehen; mehr oder weniger Bilder(=Kanäle) und begleitenden Text, Videos, Audio usw enthalten. Damit ist das Movie zwar nicht sehr "elegant", aber sehr variabel einsetzbar.

Die Fragen und Antworten müssen in einem Textfeld im Sprite-Kanal 1 sein, das so aus der Bühne geschoben ist, dass man es nicht sieht. Das Textfeld muss jeweils in einer Zeile enthalten: Frage - richtige Antwort - falsche Antworten1-3, also zusammen 5 Zeilen.

Die verschiedenen Komponenten:
Das Script "QuizZeug" enthält StartMovie, StopMovie und zuNaechsterFrage.
Die Reihenfolge der Fragen wird in StartMovie zufällig festgelegt und in der Liste gFragenreihenfolge abgelegt. StopMovie räumt auf.
Der Handler "zuNaechsterFrage" bewirkt was der Name sagt: Er startet die nächste Frage.

Im Frame "Start" sitzt das Frame-Verhalten "QuizStarten", bis dahin könnte ein Intro oder dgl sein. Hier wird das Quiz in Gang gesetzt, indem der erste Frame in der Zufallsliste angesprungen wird.

Das Verhalten "fragestellen" ist am Sprite 1 festgemacht. Es bewirkt bei beginSprite, dass der Text in Sprite 1 in 5 Texte zerlegt wird. Diese 5 Texte werden in die Felder "Frage" und Antwort1 - Antwort4 gelegt, die Antworten in zufälliger Reihenfolge.
Die globale Variable gRichtigeAntwort enthält die Nummer der richtigen Antwort.

Das Verhalten "AntwortSprite" wird an den Sprites festgemacht, auf die man klicken muss. Hier ist das der Text mit der Antwort, es kann aber auch ein Schalter oder dergleichen sein. Wichtig: Es müssen hier 4 Antworten sein und die Sprites müssen Kanal 11-14 belegen. Aber das kann man natürlich ändern.
Wesentlich ist:
AntwortNr = s - 10 --Die Sprites sind in 11 - 14, als minus 10
if AntwortNr = gRichtigeAntwort then...

So wird entschieden, ob die Antwort richtig oder Falsch war.

Ferner wird der Blend von Sprite 20 auf 100 gesetzt und dessen Member entsprechend ausgetauscht.

Eigentlich könnte hier schon die nächste Frage gestellt werden, wir wollen aber eine kleine Pause machen, deswegen wird im Frame-Verhalten "Warten" gewartet, bis sprite(20).blend wieder 0 ist und erst dann der Handler "zuNaechsterFrage" aufgerufen. Deswegen auch die Teilung in mehrere Handler.


Was man ändern könnte:
Wenn man will, dass alle Fragen richtig beantwortet werden müssen, könnte man die Falsch beantworteten wieder hinten an die Liste gFragenreihenfolge anhängen. Man bräuchte aber dann eine weitere Variable, in der die letzte Lösung gespeichert ist. In der Praxis sollte man auch notieren, wie oft Fragen schon wieder angehängt wurden, sonst würde das Quiz ewig dauern.

Da die Nummer der richtigen Antwort in einer globalen Variablen (gRichtigeAntwort) liegt, könnte auch leicht mit einem Keydown -> value(the key) geantwortet werden.

Haariger wäre es, wenn pro Frage mehrere Frames möglich sein sollen. Dann müsste man entweder mit Vielfachen arbeiten - also zB immer 5 Frames, oder nummerierte Marker verwenden.

 


Download: Dir 8.5
MiniQuiz.zip

Weitere Director Tutorials und Beispiele:

3D-Lingo:
Gesunde Natur für Director Entwickler

Trotz/Mit Lingo:
Movie als Video ausgeben

3D-Lingo:
Kleine Slideshow

Vectorforms:
Tortendiagramme mit Director

Playlist zusammentragen:
Filescanner (mp3)

Lingo für Einsteiger:
Kleines Quiz

Lingo-Basics:
Zufälle mit random()

Vectorforms:
Zappelnder Pfeil

Quads:
Bilder zerlegen und verzerren

Statistik:
Listen glätten und darstellen

Mini-Google
Schnelle Suche durch Indizierung

Zeichnen:
Schnellere Linien mit Vectorforms

Onlinegame:
Pagman mit zufälligem Spielfeld

 

  zurück    [ home ]   [ interactive design ]   [ tutorials ]   [ praxis ]

www.beesign.com - interactive design in wien