Javascript
 

 Six Jack

Diese Seite bietet Ihnen das kostenlose Onlinespiel "Six Jack", bei dem es darum geht, möglichst als erster alle Zahlen von 1 bis 6 zu ziehen. Man darf ziehen so lange man will. Wenn allerdings eine "STOPP"-Karte statt einer Zahlenkarte kommt, sind alle in diesem Zug gesammelten Zahlenkarten verloren.

Das Spiel ist angelehnt an Schokohexe.
Mehr Details zum Spiel und der Bedienung unten.

Einstellungen
Anzahl Spieler:
einer davon ist der Computer:
Popup bei Spielerwechsel:
automatisch ziehen bis erste brauchbare:
Bestes Spielergebnis
Name:
Datum:
Runden:
Aktueller Spielzug
Am Zug:
Ablagestapel:
Runden:
Sichere Karten der Spieler

Spielregeln

Das Spiel ist angelehnt an die Spielidee von Schokohexe der Fa. Ravensburger.
Dabei hat man einen Stapel Karten, der einerseits die sechs verschiedenen Zutaten zur Herstellung von Schokolade enthält, andererseits aber auch Schokohexen, die einem das Weiterziehen verbieten und die in diesem Zug gewonnenen Zutaten wieder vernichten. Ziel des Spiels ist es, als erster von jeder Zutat eine Karte beisammen zu haben.
Dafür zieht man so oft vom Kartenstapel wie man möchte. Hat man, während man an der Reihe war, keine Schokohexe gezogen, darf man alle gefundenen Zutaten behalten, andernfalls verfallen sie.

In dieser Javascript-Implementierung des Spiels sind die Zutatenkarten durch die Zahlen 1 bis 6 und die Schokohexen durch Stopp-Schilder ersetzt:
Karte 1 Karte 2 Karte 3 Karte 4 Karte 5 Karte 6 STOPP-Karte
Im Bereich "Aktueller Spielzug" kann man oben links sehen, welcher Spieler an der Reihe ist.
Dieser klickt so oft er möchte auf die Schaltfläche .
Gezogene Zutatenkarten werden in der Reihe darunter so lange gesammelt, bis der Spieler auf die Schaltfläche klickt; dann werden sie in seine Zeile im Bereich "Sichere Karten der Spieler" übertragen.
Zieht der Spieler jedoch, bevor er auf "STOPP!" klickt, eine STOPP-Karte, werden die in diesem Zug gezogenen Karten gelöscht.
In beiden Fällen ist danach der nächste Spieler an der Reihe.
Wird eine Zutatenkarte gezogen, die der Spieler nicht braucht, weil er sie schon hat, so wandert diese auf den Ablagestapel.

Einstellungen

Vor Beginn des Spiels ist im Bereich "Einstellungen" im Feld "Anzahl Spieler" einzugeben, wie viele Spieler mitspielen sollen. Die Spielerzahl kann zwischen 1 und 9 liegen.
Einer der Mitspieler kann der Computer sein; dazu muss das Kontrollkästchen "einer davon ist der Computer" angehakt werden.
Die Namen der Spieler können - bei mehr als zwei Spielern nach dem Spielstart - hinter den Kartenzeilen im Bereich "Sichere Karten der Spieler" eingeben werden. Diese Namen werden zum einen für die Anzeige, welcher Spieler am Zug ist, gebraucht. Zum anderen wird ggf. der Name des Gewinners als Highscore-Cookie gespeichert (s.u.)
Ein Haken hinter "Popup bei Spielerwechsel" bewirkt, dass jedes Mal, wenn der nächste Spieler an der Reihe ist, ein kleines Fenster erscheint, das den Namen des nächsten Spielers nennt und das mit [OK] geschlossen werden muss, bevor weitergespielt werden kann. Dies kann insbesondere in Verbindung mit folgender Option hilfreich sein:
Ein Haken hinter "automatisch ziehen bis erste brauchbare" bewirkt, dass jeder Spieler wenn er an die Reihe kommt, zunächst nicht auf "Ziehen!" klicken muss; der Computer zieht so lange automatisch für ihn, bis eine brauchbare Karte erscheint. Nun kann es aber auch sein, dass der Computer eine STOPP-Karte zieht, bevor eine brauchbare Karte kommt. Dann ist natürlich wieder der nächste Spieler an der Reihe, für den der Computer ebenfalls automatisch zieht. Da auch beim nächsten Spieler wieder eine STOPP-Karte kommen kann, ist es bei dieser Einstellung dem Zufall überlassen, welcher Spieler als erstes wieder eine Schaltfläche selbst betätigen muss. Man muss also immer sehr genau darauf achten, wer an der Reihe ist.
Aus diesem Grund erscheint beim Spielstart eine entsprechende Warnmeldung, wenn das Kontrollkästchen für automatisches Ziehen aktiviert und gleichzeitig dasjenige für Popup bei Spielerwechsel deaktiviert ist.

