home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
comm
/
bbs
/
eazybbs
/
contrib
/
eazysokoban_216.lha
/
EazySokoban.doc
< prev
next >
Wrap
Text File
|
1993-05-31
|
16KB
|
307 lines
EazySokoban V2.15
-------------------
Copyright © 1993 Carsten Gerlach
Copyright-Notice
----------------
Der Programmierer von EazySokoban (im Folgenden als 'ich' bezeichnet ;-)
lehnt jede Art von Garantien ab, welche die Tauglichkeit der Software für
einen bestimmten Zweck versprechen. Ich hafte nicht für Fehler in der
Dokumentation und auch nicht für Schäden, die durch den Gebrauch dieser
Dokumentation, deren Inhalt oder meiner Software direkt oder indirekt
entstehen.
Ich behalte mir vor, jederzeit Änderungen an dieser Dokumentation oder
deren Software vorzunehmen, ohne jeden Anwender davon zu benachrichtigen.
Das Archiv und alle darin enthaltenen Files dürfen nur unverändert weiter-
verbreitet werden.
EazySokoban ist Shareware
-------------------------
Shareware bedeutet, daß ich gerne etwas Geld für EazySokoban haben möchte,
wenn es im Boxbetrieb eingesetzt wird. Für 20DM (ich nehme auch gerne mehr ;-)
werdet ihr registrierter User und bekommt regelmäßig neue Programmversion,
auf Wunsch via E-Mail oder als Binary-PM in einer EazyBBS-Box. Natürlich
werden Wünsche registrierter User eher berücksichtigt als die normaler.
Einleitung
----------
EazySokoban stellt ein weiteres (das zweite mir bekannte :-) Onlinespiel
für das Mailboxsystem EazyBBS dar. EazySokoban ist eine Implementation des
aus der UNIX- und PC-Welt bekannten Spiels Sokoban und enthält 80 Level des
Original-UNIX-Sokobans. Eigene Level können leicht selbst erstellt werden.
Die Einbindung in das EazyBBS-System ist 100%ig systemkonform, EazySokoban
unterstützt beliebig viele Ports, berücksichtigt User-Status, Userzeit und
alle anderen EazyBBS-seitigen Einstellungen. EazySokoban kann auch ohne
EazyBBS gespielt werden.
Systemanforderungen und Installation
------------------------------------
EazySokoban braucht mindestens die EazyBBS-Version 2.9 und AmigaOS 2.0
oder höher.
Das Programm benötigt ein Systemverzeichnis, in dem sich unter anderem
die Leveldateien und die Highscoreliste befinden. Legen sie deshalb
ein Verzeichnis an und kopieren sie alle im Unterverzeichnis 'sokoban'
des Archivs enthaltenen Dateien dort hinein. Damit EazySokoban weiß, wo
sich sein Systemverzeichnis befinden, erstellen sie einen Assign 'SOKOBAN:'
auf dieses Verzeichnis (das ist nicht unbedingt nötig, siehe dazu Abschnitt
"Aufruf").
Beispiel:
mkdir dh0:mailbox/Sokoban ; wir legen ein Verzeichnis an
assign SOKOBAN: dh0:mailbox/Sokoban ; Assign darauf erstellen
copy -r ram:sokoban/* SOKOBAN: ; alle Dateien und Unterverzeichnisse
; kopieren
Installieren sie dann das File 'EazySokoban' als EazyBBS-Userprogramm (wie
das geht, steht in der EazyBBS-Anleitung). Damit ist die Installation
beendet.
Aufruf und Kommandozeilenparamter
---------------------------------
EazySokoban kann jetzt von EazyBBS aus wie ein normales Userprogramm mit dem
'run' oder 'execute program' - Kommando gestartet werden. Dabei sind auch
Parameter zulässig:
EazySokoban [-p<Username>] [-d<Directory>]
Nach dem Start versucht EazySokoban das lokale EazyBBS-Environmet zu lesen,
um dadurch Informationen über den aufrufenden Port zu bekommen (nähere
Informationen stehen in der EazyBBS-Anleitung). EazySokoban übernimmt
dann die serielle Schnittstelle des entsprechenden Ports und/oder öffnet
ein Console-Window mit dem Titel 'EazySokoban<Portnr.>'. Läuft auf dem
aufrufenden Port ein Console-Login, gehen alle Ein- und Ausgaben über das
entsprechende Window, sonst werden Eingaben in das Window nicht akzeptiert
(damit die bösen Sysops den armen Usern nicht in's Spiel pfuschen können ;-).
Wenn möglich, wird das Window auf dem Screen geöffnet, auf dem auch der
aufrufende EazyBBS-Port läuft. Wird EazySokoban ohne EazyBBS gespielt, wird
der default public screen (meistens Workbench) benutzt. Als Font wird
unabhängig vom Default-Font immer topaz.8 benutzt.
Der Paramter -d beim Aufruf dient dazu, das Sokoban-Systemverzeichnis fest-
zulegen. Nach -d muß ein gültiger Verzeichnisname folgen, z.B.
'EazySokoban -dHarddisk:trash/sokoban'. Wird dieser Paramter weggelassen,
nimmt EazySokoban an, daß ein Assign 'SOKOBAN:' auf das Systemverzeichnis
existiert.
Der Paramter -p dient dazu, Sokoban ohne EazyBBS zu spielen. Das heißt,
EazySokoban liest kein Environment und öffnet ein Window, über das alle
Ein- und Ausgaben laufen. Nach -p kann ein Username folgen, mit dem gespielt
wird, z.B. 'EazySokoban -pGerlo'. Wird kein Username spezifiziert, wird unter
dem Namen 'Sokoban-Fan' gespielt.
Beim Start können folgende Fehlerfälle auftreten:
1) Meldung "ERROR: can't read environment"
Das Environment (die lokalen, von EazyBBS übergebenen Variablen) konnte
nicht gelesen werden. Vielleicht ist eine falsche EazyBBS-Version
installiert ?
2) Meldung "ERROR: no memory"
Es ist nicht ausreichend Speicher vorhanden.
3) Meldung "ERROR: can't initialize console"
Das Console-Window konnte nicht geöffnet werden. Eventuell ist zuwenig
Speicher für das Window vorhanden. Normalerweise sollte diese
Fehlermeldung nicht auftreten.
4) Meldung "ERROR: can't initialize serial port"
Die serielle Schnittstelle konnte nicht geöffnet werden. Normalerweise
sollte diese Fehlermeldung nicht auftreten.
5) Meldung "ERROR: can't initialize timer"
Das timer.device konnte nicht geöffnet werden. Normalerweise
sollte diese Fehlermeldung nicht auftreten.
6) Meldung "Sorry, but guests can't play :-("
Ein User mit Gaststatus wollte da doch wirklich die Box blockieren ;-)
Das Programm (ab geht's)
------------------------
HINWEIS: für einen korrekten Bildschirmaufbau sollte der EazyBBS-User
ein VT100/102-Color-Emulation verwenden. Für Müll auf dem Bildschirm
wird sonst keine Garantie übernommen ;-) User mit Gaststatus haben keinen
Zugriff auf das Spiel.
Nach erfolgreichem Start bekommt der User eine Kommandozeile mit folgendem
Aussehen vorgesetzt:
Select Level ('?' for help) [12] :
In dieser Kommandozeile ist edieren mit der BackSpace-Taste möglich, alle
Eingaben werden mit RETURN abgeschlossen. Die Zahl in den eckigen Klammern
zeigt den aktuellen Level des Benutzers an. Dazu ist folgendes zu sagen:
jeder Benutzer (unterschieden wird anhand des übergebenen Usernamens) muß
das Spiel "durchspielen", d.h. bei Level 1 anfangen und nach und nach
weiterkommen. EazySokoban merkt sich für jeden Benutzer den höchsten Level,
den er geschafft hat - dieser wird in den eckigen Klammern angezeigt.
Folgende Befehle sind verfügbar:
'?' gibt eine kurze Online-Hilfe für die Kommandozeile aus
'h' zeigt die Hiscore-Liste an
'q' verläßt EazySokoban, es wird zur Box zurückgekehrt
'm' wählt den Display-Update-Modus (Erklärung unten)
'l' lädt und spielt den gespeicherten Level (Erklärung unten)
<RETURN> wählt den aktuellen Level (der in den []) zum Spielen an
Durch Eingabe einer Zahl (z.B. '1','01','12') kann ein Level direkt
angewählt werden, aber nur wenn der Benutzer ihn bereits durchgespielt hat.
D.h. ist der aktuelle Level eines Benutzers 12 kann er nur die Level 1-12
direkt anwählen.
Es kann passieren, daß EazySokoban einen Level nicht laden kann. Der
häufigste Grund dafür ist, daß der gewünschte Level nicht existiert ;-)
Jedenfalls erscheint dann die Fehlermeldung 'Sorry, can't load level'.
Mit 'm' läßt sich einstellen, ob die Statuszeile im Spiel nach jedem
Zug oder alle fünf Züge neu aufgebaut wird. Dadurch läßt sich
die Geschwindigkeit der Bildschirmausgabe erhöhen.
Durch 'l' ist es möglich, eine gespeicherte Spielsituation (siehe Abschnitt
"Spiel") zu laden und zu spielen. Falls keine gefunden wurde, gibt EazySokoban
die Fehlermeldung 'Sorry, can't load level' aus.
Das Spiel
---------
Hat der Benutzer in der Kommandozeile einen Level gewählt, versucht
EazySokoban diesen Level zu laden und wechselt dann in das eigentliche
Spiel. Für diejenigen, die Sokoban nicht kennen, folgt eine kurze
Beschreibung.
Man kontrolliert eine Spielfigur ('*') die durch das Labyrinth jedes Levels
bewegt werden kann. Ziel ist, alle Geldstücke ('$') in den Safe (farbige
Felder) zu schieben. Die Geldstücke können nur geschoben werden, nicht etwa
gezogen oder aufgehoben. Alle Bewegungen und Schiebevorgänge werden mit-
gezählt - für einen besseren Hiscore kann versucht werden, den Level mit
weniger Bewegungen zu lösen. Sind alle Geldstücke im Safe kann der nächste
Level gespielt werden.
Im Spiel sind folgende Tasten belegt:
8
4 6
2
auf dem Zehnerblock bewegt die Spielfigur in die entsprechende Richtung.
'q' verläßt den Level und kehrt zur Kommandozeile zurück.
CTRL-R bewirkt einen Neuaufbau des Bildschirms.
Vor einer unsicheren Aktion läßt sich mit 's' (wie 'save') der aktuelle
Zustand (Bildschirmaufbau, Cursorposition und Status) speichern. Dieser
Zustand kann mit 'r' (wie 'restore') wieder zurückgeholt werden.
Ein Zustand kann mit 'w' (wie 'write') als Datei gespeichert werden.
Im Gegensatz zum Speichern mit 's' bleibt diese Datei bestehen, und kann
aus der Kommandozeile wieder geladen und gespielt werden (siehe Abschnitt
"Das Programm"). So kann der Benutzer eine Situation speichern, EazySokoban
beenden, und beim nächsten Login weiterspielen.
Der zuletzt ausgeführte Schub läßt sich mit 'u' (wie 'undo') rückgängig
machen.
Die Statuszeile zeigt an, wieviele Züge (Moves) und Schübe (Pushes)
durchgeführt wurden, wieviele Geldstücke (Packets) sich im Level und
wieviele davon sich schon im Safe (Saved) befinden. Achja, die Levelnummer
wird auch noch angezeigt. Und ein inverses 'S' zeigt an, ob ein Zustand
gespeichert wurde.
Unter der Statuszeile können zwei Informationszeilen stehen, in denen sich
z.B. der Ersteller des Levels verewigt hat.
Die Highscoreliste
------------------
Wurde in der Kommandozeile der Befehl 'h' eingegeben oder hat der Spieler
nach dem erfolgreichen Beenden eines Levels einen Highscore erreicht, wird
die Highscoreliste angezeigt. Der zuletzt erreichte Highscore wird invers
angezeigt. Die erreichte Platzierung ist umso höher, je höher der
bewältigte Level war und je weniger Züge dazu gebraucht wurden.
Hat also ein User das Spiel durchgespielt (BTW: bei den 80 höllich schweren
Levels ist das höchstens per Cheat-Modus möglich ;-)) kann er versuchen,
jeden Level mit möglichst wenig Zügen zu schaffen.
Erstellen eigener Levels
------------------------
Es ist möglich, eigene Spielfelder für EazySokoban zu erzeugen. Alle Levels
sind als Textdateien abgelegt und können mit einem Texteditor (z.B. dem CEd)
ediert und neu erstellt werden. Der Aufbau einer Leveldatei muß allerdings
bestimmten Regeln folgen. In einer Leveldatei werden bestimmte Schlüsselwörter
verwendet. Folgende werden erkannt:
'MSG1:','MSG2:' - der Text nach dem Doppelpunkt bis zum Zeilenende wird als
Messagezeile #1 bzw. #2 erkannt. Diese Messagezeilen werden unter dem
entsprechenden Level angezeigt. Hier können Informationen über den Level,
den Ersteller und nette Botschaften an den Spieler stehen. Erscheinen diese
Schlüsselwörter nicht in einer Leveldatei, werden Leerzeilen ausgegeben
(das ist bei allen mitgelieferten Spielfeldern der Fall). Die Messagezeile
(nach dem Doppelpunkt) darf nicht länger als 80 Zeichen sein.
'PLAYFIELD:' - nach diesen Schlüsselwort folgt die Spielfelddefinition.
WICHTIG: nach dem Schlüsselwort _muß_ aus technischen Gründen eine Leerzeile
folgen. Nach der Leerzeile werden alle folgenden Zeilen bis zum Fileende
als Definitionszeilen für das Spielfeld ausgewertet. Eine Zeile darf
maximal 80 Zeichen breit sein, das Spielfeld darf maximal 20 Zeilen hoch
sein. Nach 20 ausgewerteten Zeilen bricht EazySokoban ab. Als Bausteine für
das Spielfeld sind folgende Zeichen zulässig:
'$' - Geldstück
'#' - Mauer
'H' - Safe
'X' - Geldstück im Safe
'*' - Spieler, Startposition
Man sollte darauf achten, daß der Spieler in einem abgeschlossenen
Labyrinth startet und daß der Level beendbar ist, d.h. genausoviele Safes
wie Geldstücke vorhanden sind. EazySokoban testet nicht, ob die Level
sinnvoll sind, z.B. ob überhaupt eine Spielfigur vorhanden ist, oder ob
es wirklich nur eine ist.
Wer das alles nicht versteht, kann sich einfach den Level 01 des mit-
gelieferten Sets ansehen. Wer's dann noch nicht versteht ....
EazySokoban sucht die Leveldateien immer im Unterverzeichnis 'level' des
Systemverzeichnisses unter den Namen 'levelXX.esdat', wobei 'XX' die
(immer zweistellige) Levelnummer darstellt. Eine Methode, eigene Level
sinnvoll einzubinden, wird im Kapitel "Level-Sets" beschrieben.
Level-Sets und Parameter
------------------------
Wer eigene Level erstellt oder von Usern erstellte Level einbinden will,
muß das nicht machen indem er die schönen Originallevel löscht oder die
eigenen Level hintenanstellt (auf diese Weise kommen nur wenige in den
Genuß ...). EazySokoban bietet durch den '-d'-Parameter eine Möglichkeit
an, mit mehreren Level-Sets zu spielen.
Die Idee ist folgende: für jedes Level-Set (meinetwegen Originallevel,
Sysop's Kreationen, Userlevel) wird ein eigenes Systemverzeichnis
(siehe dazu Abschnitte "Installation" und "Systemfiles") angelegt.
In das jeweilige Untervezeichnis 'level' kommen natürlich nur die
gewünschten Level-Dateien.
Jetzt wird für jedes Level-Set ein Userprogramm installiert, das
EazySokoban mit dem '-d'-Parameter so aufruft, daß das zum Level-Set
gehörige Systemverzeichnis übergeben wird (für den '-d'-Parameter siehe
Abschnitt "Aufruf").
Diese Methode hat gleichzeitig noch den Vorteil, daß für jedes Level-Set
eine eigene Highscoreliste und eigene User-Infos angelegt werden.
EazySokoban bietet auch die Möglichkeit, den User über das aktuelle
Level-Set zu informieren. Die Datei 'SetInfo' im Systemverzeichnis
kann eine Textzeile enthalten, die beim Start von EazySokoban ausgegeben
wird (siehe auch Abschnitt "Systemfiles").
Systemfiles
-----------
Im Sokoban-Systemverzeichnis muß das Unterverzeichnis 'level' existieren.
In diesem Verzeichnis sucht EazySokoban die Leveldateien (deren Aufbau wird
im Kapitel "Erstellen eigener Levels" beschrieben).
Die Dateien 'UserInfo' und 'HiScores' enthalten Information über den zuletzt
gespielten Level jedes Users und die Hiscoreliste. Diese Dateien werden von
EazySokoban erzeugt falls sie nicht vorhanden sind. Edieren per Hand ist
verboten (Hände weg ! Pfui ! Böse !) und kann zu Programmabstürzen führen.
Die Datei 'SetInfo' kann ediert bzw. angelegt werden. Sie enthält eine
Textzeile, die beim Start von EazySokoban einmalig ausgegeben wird, und den
Benutzer über das Level-Set informieren soll, das er gerade spielt.
Dateien mit dem Namen '<UserName>.esdat' sind vom entsprechenden User
gespeicherte Spielsituationen. Diese Dateien sollten nicht verändert werden.
Was noch
--------
EazySokoban übernimmt den EazyBBS-seitigen Wert für den Timeout. Wurde
die entsprechende Zeit lang kein Zeichen empfangen, unterbricht EazySokoban
und kehrt zu EazyBBS zurück.
Die verbleibende Userzeit wird nur nach Verlassen oder Durchspielen eines
Levels geprüft. Ist keine mehr vorhanden oder wurde überzogen, kehrt
EazySokoban zu EazyBBS zurück.
Das Programm kann jederzeit durch ein CTRL-C-Signal abgebrochen werden.
Besonderer Dank geht an Andreas Kirchwitz für seine Hilfe beim Programmieren
von EazySokoban und für das Installieren der Testversionen, was viel
Nerven und Abstürze gekostet hat ;-)
Kontakt
-------
Wer Fragen, Vorschläge, Bugreports, Geschenke o.ä. hat oder gar seine
Shareware-Gebühr bezahlen will, kann sich auf folgende Weise an mich
wenden:
- per gelber Post: Carsten Gerlach
Falkentaler Steig 95a
W-1000 Berlin 28
Germany
- per Telefon (Voice): (030) 4049763
- per UUCP/InterNet: gerlo@obh.in-berlin.de
oder gerlo@iceland.lbcmbx.bln.sub.org
oder gerlo@lbcmbx.in-berlin.de
- in der EazyBBS-Support-Mailbox:
ZikZak
(030) 873376 (V.32, HST, V.32bis)
nur von 15-21 Uhr, Sysop ist "Big Bonzo"
User-ID: "Gerlo"
- oder in diversen anderen EazyBBS-Mailboxen unter der User-ID "Gerlo"