Laden...

Maze Tools - Labyrinth generator und Spiel

Erstellt von AyrA vor 9 Jahren Letzter Beitrag vor 9 Jahren 4.601 Views
AyrA Themenstarter:in
60 Beiträge seit 2010
vor 9 Jahren
Maze Tools - Labyrinth generator und Spiel

Das hier angebotene Projekt besitzt mehrere Funktionen, rund um Labyrinthe. Eine abgespeckte Version habe ich in der Vergangenheit schon einmal in Excel gemacht.

Labyrinth generieren
Labyrinthe beliebiger dimensionen (sie müssen im RAM platz haben) können generieren, von 5x5 an. Ein oberes limit ist nicht gesetzt, ab 2 GB wird es kritisch.
Alle generierten Labyrinthe besitzen exakt eine Lösung. Die generierende Klasse bietet den Seed des Zufallsgenerators an, dadurch kann das selbe Labyrinth mehrmals erzeugt werden. Das Feature wurde jedoch noch nicht produktiv verwendet, ist aber vorhanden. Die Labyrinthe beginnen oben links und enden unten rechts.

Labyrinthe einlesen
Labyrinthe können aus verschiedenen Datei formaten eingelesen werden (Siehe abschnitt ausgabe). Nach möglichkeit wird das Eingabeformat automatisch erkannt.

Labyrinthe lösen
Das Programm kann labyrinthe lösen oder den Lösungsstatus eines Labyrinths zurücksetzen.

Labyrinthe ausgeben
Labyrinthe können in der Konsole oder in Dateien ausgegeben werden.
Die Möglichkeiten sind: Nummeriert, ASCII, UTF-8, CSV, Binär, Bild.
Alle Ausgabe Formate können auch als Eingabe verwendet werden (Ja, auch Bilder)

Nummeriert speichert alle elemente als einstellige Zahlen (als Strings)
ASCII benutzt verschiedene ASCII Zeichen (alle im original ASCII Zeichensatz enthalten)
UTF-8 benutzt Spezielle Zeichen um Rahmen und Pfade zu zeichen. Dies sieht etwas grafischer aus, als ASCII ausgabe.
CSV ist Nummeriert, aber als CSV formatiert.

Obige Formate sind alle als Datei- oder Konsolenausgabe verfügbar, untenstehende nur für Dateien.

Binär speichert nur Wände und Pfade, keine Lösungen oder Positionen von Start und Ende. Die Dateigrösse ist üblicherweise 1/8 der Labyrinthgrösse
Bild ausgabe speichert das Labyrinth als PNG Datei. Die Grösse eines Elementes kann als Skalierungsfaktor angegeben werden. Die Dimensionen eines Bildes sind je nach PC etwa auf 30000x30000 Pixel beschränkt. sehr grosse Bilder können mit Windows internen Mitteln nicht mehr betrachtet werden und benötigen GIMP oder ein Webbrowser als Betrachter. Sollten Probleme beim Speichern auftauchen wird folgendes unternommen:
Zuerst wird versucht das Bild ohne Skalierung zu speichern, sollte das nicht gelingen, wird das Labyrinth im Binärformat gespeichert.

Labyrinth spielen
Labyrinthe können direkt in der Konsole gespielt werden. Der Fortschritt kann gespeichert werden um ihn später wieder aufzunehmen. Es konnen Labyrinthe direkt in der Konsole gelöst werden, auch wenn sie höher und breiter sind als die Konsole. Es wird jeweils versucht um den Spieler zu zentrieren.
Es existieren 3 Modi:

Normal: Das Labyrinth ist komplett sichtbar
FOW: (Fog of War) Nicht sichtbare Bereiche werden ausgeblendet, auch wenn sie mal sichtbar waren
MAP: Wie FOW aber einmal entdeckte Bereiche bleiben sichtbar.

Labyrinthe konvertieren
Da Eingabe- und Ausgabedatei sowie Format gleichzeitig angegeben werden können, kann das Programm existierende Labyrinthe in andere Formate konvertieren.

Umfangreiche Hilfe
Die Kommandozeilenhilfe ist äusserst umfangreich (ca 80 Zeilen)

Lizenz
WTFPL

Screenshot
(Siehe zweiter Beitrag)

