Curu-Dokumentation
Inhalt
Einführung
Das Programm wurde geschrieben, um mit den räumlichen kombinatorischen
Puzzles Rubik-Würfel (auch bekannt unter dem Namen Magischer
Würfel), MiniTet und Stern, interaktiv am Rechner zu
spielen und diese lösen zu lassen.
Es entstand 1999 als Projektarbeit
im Informatikstudium an der
Martin-Luther-Universität Halle-Wittenberg.
Einige Fähigkeiten
- realistische perspektivische Darstellung der Puzzles
- beliebig viele Puzzles können gleichzeitig bearbeitet werden
- es ist möglich, in den bereits durchgeführten Zügen vor-
und zurückzublättern
- Stellungen können abgespeichert und wieder geladen werden
- Mausbedienung aller Funktionen
- optimaler Lösungsalgorithmus für MiniTet und Stern
- Fenster mit veränderbaren Größen
Voraussetzungen
Aufgrund der aufwendigen Graphik sollte ein schneller Rechner (möglichst
> 200MHz) mit guter Graphik-Karte (evtl. mit OpenGL-Unterstützung)
vorhanden sein.
Windows (95b / 98 / NT)
Hier ist eine erneute Übersetzung des Programms nicht mehr nötig. Das
entsprechende Programm ist bereits im Archiv enthalten.
Folgende dll's werden benötigt:
- OpenGL32.dll
- glu32.dll
- glut32.dll
X11-Systeme (UNIX, Linux, Solaris, ...)
Zum Übersetzen der Programme wird ein C++-Compiler (z.B. GNU-C) benötigt.
Außerdem müssen OpenGL oder Mesa, GLUT (GL Utility Toolkit)
und die Standard-C++-Bibliotheken installiert sein.
Installation
Windows (95b / 98 / NT)
- Legen Sie ein neues Verzeichnis (z.B. "Curu") auf ihrer Festplatte an.
- Entpacken Sie das ZIP-Archiv in Ihr neu angelegtes Verzeichnis.
- Sollten Sie kein Interesse an den Programmtexten haben, können Sie das
Verzeichnis "src" getrost löschen.
- Falls sich in Ihrem "C:\Windows\System"-Verzeichnis noch keine glut32.dll
befindet, kopieren Sie diese aus dem Verzeichnis "Curu\dll" dorthin.
- Erstellen Sie ggf. eine Verknüpfung von "Curu.exe" in Ihr Start-Menü
oder auf Ihren Desktop.
Die Installation ist damit beendet.
X11-Systeme (UNIX, Linux, Solaris, ...)
- Legen Sie ein neues Verzeichnis (z.B. "Curu") auf ihrer Festplatte an.
- Entpacken Sie das ZIP-Archiv in Ihr neu angelegtes Verzeichnis.
- Wechseln Sie in das Verzeichnis "src".
- Edieren Sie das "Makefile" wie folgt: (nähere Erläuterungen finden
Sie im Makefile selbst)
- Tragen Sie Ihren Lieblingsübersetzer in die erste Zeile des Makefiles ein.
- Ändern Sie gegebenenfalls die Include- und Library-Pfade.
- Starten Sie die Übersetzung durch Eingabe von "make".
- Falls Fehler auftreten, vergewissern Sie sich, daß alle benötigten
Dateien vorhanden sind und die Pfade richtig gesetzt sind.
Die Installation ist damit beendet.
Das Programm kann jetzt durch Eingabe von "curu" (aus dem Hauptverzeichnis) gestartet werden.
Bedienung
Allgemeine Hinweise
Im Programm-Verzeichnis befinden sich neben den Verzeichnissen "gfx", in
dem die Graphiken liegen, und "models", wo sich Ihre abgespeicherten Konfigurationen
befinden,
auch die Datei "curu.cfg" (nachdem das Programm mindestens einmal
gestartet wurde). Hier werden beim Beenden des Programms
die Positionen aller Fenster gespeichert und entsprechend beim Neustart
wieder geladen. Damit all diese Daten auch gefunden werden , müssen
Sie vor dem Start immer in das Programm-Verzeichnis wechseln. (also niemals
mit "Curu/curu" starten, sondern mit "cd Curu", "curu")
Das Programm kann vollständig mit der Maus bedient werden.
Dazu stehen in einigen Fenstern Menüs zur Verfügung, die mit
der rechten Maustaste aktiviert werden. Es ist von Vorteil eine
Maus mit 3 Tasten zu benutzen, da die mittlere Maustaste im Animationsfenster
eine spezielle Aufgabe übernimmt. Sollten Sie nur eine 2-Tasten-Maus
besitzen, kann die fehlende Taste durch gleichzeitiges Drücken der
Shift-Taste und der linken Maustaste emuliert werden.
Natürlich stehen auch Tastaturkürzel zur Verfügung,
allerdings nicht für alle Funktionen.
Leider gibt es das Programm bisher nur in einer englischen Version,
die Dokumentation ist dagegen nur in deutsch zu haben. Das wird sich in
Zukunft hoffentlich ändern.
Hauptfenster
Im Hauptfenster werden alle erzeugten Puzzle-Objekte in einer Liste
angezeigt. Dabei wird das gerade aktive Objekt durch einen gelben Balken
gekennzeichnet.
Im Titel des Fensters werden der Status des Programms und
gegebenenfalls Fehlermeldungen angezeigt.
Sind die Meldungen zu lang, verbreitern Sie einfach das Fenster.
Die anfangs leere Zeile darunter dient der Anzeige spezieller Befehle,
die den Benutzer dazu auffordern, etwas bestimmtes zu tun.
Maus
Die beiden Schalter am unteren Fensterrand sind selbsterklärend.
Leider ist der "About"-Knopf noch ohne Funktion :-(
Die Liste kann benutzt werden, um das aktive Puzzle auszuwählen.
Falls aber in der Befehlszeile "select target for ..." steht, dient
die Liste zur Auswahl des Lösungsziels.
Das Menü
- Project
- Quit
Das bedarf wohl keiner Erklärung. Sie wollen diesen Menüpunkt
ohnehin nicht benutzen, nicht wahr? :-)
- New
Erzeugt ein neues Puzzle-Objekt, je nach gewähltem Typ.
- Windows
Diese Menüpunkte dienen als Schalter zum Öffnen und Schließen
des jeweiligen Fensters. So lange allerdings noch kein Puzzle-Objekt vorhanden
ist, ist die Funktion dieser Schalter nicht erkennbar.
Voreinstellung: Color Select (=Farbauswahl) geschlossen,
History (=Zugliste) und Control (=Steuerung) geöffnet
Animationsfenster
In diesem Fenster wird das Puzzle perspektivisch dargestellt.
Alle Aktionen, die das Puzzle betreffen, können von hier aus gesteuert
und überwacht werden. Es gibt aber immer nur ein aktives Puzzle.
Dieses wird heller als alle anderen Animationsfenster dargestellt.
Die Hintergrundtextur zeigt eine Windrose mit den vier Himmelsrichtungen.
Diese dient der einfacheren Orientierung. Nur wenn das Puzzle (wie abgebildet)
nach Norden ausgerichtet ist, kann man die Zugsymbole im Zuglistenfenster
und im Steuerungsfenster richtig interpretieren.
Maus
- Drehen des Puzzles:
Oftmals ist es notwendig das Puzzle von einer anderen Seite zu betrachten.
Das können Sie erreichen, indem Sie die mittlere Maustaste
gedrückt halten und die Maus bewegen. Die Bewegung des Puzzles ist
vergleichbar mit der eines Globus. Wenn Sie die Taste wieder loslassen
wird der aktuelle Kippwinkel und die aktuelle Drehgeschwindigkeit
beibehalten. Zum Anhalten des Puzzles ggf. kurz die mittlere Maustaste
drücken. (s. auch Tastatur)
- Ausführen von Zügen:
Bewegen Sie den Mauszeiger über eine Kante des Puzzles (beim Rubik-Würfel
sind dies die normalen Würfelkanten, bei Stern und MiniTet sind dies
die Kanten des umgebenden Würfels; Sie können zur besseren Vorstellung
den umgebenden Würfel einschalten). Der Zeiger verwandelt
sich jetzt in ein Drehsymbol. Drücken Sie die linke Maustaste
und ziehen Sie die Kante zu ihrer Zielposition. Durch Loslassen der Taste
wird der Zug ausgeführt. Mit ein wenig Übung wird man schnell
den "Dreh" heraushaben.
Hinweis: Vor dem Ausführen eines Zuges, sollten
Sie das Puzzle so drehen, daß sie auf eine Ecke schauen (etwa wie
in der Abbildung).
- Umfärben des Puzzles:
Wichtig: Das Farbauswahlfenster
muß geöffnet sein.
Bewegen Sie den Mauszeiger über ein Farbplättchen des Puzzles.
Der Mauszeiger verwandelt sich in ein Fadenkreuz. Durch einen einfachen
Klick mit der linken Maustaste wird die ausgewählte Farbe auf
das Plättchen übertragen.
Eine Besonderheit beinhaltet das MiniTet. Die verschiedenen Formen,
die dieses Puzzle annehmen kann, sind allein durch Umfärben erreichbar.
Dazu wurden die flachen Segmente in 3 Teile aufgeteilt. Färbt man
einen dieser 3 Bereiche um, wird aus diesem flachen Segment eine hervorstehende
Ecke. Umgekehrt kann man eine Ecke in ein flaches Segment umwandeln, indem
alle 3 Farbplättchen gleich eingefärbt werden.
Achtung: Achten Sie darauf, daß Sie keine unmöglichen
Konfigurationen zurücklassen. Dazu gehört, daß Sie genau
die Teile einbauen, die auch vorher schon vorhanden waren. Die Puzzles
können in jedem Fall weiterbenutzt werden, doch beim Versuch diese
wieder zu ordnen, werden Fehler in der Färbung sofort aufgedeckt.
Desweiteren kann es beim Lösen des Rubik-Würfels zu Problemen
kommen, wenn Sie beispielsweise nur eine Kante kippen, oder zwei Ecken
vertauschen.
Das Menü
- Project
- Load
Erlaubt das Laden einer zuvor abgespeicherten Konfiguration.
Es können nur Konfigurationen
eines ähnlichen Puzzle-Typs geladen werden.
Stern und MiniTet sind ähnlich genug.
Achten Sie auf Groß- und Kleinschreibung,
wenn das vom Betriebssystem so verlangt wird.
Achtung: Die komplette Zug-Liste wird dabei gelöscht!
- Save
Speichern der aktuellen Konfiguration.
Achtung: Gleichnamige Konfigurationen
(eines kompatiblen Puzzle-Typs)
werden ohne Vorwarnung überschrieben!
- Clone
Erzeugt ein identisches Puzzle-Objekt, allerdings mit leerer Zug-Liste.
- Close
Löscht dieses Puzzle-Objekt aus dem Speicher.
Achtung: Alle Daten gehen verloren!
-
Options
(nicht alle Optionen sind überall vorhanden)
- Box
Zeichnet um das Puzzle einen umgebenden Würfel (nur für Stern
und MiniTet).
Voreinstellung: aus
- Star<>MiniTet
Umwandlung in den entsprechend anderen Typ (nur für Stern und
MiniTet).
- Texture
Schaltet die Texturierung des Hintergrunds ein oder aus.
Voreinstellung: ein
- Blur
Schaltet den Unschärfe-Effekt ein oder aus (ist noch experimentell).
Voreinstellung: aus
-
History
(alle Funktionen dieses Menüs, außer Stop und Clear, sind
auch aus dem Zuglistenfenster aufrufbar;
die Jump-Funktionen führen, im Gegensatz zu den Go-Funktionen, zu
keiner Animation des Puzzles)
- Clear
Löscht die komplette Zug-Liste.
- Go Backward/Forward
Geht in der Zug-Liste einen Schritt rückwärts/vorwärts.
- Go Prev/Next Marker
Geht in der Zug-Liste bis zum Anfang/Ende der aktuellen Etappe,
oder zur nächsten Etappe,
wenn man sich schon am Anfang oder Ende befindet.
Eine Etappe entspricht der Aneinanderreihung von Zügen
für einen Abschnitt der Lösung,
etwa das Sortieren aller Steine in der Mittelebene.
Die Etappen werden durch Farben unter den Symbolen hervorgehoben.
- Go Start/End
Geht bis zum Anfang/Ende der Zug-Liste.
- Stop
Stoppt die Ausführung der Animation.
- Shuffle
Erzeugt die angegebene Anzahl an Zufallszügen.
- Solve
Erzeugt eine Zugfolge, die das Puzzle ordnet oder in ein anderes überführt.
Dabei stehen verschiedene Algorithmen zur Verfügung:
- Normal oder Intui(tive)
Bedeutet ein schrittweises Herangehen, das der menschlichen Intuition
sehr nahe kommt.
- Opt(imized)
Aufeinanderfolgende Züge,
die zu verschiedenen Etappen gehören,
werden zusammengefasst, wann immer dies möglich ist.
Dadurch entsteht ein Lösungsweg ohne überflüssige Züge,
dafür aber ohne klar abgegrenzte Etappen.
- Short
MiniTet und Stern sind so einfach gebaut,
dass sie der Computer durch vollständige Suche ordnen kann.
Dieser Menüpunkt erledigt genau das
und ermittelt deshalb eine mit Sicherheit kürzeste Lösung.
Einige dieser Menüpunkte können mit den folgenden Punkten kombiniert
werden:
- Ordered
Das Puzzle wird in die Grundstellung gebracht.
- Target
Das Puzzle wird direkt (ohne Umweg über die Grundstellung) in
ein anderes (kompatibles) Puzzle überführt.
Die Auswahl des Ziels erfolgt über das Hauptfenster.
Tastatur
Zusätzlich zu den Tasten im Zuglistenfenster
sind folgende Tasten definiert:
Cursor links |
Beschleunigung nach links |
Cursor rechts |
Beschleunigung nach rechts |
Cursor oben |
Kippung nach oben |
Cursor unten |
Kippung nach unten |
Zuglistenfenster
Hier wird die Zugliste des aktiven Puzzles dargestellt, wobei die einzelnen
Züge durch Symbole repräsentiert werden. Diese Liste enthält
alle Züge die bisher ausgeführt wurden und die, die noch ausgeführt
werden können. Der rote senkrechte Balken in der Mitte des Fensters
kennzeichnet die aktuelle Position. Das rot umrahmte Symbol ist der zuletzt
ausgeführte Zug, dessen Beschreibung in der Zeile darunter angezeigt
wird. Um die verschiedenen Zugtypen zu unterscheiden, werden die Symbole
farbig unterlegt. Rot bedeutet Benutzerzug, während Zufallszüge
blau gekennzeichnet werden. Die restlichen Farben sind für die einzelnen
Lösungsetappen reserviert.
Wichtig: Alle Operationen in diesem Fenster wirken sich
ausschließlich auf das aktive Puzzle aus.
Maus
- Die Schaltflächen sind nach einem einheitlichen Prinzip beschriftet:
Ein einfacher Pfeil bedeutet Ausführen der Züge mit Animation,
ein doppelter Pfeil dagegen überspringt die Animation.
Die Schaltflächen ohne senkrechten Strich führen den nächsten
Zug aus der Liste in der jeweiligen Richtung aus.
Unter Zuhilfenahme der Schaltflächen mit einem Balken geht/springt
man bis zum nächsten Wechsel der Zugtypen (Farbwechsel).
Durch die Schaltflächen mit doppeltem Strich gelangt man schließlich
zum Anfang oder Ende der Zugliste.
- Eine andere Möglichkeit zu einem gewünschten Ziel zu gelangen,
ist die folgende:
Ist das Symbol des Ziels bereits sichtbar, kann man sich durch einen
einfachen Klick mit der linken Maustaste auf dieses Symbol dorthin bewegen.
Im anderen Fall wiederholt man dieses Vorgehen, bis man angelangt ist.
Hier ist es nicht möglich die Animation auszulassen.
Tastatur
Operationen in der Zugliste:
Space (Leer) |
z |
x |
stoppt Animation |
einen Zug zurück |
einen Zug vorwärts |
Drehung der Scheiben des aktiven Puzzles:
(gedreht wird im Uhrzeigersinn, bei Draufsicht auf die zu drehende Scheibe)
|
<ohne> |
Shift (Umschalt) |
Ctrl (Strg) |
r |
rechts |
rechts zurück |
rechts doppelt |
l |
links zurück |
links |
links doppelt |
u |
oben |
oben zurück |
oben doppelt |
d |
unten zurück |
unten |
unten doppelt |
f |
vorn |
vorn zurück |
vorn doppelt |
b |
hinten zurück |
hinten |
hinten doppelt |
Zusätzliche Tasten zum Drehen der mittleren Scheiben beim Rubik-Würfel:
(eingetragen ist die Seite, von der man die mittlere Schicht erreicht)
|
<ohne> |
Shift (Umschalt) |
Ctrl (Strg) |
i |
rechts |
rechts zurück |
rechts doppelt |
o |
oben |
oben zurück |
oben doppelt |
p |
vorn |
vorn zurück |
vorn doppelt |
Steuerungsfenster
Dieses Fenster kann benutzt werden, um neue Züge auszuführen.
Dabei muß darauf geachtet werden, daß das Puzzle nach Norden
ausgerichtet ist. Im anderen Fall assoziiert man mit den Symbolen die
falschen Züge.
Wichtig: Alle Operationen in diesem Fenster wirken sich
ausschließlich auf das aktive Puzzle aus.
Maus
Ein einfacher Klick mit der linken Maustaste auf ein Symbol führt
den entsprechenden Zug aus.
Der Zug wird daraufhin in der Zugliste
dargestellt.
Tastatur
Siehe Tastenbelegung im Zuglistenfenster.
Farbauswahlfenster
Mit Hilfe dieses Fenster ist es möglich, das aktive Puzzle umzufärben.
Das linke Feld enthält die aktuelle Farbe.
Wichtig: Alle Operationen in diesem Fenster wirken sich
ausschließlich auf das aktive Puzzle aus.
Maus
Die aktuelle Farbe wird durch Klick
auf die entsprechende Farbfläche ausgewählt.
Jedes Puzzle speichert die aktuelle Farbe separat ab. So kann es beim
Umschalten auf ein anderes Puzzle zu einem Farbwechsel kommen.
Zukunft
Was noch zu tun wäre:
-
englische Dokumentation
-
Übersetzung der Bedienoberfläche
(deutsch wäre kein Problem,
noch andere Sprachen gewünscht?)
-
Benutzung einer leistungsfähigen Benutzerschnittstelle
(nichts selbstgebasteltes mehr, vielleicht glui?)
-
Verbesserung der Tastaturbedienung (Vorschläge?)
-
Einbau weiterer Puzzles (Pyraminx, ...)
Autoren
-
Daniel Beer
- OpenGL-Programmierung
- Bedienoberfläche (so gut wie's halt mit dem GLUT ging, Amiga mit MUI macht doch viel mehr her!)
- Portierung auf MS-Windows
- Dokumentation (Inhalt)
-
Henning Thielemann
- Implementierung der Lösungsstrategien von Schifferdecker u.a.
- Bitmap-Grafiken
- Dokumentation (Technische Details)
Erstellung: 2000-03-12
Letzte Änderung: $Date: 2006/07/21 15:51:52 $