Hin und wieder kommt man in die Situation, dass man eigentlich was anderes machen sollte, und – schwupps – hat man wieder etwas völlig anderes programmiert, das die Menschheit einen weiteren kleinen Schritt voran bringt. Bei mir war es mal wieder soweit.
I’m with stupid ist ein Spiel, das man auch gut in Internetforen spielen kann. Die Regeln sind simpel:
Da Rulez1
In jeder Runde stellt die Spielleitung eine bestimmte Anzahl Fragen. Die Mitspielerinnen und Mitspieler geben nun geheim ihre Antworten ab.
Haben alle ihre Antworten abgegeben, so wird ausgezählt: Jede Antwort ist genau so viele Punkte wert, wie oft sie insgesamt abgegeben wurde – unabhängig davon, ob sie wahr ist. Ein Beispiel:
Frage: Welcher ist der größte Kontinent?
Antworten: 5x Afrika, 3x Asien, 1x Antarktis, 1x Pangäa.
Wer ‘Afrika’ geantwortet hat, bekommt also 5 Punkte gutgeschrieben, wer ‘Asien geantwortet hat 3 Punkte, ‘Antarktis’ und ‘Pangäa’ geben je 1 Punkt.
Die Punkte werden addiert und somit ein Rundensieger bzw. eine Rundensiegerin ermittelt (halt wer in der Runde die höchste Punktzahl hat, is klar).
Wer am Ende des Spiels die meisten Punkte hat, gewinnt.
Natürlich sagt vor Ende einer Runde niemand, was er/sie geantwortet hat, um die Spannung nicht zu zerstören. Bei ähnlichen Antworten (z. B. ‘Holland’/’Niederlande’) entscheidet die Spielleitung in ihrer allgütigen Weisheit, ob die Antworten zusammengefasst oder als unterschiedlich behandelt werden.
Das Problem
Wie man sich leicht vor Augen führen kann, ist die manuelle Auswertung mordsaufwändig: Für jede Person die mitspielt müssen die Antworten zur Berechnung der Punktzahlen zunächst mitgezählt werden, dann die Punktzahlen für jede Antwort errechnet und anschließend rückwärts die errechneten Punktzahlen für jede Antwort den entsprechenden Mitspielerinnen und Mitspielern gutgeschrieben werden. Bei X Personen bedeutet eine Änderung von einem einzigen Wert schlimmstenfalls die Anpassung von O(X) weiteren Werten. Vor Rundenschluss schon mal Teilergebnisse berechnen ist also auch nicht sinnvoll.
Lässt sich das Ganze automatisieren? Okay, das war eine rhetorische Frage. Eine kurze Recherche förderte leider keine fertigen out-of-the-box-I’m-with-stupid-Auswertungslösungen zu Tage. Doch die Problemstellung hatte mich gepackt, ein bedienbares Programm musste her.
Die Lösung
I’m with stupid schreit förmlich nach einer Datenbankanwendung mit Aggregatsfunktionen und Gruppierung (COUNT(), SUM() und GROUP BY) – SQL ist schon was tolles. 6 Datenbanktabellen ein bisschen PHP drumrum, und fertig ist die Multiuser-Multigame-I’m-with-stupid-Umgebung für die faule Spielleitung. Es folgen ein paar Screenshots. Geplant ist, das noch irgendwie öffentlich spielbar zugänglich zu machen, dazu muss ich allerdings noch austüfteln, auf welchem Server unter welcher Domain das laufen soll.
Die Entwicklung war schon spaßig. Das Ganze gibt es bereits im Quellcode auf GitHub, allerdings ist da eigentlich noch ein Refactoring nötig. Aber hey, es läuft 😉
Update: Natürlich will man auch wissen, wie viele Punkte die Antworten gebracht haben…
Update, 13.09.2013: Unter http://hscmi.de/iws/ kann man sich das ganze nun auch live und in Farbe ansehen.
- Ich wollte das schon immer mal schreiben! ↩