Nach dem Start des Spiels duch Klick auf die Schaltfläche können nur noch die beiden letztgenannten Optionen verändert werden. Die Spieleranzahl und das Mitspielen des Computers können erst nach Spielende wieder für ein neues Spiel verändert werden.

Highscore

Während des Spiels werden oben rechts im Bereich "Aktueller Spielzug" die Runden gezählt. Je weniger Runden zum Sieg nötig waren, je seltener der Sieger also eine STOPP-Karte gezogen hat, desto "besser" sein Spielergebnis. Ist es das erste auf diesem Computer gespielte Spiel oder ist das Ergebnis besser als das angezeigte beste Spielergebnis, so wird der Spielername zusammen mit Datum, Uhrzeit und Anzahl benötigter Runden in einem Cookie gespeichert. Die Gültigkeitsdauer dieses Cookies beträgt ein Jahr.

Warnmeldungen

Das Programm gibt folgende Meldungen aus:

Spieldaten

Das Originalspiel Schokohexe enthält 60 Karten. Darin sind 20 Schokohexen enthalten. Vier Zutaten sind mit jeweils sieben Karten vertreten, zwei nur mit sechs. Beim ersten Spielzug ist die Wahrscheinlichkeit für eine Schokohexe also ein Drittel, die für eine brauchbare Zutat zwei Drittel, weil man ja jede Zutat verwenden kann.
Die Wahrscheinlichkeiten verändern sich, je nachdem, welche Karten schon gezogen wurden und je nachdem, welche (vor allem: wie viele) Zutaten man noch braucht. Je mehr Zutaten man selbst und auch die Mitspieler schon haben, desto geringer wird die Wahrscheinlichkeit, noch eine passende zu finden; zum einen, weil u.U. (besonders nachdem der Ablagestapel wieder neu zum Ziehstapel geworden ist) der Anteil Zutatenkarten im Stapel kleiner geworden ist, zum anderen aber auch - und das dürfte der dominierende Effekt sein - weil nur noch weniger Zutatenkartensorten brauchbar sind. Das Verhältnis der Wahrscheinlichkeiten für eine Schokohexe bzw. eine brauchbare Karte, also das Risiko-Nutzen-Verhältnis eines weiteren Zuges wird demnach ungünstiger.

In dieser Onlinevariante SixJack des Schokohexespiels werden diese Verhältnisse vereinfacht nachgebildet:
Es gibt keinen Kartenstapel. Jedes Mal, wenn eine Karte gezogen wird, haben die sieben Möglichkeiten, was für eine Karte das ist, gleiche Wahrscheinlichkeiten: Jede Zutatenkarte (1 bis 6) hat die Wahrscheinlichkeit ein Neuntel, die Stopp-Karte hat die Wahrscheinlichkeit ein Drittel.
Programmtechnisch wird dies mit dem Befehl Math.round(Math.random()*9+.5) erreicht. Dieser Ausdruck kann die Werte 1, 2, 3, ..., 9 annehmen. Die Werte 1 bis 6 entsprechen den Zutatenkarten, 7 bis 9 ergibt eine Stopp-Karte. (Anmerkung: Ich gehe davon aus, dass die mit Math.random() erzeugte Pseudo-Zufallszahl gleichverteilt ist, habe es aber nicht verifiziert.)
Auch bei dieser Vereinfachung verringert sich nach wie vor die Wahrscheinlichkeit, eine brauchbare Karte zu ziehen, in Abhängigkeit der Karten, die man schon hat. Allerdings ist diese Wahrscheinlichkeit nun unabhängig davon, welche und wie viele Karten bereits gezogen wurden, d.h. wie viele Schokohexen (STOPP-Karten) schon gespielt wurden oder wie viele Zutatenkarten die anderen Spieler schon haben.

