[log·in]


dipl· psych·  m·eik michalke
linie
topimage topimage topimage topimage topimage topimage
[blog] · [psychologie] · [hacking] · [faq] · [kontakt] · [home]
 
weblog.
psychologische ausbildung.
kreatives problemlösen.
häufig gestellte fragen.
so erreichen sie mich.
zurück zur startseite.
hacking: textanalyse mit R
hacking: multiple choice auswertung mit R
hacking: XML parser für R
hacking: maintanance tool für R-pakete
hacking: gui für R
hacking: bash-generiertes jeaopardy

hacking

flattr this!

ircotofun -- ein bash-generiertes html-jeopardy

ich brauchte für eine feier meiner arbeitsgruppe mal ein jeopardy. eine suche im netz ergab viele gute ansätze, aber keiner gefiel mir so richtig. da ich eh gerne an so etwas herumbastele, hab ich es selbst gebaut -- und möchte es natürlich mit euch teilen :-)

ircotofun how-to

es sollte möglichst flexibel und anforderungsarm sein, sowie auf allen plattformen laufen. bei letzterem ging ich einen kompromiß ein: das spiel selbst ist tatsächlich plattformunabhängig, denn wie das beispiel demonstriert handelt es sich um eine einfache html-datei (mit css und etwas javascript), die in gängigen browsern funktionieren sollte. allerdings wird die herstellung eines eigenen spielfeldes von einem bash-script erledigt, denn das war das werkzeug, das mir direkt zur verfügung stand. wer also sein eigenes jeopardy bauen will, braucht eine bash, die standard-shell unter gnu/linux. aber ich denke, diese hürde ist nicht allzu hoch ;-)

ein eigenes jeopardy erstellen

der ablauf in kurz: ordner für kategorien und punkte erstellen, darin dateien für fragen und antworten ablegen, script laufen lassen -- fertig.
etwas ausführlicher: um sich ein eigenes jeopardy zu bauen, benötigt man neben dem script und einer bash, in der man es dann laufen läßt, eigentlich nur eine vorstellung von den gewünschten kategorien, und natürlich die dazugehörenden fragen und antworten. diese können entweder in textform oder als png-grafik vorliegen.
es ist denkbar simpel: man macht sich ein verzeichnis für das zu bauende spiel. in diesem verzeichnis erzeugt man wiederum für jede kategorie ein verzeichnis, wobei man auf leer- und sonderzeichen verzichten sollte (unterstriche werden in der anzeige durch leerzeichen ersetzt). in jedem kategorien-ordner erzeugt man wiederum ordner, und zwar für jedes frage-antwort-paar einen, benannt nach dem jeweiligen punktwert (z.b. "200"). in jedes dieser verzeichnisse kommt nun eine frage und eine antwort, und zwar jeweils als datei mit namen "question" bzw. "answer", mit der dateiendung ".html", wenn es sich um text handelt, oder ".png" wenn es eine png-grafik ist. wie die ".html"-endung vermuten läßt, kann man den text dabei gerne mit html-tags aufpeppen, er wird ungeändert in das spiel übernommen.
die anzahl der kategorien ist theoretisch beliebig (vier bis sechs sind wohl am sinnvollsten). gleiches gilt für die anzahl der fragen, mit der einschränkung, daß in allen kategorien die gleichen punkteordner vergeben werden müssen.
wenn alles soweit vorbereitet ist, wechselt man in den hauptordner und startet dort das script -- und sofern es keine fehler gab, war's das auch schon: die entstandene datei "ircotofun.html" enthält das gesamte spiel. naja, solange man keine grafiken verwendet hat, die muß man mit ihrer ordnerstruktur ebenfalls bereithalten. wenn man nur text verwendet hat, liegt aber tatsächlich alles in dem einen html-file.
übrigens läßt sich das standard-spielverhalten umstellen: per default werden die antworten gezeigt und man muß die dazugehörende frage generieren. wird das script mit der option "--questions" gestartet, kehrt sich dieses verhalten um.

bedienung, bitte

es sollte eigentlich relativ intuitiv bedienbar sein: das script geht von vier parteien aus, die durch die farben in den ecken repräsentiert sind. wenn eine partei eine frage gewählt hat, klickt man einfach auf den entsprechenden wert. es erscheint die antwort (oder frage), man kann dann bei bedarf beliebig oft zwischen frage und antwort umschalten. wenn eine partei ein item richtig löst, kann man die punkte durch klick auf das entsprechend eingefärbte punktfeld zu ihrem kontostand addieren. wenn es niemand schafft, kommt man ohne punktevergabe zurück zum spiel. in jedem fall ist das eben besuchte feld nun deaktiviert.

zentrale fragen

der generierte html-code ist pragmatisch entstanden. ich habe es auf dem üblichen html/css-weg nicht geschafft, allen getesteten browsern (firefox, opera, konqueror und internet explorer) das gleiche verhalten zu entlocken. sie scheiterten in unterschiedlichen kombinationen daran, die tabellen zu zentrieren (internet explorer) oder die zellendimensionen für die fragen und antworten korrekt darzustellen (opera, firefox -- beide scheinen beim rendern stur einige css-argumente zu ignorieren, wenn sie auf tabellenzellen bezogen sind, die mit "display: none" zunächst ausgeblendet bleiben. die gleichen zellen werden jedenfalls bei sofortiger sichtbarkeit korrekt dargestellt). nur der konqueror stellte zu jedem zeitpunkt alle tabellen wie gewünscht dar, aber aufgrund seiner leider geringen verbreitung wollte ich ihn nicht obligatorisch machen.

fehlende features

obwohl das spiel dank css und javascript schon dynamischer läuft, als man es von einer einzigen html-datei vielleicht erwarten würde, fehlen doch noch ein paar praktische features. beispielsweise gehe ich fest von vier mitspieler/inne/n aus. natürlich kann man einfach ein oder zwei der punktfelder ingnorieren, aber schicker wäre doch eine dynamische wahl. hintergrundmusik ist rudimentär implementiert, aber abgeschaltet: wer ein soundfile hat, kann es als sound.wav in den spieleordner legen und die entsprechenen kommentarzeichen um die embed-tags im erzeugten html-file entfernen.
das script tut soweit alles, was ich gerade brauchte. da es unter der gpl lizenziert ist, steht eigenen weiterentwicklungen nichts im wege :-)

the name of the game

tja, der name... steht für etwas ganz ähnliches wie "i really couldn't think of a frelling name"...

  © 2005—2013  ·  stand: 05.05.2013, 21:36:51  ·  [drucken?]  ·  [impressum]