Freitag, 28. März 2014

Realisierung - Spielfeld berechnen

Die Featureliste war erstellt. Jetzt konnte ich mich um die Umsetzung kümmern. Ich hatte mir vorgestellt, dass eine Spielrunde drei Minuten dauern sollte, und dass zwischen den Spielen eine 30 Sekunden lange Pause sein sollte. In diesen 30 Sekunden muss demnach ein neues Spiel berechnet, die Ranglisten in der Datenbank aktualisiert, und das Ergebnis des letzten Spieles angezeigt werden. Das bedeutet, dass mir für die Berechnung eines neuen Spieles weniger als 30 Sekunden blieben. Kein Problem, dachte ich mir. Ich bin ja nicht der erste, der das versucht. Und Anderen ist das schließlich schon gelungen.

Spielfeld auswürfeln


Jedes Spiel besteht aus einem Quadrat mit 16 zufälligen Buchstaben. Zufällig? Nein, nicht ganz. Es sollen ja schließlich einige Worte auffindbar sein. Also habe ich mir von Wikipedia eine Tabelle mit Häufigkeitsverteilungen besorgt, die ich bei der Ziehung der Buchstaben berücksichtige.

RangBuchstabeHäufigkeit
1E17,40 %
2N9,78 %
3I7,55 %
4S7,27 %
5R7,00 %
6A6,51 %
7T6,15 %
8D5,08 %
9H4,76 %
RangBuchstabeHäufigkeit
10U4,35 %
11L3,44 %
12C3,06 %
13G3,01 %
14M2,53 %
15O2,51 %
16B1,89 %
17W1,89 %
18F1,66 %
RangBuchstabeHäufigkeit
19K1,21 %
20Z1,13 %
21P0,79 %
22V0,67 %
23J0,27 %
24Y0,04 %
25X0,03 %
26Q0,02 %


Außerdem achte ich darauf, dass in einem Spiel mindestens zwei, aber nie mehr als sechs Vokale vorkommen. Damit ist die Wahrscheinlichkeit sehr hoch, dass jedes Spiel einige, aber nicht zu viele Lösungswörter hat.

Spielfeld lösen


Einfach alle Kombinationen durchzuprobieren, und im Wörterbuch nachzuschlagen, war erwartungsgemäß viel zu langsam. Aber dieser brutale Ansatz ist auch gar nicht notwendig. Denn in der Regel steht schon früh fest, dass es keine Wörter gibt, die mit den Buchstaben der zu untersuchenden Kette beginnen. Am Beispiel des Logos von Sechzehn beginnt die Suche mit R, und kann bei RP schon abbrechen. Es gibt keine Wörter die damit anfangen. Als nächstes muss die Kombination RS untersucht werden, für die auch keine Wörter existieren. Also weiter mit RE, RES und RESZ - hoppla schon wieder eine Sackgasse. Auf diese Weise sind letztendlich nur ein verschwindend geringer Bruchteil aller theoretisch möglichen Buchstabenkombinationen tatsächlich zu untersuchen. Die Lösung eines Spielfelds liegt dadurch in der Regel deutlich unter fünf Sekunden.

Der erste Stolperstein auf dem Weg zu einem spielbaren Sechzehn ist ausgeräumt. Jetzt konnte ich also daran gehen, einen Einzelspielermodus zu programmieren, in dem alles Notwendige für das Eingeben und Prüfen von Wörtern vorhanden ist.

Keine Kommentare:

Kommentar posten