Crossword Puzzle Creator V3.3
-----------------------------

Copyright © 1991 by Jürgen Weinelt
                    Zur Kanzel 1
                    8783 Hammelburg
                    Deutschland

Crossword Puzzle Creator (CPC) V3.3 ist Freeware.

CPC darf auf nicht-kommerzieller Basis weitergegeben werden, z.B. im Rahmen
von PD-Serien.
Ich bin wirklich relativ tolerant, was die Kopiergebühren für PD-Disketten
angeht; trotzdem behalte ich mir vor, bei besonders üblen Auswüchsen alle
mir zur Verfügung stehenden rechtlichen Mittel einzusetzen!



Der Quellcode ist bei diesem Release enthalten, allerdings stellt ihr
besser keine besonders hohen Ansprüche... ich habe das Programm
ursprünglich vor ca. fünf Jahren in C64-Basic

("   **** COMMODORE 64 BASIC V2 ****
  64K RAM SYSTEM  38911 BASIC BYTES FREE ", gelle?)

entwickelt, vor ca. 3 Jahren umgesetzt in AmigaBASIC und während der
letzten beiden Jahre nach und nach in Modula-II umgestrickt.

Entsprechend sieht der Sourcecode aus...



Hinweis: Benutzung des Programms auf eigene Gefahr; d.h. wenn es irgendwas
         demoliert, beschwert euch nicht bei mir!
         Über größere Bugs wüßte ich trotzdem gerne Bescheid...

Hinweis: CPC greift auf den Drucker über das PAR:-Device zu, weil das
         Rätsel im Grafikmodus gedruckt wird. (Kann mir jemand erklären,
         wie man sowas mit dem PRT: machen kann? Ich bräuchte punktweisen
         Zeilenvorschub und Ausgabe einer Zeile mit der "ESC *"-Sequenz).
         Der Ausdruck sollte mit jedem Epson-kompatiblen Drucker problemlos
         möglich sein, testen konnte ich es allerdings nur mit meinem
         Star NL10.
         Die Ausgabe der Rätsel-Lösung erfolgt übrigens über PRT:

Hinweis: CPC benötigt sehr viel Speicher; auf 512K-Systemen mit Extras wie
         z.B. mehreren Laufwerken kann es u.U. Schwierigkeiten geben.
         Ich hatte auch einen sehr seltsamen Absturz auf einem solchen
         512K-System; ich versuche zur Zeit, das Problem zu reproduzieren.
         Zur Zeit habe ich ehrlich gesagt den M2Amiga selbst im Verdacht,
         denn der stürzt ja (angeblich; siehe README auf Compiler-Disk)
         auch ab, wenn nicht viel Speicher übrig ist...

Hinweis: Ich selbst habe einen A1000 mit 2.5MB, Festplatte und Kick/WB 1.3;
         wer Probleme mit dem Programm hat, möge mir bitte eine kurze
         Problembeschreibung mit möglichst exakter Angabe der Konfiguration
         (Hard- UND Software) schicken.



Aufruf
------
CROSS [-xXSIZE] [-yYSIZE] [-d]
         (1)       (2)     (3)

Das Programm akzeptiert bis zu 3 Parameter:
 (1) Größe des Rätsels in x-Richtung; 5<=XSIZE<=39; Default: 19
 (2) Größe des Rätsels in y-Richtung; 5<=YSIZE<=35; Default: 19
                               (NTSC: 5<=YSIZE<=25)
 (3) Debug-Modus für das Meldungs-Datenfile; Erklärung später.

Die Parameter können in beliebiger Reihenfolge angegeben werden; alle
Parameter sind optional.



Vor dem Aufruf von CPC muß mittels ASSIGN ein logisches Device namens
"CROSS:" definiert werden; dort sucht CPC seine Datenfiles:

 (1) DATA               (Verzeichnis)

 (2) DATA/msgtxt.data   (Datenfile mit mehrsprachigen Meldungen)

 (3) DATA/words01.crw   (Wortschatzdatenfile)   oder
     DATA(words02.crw   (Wortschatzdatenfile)

 (4) DATA/ (...) .crd   (Rätseldatenfiles)

In diesem Release wird CPC mit zwei Wortschatzdatenfiles geliefert:
  words01.crw enthält deutsche Wörter
  words02.crw enthält englische Wörter



Bedienung
---------
Das Programm ist weitgehend selbsterklärend. Hier nur einige wichtige
Hinweise:

 - Direkt nach dem Programmstart liest CPC das Message-Datenfile.
   Es erscheint eine Liste aller verfügbaren Sprachen (zur Zeit nur Deutsch
   und Englisch), und der Benutzer kann dann auswählen, welche Sprache
   verwendet werden soll (Zifferntaste, dann Return).
   Eine ausführliche Beschreibung von "msg.txt" folgt weiter unten.

 - Die Auswahl der einzelnen Funktionen erfolgt über die Gadgets auf der
   rechten Hälfte des Bildschirms. Die Bedeutung der Gadgets sollte
   weitgehend selbsterklärend sein.

 - Einige Anmerkungen zum "Automatiksuche"-Gadget:

    * Es muß sich ein Wortschatz im Speicher befinden.

    * Es muß bereits mindestens ein Wort vorher plaziert worden sein (als
      "Keim", aus dem das Rätsel "wachsen" kann).
      Das erledigt das Programm im Moment automatisch.

    * Die Automatiksuche wird durch nochmaliges Betätigen des Gadgets
      beendet, der gerade laufende Suchvorgang wird aber noch beendet.

    * Es kann jederzeit (wenn die Automatiksuche aus ist, jedenfalls) ein
      anderer Wortschatz geladen werden.

 - Das "Limit zurücksetzen"-Gadget:

    * CPC versucht zuerst möglichst lange Wörter zu plazieren; die "Limit"-
      variable gibt die momentan gültige Untergrenze für die Wortlänge an.

    * Mit dem "Limit zurücksetzen"-Gadget kann der Benutzer diese Längen-
      beschränkung selbst wieder auf den Ausgangswert hochsetzen.



Message-Datenfile
-----------------
Diese Datei enthält (fast) alle Texte, die das Programm benutzt, und zwar
(zur Zeit) in Englisch und Deutsch. Die Datei kann problemlos um weitere
Sprachen erweitert werden (insgesamt bis zu 9 Sprachen).
Jeder Eintrag in der Datei belegt eine eigene Zeile.



Aufbau des Message-Datenfile
----------------------------
Die erste Zeile enthält eine Ziffer. Diese Ziffer gibt die Anzahl der vor-
handenen Sprachen an. Es darf nur eine einzelne Ziffer sein.

Danach folgen die Bezeichnungen der einzelnen Sprachen (z.Z. ENGLISH und
DEUTSCH).

Die folgenden Einträge sind ebenfalls jeweils für jede Sprache einmal
vorhanden; sie stellen die Programmmeldungen dar.

Falls Sie das Message-Datenfile um eine neue Sprache erweitern wollen,
beachten Sie bitte, daß die Übersetzungen nicht wesentlich länger als
die Originalmeldungen sein sollten, da die Texte zum Teil in Gadgets
oder Requestern auftauchen.

Jeder Eintrag muß mit einer dreistelligen Nummer beginnen, die mit der
tatsächlichen Meldungsnummer (durchzählen) übereinstimmen muß (Sicherheits-
maßnahme). Das hört sich recht kompliziert an, aber wenn man sich das
Message-Datenfile einmal genau ansieht, versteht man bald, was gemeint ist.
Die einzige Ausnahme is die die Meldung Nummer 999, die das Dateiende
anzeigt.

Nach der Meldung 999 können beliebige Kommentare angehängt werden, der Rest
des Files wird nämlich ignoriert.

Falls bei der Anpassung an eine neue Sprache Schwierigkeiten auftreten
sollten, kann man CPC mit der Option "-d" aufrufen, dann werden während
des Programmlaufs die Meldungen zusammen mit der Meldungsnummer ausgegeben;
so können Probleme leichter lokalisiert und behoben werden.



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
############################################################################
Haben Sie Cross an eine weitere Sprache angepaßt? Bitte schicken Sie mir
eine Diskette mit Ihrem "msgtxt.data"-File zu, damit ich es im nächsten
Release berücksichtigen kann. Als Dank bekommen Sie Ihre Diskette mit einem
anderen PD-Programm von mir zurück.
############################################################################
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



Wortschatzdatenfiles
--------------------
Eigene Wortschatzdatenfiles können jederzeit benutzt werden, wenn folgende
Einschränkungen beachtet werden:

 (1) Alle Wörter müssen in GROSSBUCHSTABEN eingegeben sein.

 (2) Die Wörter dürfen keine Sonderzeichen enthalten, nur "A" bis "Z".

 (3) Die Wörter sollten eine ungerade Länge (=Anzahl von Buchstaben) haben,
     also 3, 5, 7, 9, 11, ..., 25 Buchstaben (Ausnahme: zweibuchstabige
     Wörter). Diese Einschränkung ist nötig, um eine optimale Vernetzung
     der Wörter untereinander zu erreichen. Wenn Wörter mit gerader Länge
     benutzt werden, können später im Rätsel unter Umständen größere Lücken
     auftreten.
     Die Wörter sollten außerdem nach der Länge sortiert sein; eine zusätz-
     liche alphabetische Sortierung ist nicht zwingend erforderlich.

 (4) Kein Wort darf länger als 25 Buchstaben oder kürzer als 2 Buchstaben
     sein.

 (5) Die Wortschatzdatei darf keine Leerzeilen enthalten.

 (6) Der letzte Eintrag muß unbedingt "***END***" sein, ohne die Anführungs-
     zeichen natürlich.

Mit dem ebenfalls mitgelieferten Hilfsprogramm "PreProcessor" kann man eine
normale ASCII-Textdatei in eine Wortschatzdatei umwandeln. Dazu filtert man
einen beliebigen Text durch den PreProcessor und sieht sich das resul-
tierende File mit einem ASCII-Editor an. Dabei löscht man einfach alle
Wörter, die nicht benötigt werden, wieder heraus (es sind wahrscheinlich
auch einige Wörter bei der Umwandlung verstümmelt worden). So kann man in
wenigen Minuten fast mühelos neue Wortschatzdateien erzeugen.

Aufruf des PreProcessors:
  PreProcessor

Es werden keine Parameter benötigt, die Dateien werden mittels FileRequester
ausgewählt.

Hinweis: Der PreProcessor arbeitet mit einem rekursiven Algorithmus
         (zum Sortieren wird nämlich ein binärer Baum aufgebaut); deshalb
         sollte genügend Stack-Speicher reserviert sein. Gegebenenfalls
         kann der CLI-Befehl "STACK" benutzt werden, um mehr Stack-
         Speicher zu reservieren.
         Ich arbeite z.B. prinzipiell mit 50000 Bytes Stack.
         PreProcessor ist übrigens auch ansonsten ein ziemlicher
         Speicherfresser... bei umfangreicheren ASCII-Dateien wird es
         vermutlich Schwierigkeiten mit 512K-Amigas geben.



Eine Warnung: Besonders umfangreiche Wortschatzdaten haben natürlich den
Vorteil, daß besonders gut vernetzte Rätsel entstehen; allerdings sollte
man auch bedenken, daß die Rechenzeit mit zunehmendem Umfang des Wort-
schatzes rapide ansteigt... und zwar nicht bloß linear!
Meine Empfehlung: man benutzt am besten mehrere (kleinere) Wortschatz-
datenfiles, und lädt immer dann, wenn für ein Datenfile keine Wörter
mehr plaziert werden können, das nächste File nach. Besonders sinnvoll wäre
es dabei, wenn man die Wörter gemäß ihrer Länge auf die Datenfiles verteilen
würde, z.B.

  File         | Wortlänge
  -------------+-----------
  words05.crw  | 25..17
  words06.crw  | 15.. 9
  words07.crw  |  7.. 5
  words08.crw  |  3.. 2



Bekannte Probleme/Fehler von CPC
--------------------------------
 - Seltsames Verhalten bei Speichermangel
   (manchmal Absturz; Grund: unbekannt, aber Verdacht auf Compilerproblem)

 - (selten) Speicher-Fragmentierung (Grund: unbekannt)

Wer selbst ähnliche Probleme hat, möge mir bitte eine möglichst detaillierte
Beschreibung des Problems, sowie der zugrundeliegenden Hard-/Softwarekonfi-
guration zuschicken. Danke.



Zukünftige Erweiterungen von CPC
--------------------------------
 - "GENERIC"-Modus beim Ausdrucken des Rätsels, und zwar über PRT:

 - Hochauflösender Ausdruck über PAR:

 - Plaziertes Wort wieder entfernen

 - Verschiedene Grundmuster zur Plazierung der ersten "Keim"-Wörter

 - Icons für alle Datenfiles

 - NEW-Option

 - NEW_SIZE-Option

 - Benutzerkonfigurierbarkeit (wow, verdammt langes Wort... muß unbedingt
   noch ins Wortschatzfile)

 - möglicherweise dynamische Speicherung des Wortschatzes in einer
   doppelt verketteten Liste o.ähnl. (muß ich noch 'drüber nachdenken)

 - Rätsel mit nicht-rechteckigem Grundriss



History
=======

V3.3    PAL/NTSC-Erkennung durch Abfrage der Höhe des Workbench-Screen
        kleine Schönheitsfehler in Programm und Dokumentation behoben

V3.2    erter RELEASE der M2-Version auf AMOK



Viel Spass.



                   ####################################
                 ########################################
                ##                                      ##
               ##    /¯¯¯¯\   \\|||// \              /   ##
               ##   /      \  \|o o|/  \            /    ##
               ##          |   | . |    \    /\    /     ##
               ##   \      /   | ' |     \  /  \  /      ##
               ##    \____/    \ ~ /      \/    \/       ##
                ##              ¯¯¯                     ##
                 ########################################
                   ####################################