Computerspiel-Strategie

Die Strategie, mit der der Computer spielt, wird in einer Array-Variablen gespeichert: Man kann damit in Abhängigkeit von der schon vorhandenen Anzahl Zutatenkarten einstellen, nach wie vielen in einem Zug gezogenen brauchbaren Karten der Computer STOPP! sagt. Der Index des Arrays ist die Anzahl der schon (im gesicherten Bereich) vorhandenen Karten, die in diesem Element gespeicherte Zahl ist die Anzahl brauchbarer Karten, die er in einem Zug gewinnen will, ohne STOPP! zu sagen.
strategie = new Array(3,x,x,2,x,1) bedeutet also beispielsweise, dass der Computer
wenn er null Karten hat, mindestens drei in einem Zug gewinnen will (die Array-Indizes beginnen bei 0 zu zählen),
wenn er bereits drei hat, mindestens zwei in einem Zug gewinnen will, und
wenn er fünf hat eine gewinnen will.
Der letzte Wert ist natürlich eigentlich überflüssig, weil das Spiel bei sechs gewonnen Karten ohnehin zuende ist und keine STOPP!-Taste mehr gedrückt werden muss. Er ist nur wegen der einfacheren Programmierung enthalten.
Die mit x gefüllten Elemente des Arrays können in diesem Beispiel irgendwie gefüllt sein, denn welche Elemente benutzt werden, hängt ja von den Einträgen in den niedriger indizierten Elementen ab: Da der Eintrag strategie[0]=3 ist, hat der Computer, wenn er das zweite Mal an der Reihe ist, entweder wieder null Karten, weil es ihm in der letzten Runde nicht gelungen ist, die gewünschten drei Karten zu ziehen, oder er hat genau die gewünschten drei Karten. Eine oder zwei könnte er nur dann haben, wenn strategie[0] entweder eins oder zwei wäre.
Mit o.g. Beispielstrategie, muss der Computer mindestens drei Runden spielen.

Optimale Strategie

Ich habe experimentell verifiziert, dass die o.g. und im Programm implementierte Strategie tatsächlich die optimale ist. Der rechnerische Nachweis war mir zu aufwendig. Ich würde mich sehr freuen, wenn jemand mal diese Rechnung anstellen und mir zusenden würde!

In nachstehender Tabelle sind die Ergebnisse der Untersuchung für verschiedene Strategien aufgeführt. Sie basieren auf jeweils 50 durchgeführten Spielen:

Strategie 6,x,x,x,x,x 5,x,x,x,x,1 4,x,x,x,2,x 3,x,x,3,x,x 3,x,x,2,x,1 1,2,x,3,x,x 1) 2,x,2,x,2,x 2,x2,x,1,1 2,x,1,1,1,1 1,1,1,1,1,1
Theoretische Mindestanzahl Runden 1 2 3 4 5 6
Mittlere Anzahl benötigter Runden 66,52 29,18 15,60 27,40 11,58 28,76 18,62 12,80 12,10 12,78
Minimum 2 2 4 2 3 5 4 5 6 7
Maximum 247 100 40 77 25 113 58 32 39 30
Standardabweichung 54,08 24,71 8,56 18,43 5,73 24,05 11,20 6,37 5,55 4,08
Rang 10 9 5 7 1 8 6 4 2 3

1) Diese Strategie wurde nur gespielt, um die Richtigkeit der Überlegung zu bestätigen, dass die Aussichten, eine brauchbare Karte zu ziehen, mit der Anzahl der schon gewonnenen Karten schlechter werden.

Wer die gesamten Daten als Excel-Tabelle laden möchte, kann das hier tun.

Spielname

Aus Urheberrechtsgründen konnte und wollte ich weder die Original-Zutaten- und Hexenbilder noch den Original-Spielnamen verwenden.

Da es zum einen darum geht, sechs Karten zu gewinnen, das Spiel zum anderen Ähnlichkeit mit Black Jack (17 und 4) hat, weil man ja auch Karten ziehen muss, ohne dabei ein Verbot zu verletzen, habe ich diese beiden Namen zu Six Jack zusammengesetzt.