Optionen
(Grundsätzlich die Ausgabe der Hilfe)

Maze Tools
mazeTools.exe [/W:<number>] [/H:<number>] [/M:<number>] [/S] [/O:<format>]
              [/I:<format>] [/G] [/FOW] [/R:<infile>] [/P:<outfile>] [/MAP]

/W:<number>   Width of the maze, if not specified, window width is used
/H:<number>   Height of the maze, if not specified, window height is used
/M:<number>   Output multiplication factor, 1 or bigger. Default: 1
              this only affects image inputs and outputs
/O:<format>   Output format (see below), defaults to UTF
/I:<format>   Input format (see below), defaults to UTF
/S            Solves the Maze
/G            Game: Allow the user to solve manually
/FOW          Fog of war: maze is invisible except for current player view
/MAP          Map: once uncovered tiles (using /FOW) will stay visible
/R:<infile>   input file, if not specified, a maze is generated using
              W and H arguments. If specified, W and H are ignored
/P:<outfile>  output file, if not specified, the console is used (stdout)

Mazes always start at the top left corner and end at the bottom right corner.
Loading a maze from file (except binary) will find start and end.
Mazes always have an uneven rows and columns. Supplied values are adjusted
in case they are even. (subtraction only)

Formats:      Numbered: Output consists of Numbers only (with line breaks):
                        0=way
                        1=wall
                        2=start
                        3=end
                        4=solution
                        5=player
              ASCII: Output in ascii printable chars. Each char is 1 byte.
                  (space)=way
                        #=wall
                        S=start
                        E=end
                        .=solution
                        !=Player
              UTF: similar to ASCII but with multibyte chars
                  (space)=way
                        ˆ=wall
                        S=start
                        E=end
                          solution: Line drawing ASCII art
                        :=player
              CSV: Similar to numbered format, but comma separated
              Binary: Compressed binary, only ways and walls
              Image: PNG image of maze using Colors
                    black=wall
                    white=way
                    green=start
                      red=end
                   yellow=solution
                  magenta=player

if a format is not specified, it is detected by file extension:
UTF     =txt
ASCII   =txt
CSV     =csv
BINARY  =bin
Numbered=txt
Image   =png

Detecting multiple txt formats is done by looking at the first
char of a file, since there is a border around the maze, the
first char is always a wall. The Wall differs from numbered to
UTF to ASCII.

The /G switch:
The /G switch lets the user play the maze in the console after
all other switches are processed. Console output is disabled,
if /G is specified, /P can to be used to save the maze progress.
/FOW only works together with /G

The /FOW switch:
When specified, the maze region is invisible except for the players
field of view. This makes solving mazes a lot more complicated.
The drawn path you took is still saved and visible again, if you
backtrack a little. Does not affects save file.

The /MAP switch:
This switch only works together with /FOW. If specified, once
uncovered tiles stay visible, as if the player drew a map.
Does not affects save file.

Noch zu erledigen*.maz Dateien erstellen und einlesen, die nur Dimensioenn und Seed beinhalten *Multiplayer? Co-op oder VS Modus (siehe Idee unten) *Scrolling erlauben ohne die Spielfigur zu bewegen *GUI Frontend für nicht so Konsolenversierte benutzer *Hintergrundverarbeitung mit Events (alle Funktionen blockieren zur Zeit noch, da kein GUI)

multiplayer
Multiplayer könnte in 2 Modi geschrieben werden:
Co-op: Spieler starten in den gegenüberliegenden Ecken und versuchen das Labyrinth so schnell wie möglich mit so wenig Fehlern wie möglich fertig zu stellen. Das Spiel stoppt, sobald ein Spieler auf den Pfad des anderen trifft.
VS: wie- co-op. Sobald die Spieler miteinander kollidieren wird das Spiel gestoppt und die Punkte ausgewertet.

Die einzelnen Funktionen und Werte besitzen einen Header Kommentar.

Viel Spass

**:::

2.207 Beiträge seit 2011
vor 9 Jahren

Mit Hinweis auf [Hinweis] Wie poste ich richtig? Punkt 6.1 hänge ich das Bild mal hier an.

49.485 Beiträge seit 2005
vor 9 Jahren