Das Logelium besteht aus einer Ansammlung von Programmen, Skripten und grafischen Elementen, welche mehr oder weniger schlau miteinander wirken. Diese Modularisierung soll zum einen redundante Funktionen vermeiden zum anderen den kritischen algorithmischen Kern, der die Lösungen berechnet, so klein wie möglich halten. Noch wichtiger ist dabei die Erweiterbarkeit einfach und konfliktfrei zu gestalten. Durch Hinzufügen entsprechender Definitionsdateien werden weitere Typen von Puzzeln in das Logelium aufgenommen, ohne dass der Kern-Algorithmus angepasst werden muß.
Dies Kapitel gibt eine ganz kurze Übersicht über die Komponenten des Logeliums, die natürlich nicht ausreicht, um die Funktionsweise vollständig zu verstehen. Eine ausführliche Beschreibung ist ein Buch für sich. Es geht mir auch mehr darum, einige Ergebnisse zu zeigen, als eine für viele doch langweilige Vorlesung über Programmiertechnik zu halten.
Die Logelium Architektur ist extrem modular aufgebaut und unterstützt z.Zt. etwa einhundert verschiedene Puzzel Definitionen. Zunächt gibt es einen statischen Teil, welcher die Definitionen eines Puzzels mit den Definitionen der Gitter und Figuren ausmacht. Für die so erzeugten Puzzel kann man dann Formen entwerfen, welche dann mit dem eigentlichen Kern-Algorithmus gelöst werden. Die resultierenden Lösungen sind in einer Textliste gespeichert und können dann mit dem Grafik-Generator anschaulich gemacht werden.
Gitter Definition | Für jede Logelium Puzzel Familie gibt es eine gemeinsame Gitterdefinition, die i.A. manuell erstellt wird. Das Pentomino und alle anderen Figurensätze aus Quadraten bilden z.B. die Familie Mino. Die Gitterdefinition enthält alle gemeinsamen Eigenschaften dieser Familie. |
Figuren Generator | Hier liegt die meiste Arbeit, wenn ein neuer Puzzeltyp konfiguriert werden soll. Neben der Figuren Definition werden auch ein oder mehrere Visio-Master mit den Vorlagen für die Figurenstempel erzeugt. Der Figurengenerator ist ein wichtiges Hilfsmittel zum Erzeugen der Figurendefinition. |
Figuren Definition | Die Figurendefinition verweist auf genau eine Gitterdefinition und
beschreibt alle weiteren Eigenschaften eines Figurensatzes, z.B. Pentomino.
Für jede Art von Puzzle wird eine Figurendefinition einmalig erstellt.
Das ist nur für sehr einfache Figurensätze manuell möglich.
In der Regel müssen die Figuren durch eine Anzahl ad-hoc Perl-Programme
generiert werden. |
Form Definition | Die Formdefininition verweist auf genau eine Figurendefinition mit
einem Satz von Figuren. Die zu lösende Form wird in einer Textdatei
beschrieben und parametrisiert. Die Syntax ist sehr einfach. (Beispiel) |
Lösungskern | Dies ein Konsolenprogramm, welches die Form-, Figuren- und Gitter-Definition
einliest und eine Liste aller Lösungen erstellt. Es arbeitet ausschließlich
mit Textdateien und ist daher völlig unabhängig von der Systemumgebung.
Als Ergebnis liefert es eine Lösungsliste und ein Logfile. |
Lösungsliste | Die Lösungsliste ist eine Textdatei, welche die abstakte Beschreibung aller Lösungen und des Umrisses der Form enthält. (Beispiel) |
Grafik Generator | Um aus der textuellen Liste der gefundenen Lösungen Grafiken zu
zeichnen, dient ein weiteres Perl-Programm. Dieses wandelt die Lösungen
in eine Visio-Grafik um, wobei einer der zur Figurendefinition passende
Stempelsätze verwendet wird (ein Beispiel als PDF).
Optional kann auch SVG Quelltext erzeugt werden. |