Index of /aggames/VARIOUS/WORDSEARCH

      Name                    Last modified       Size  Description

[DIR] Parent Directory 21-Dec-2005 13:14 - [TXT] INSTALLLIBRARY 06-Jun-1991 10:19 1k [TXT] INSTALLLIBRARY.info 14-May-1996 12:36 1k [DIR] LIBS/ 21-Dec-2005 13:12 - [DIR] SRC/ 21-Dec-2005 13:12 - [TXT] WORDSEARCH 06-Jun-1991 10:18 25k [TXT] WORDSEARCH.README 30-Dec-1994 14:04 2k [TXT] WORDSEARCH.info 14-May-1996 12:36 1k [TXT] WSEARCH1 06-Jun-1991 10:17 12k

Wordsearch Generator

This is an automated wordsearch generator which supports puzzle sizes
limitted (by defines) to 1000X1000 and up to 50 words.
Words orientations can be limitted to any subset of the eight primary
directions and the puzzle can be rotated or flipped. 
It has a spartan but functional user interface highlighted by the 
req.library and can output the word list, key and puzzle to file or prt:.
The system default font under WB 2.0 is supported for the puzzle window.


If you've ever tried to create a simple wordsearch you know the hardest
part is getting past staring at a blank page.  So I wrote this program
to randomly place words within a puzzle.
It works by generating a first placement and then sequentially moving
through the puzzle until the word fits.  Once a fit is found it goes
to the next word.  If a fit cannot be made the previous word is attempted
to be refitted and if it cannot then it steps back to the word before it.
Therefore a complex puzzles may seem to take forever but given 
enough time it will always determine if the words can be fit.
Because forever is a long time I've added a requestor to abort the algorithm.


Things to consider when running the program:

-Boost the stack: 4000 won't cut it for even very simple puzzles.
 If the stack isn't large enough the program shouldn't crash but
 it will shut down leaving the windows to clutter your workbench.
 ei Stack 20000
 
-Use FastFonts (FF on Wb1.3) or the text scrolling will be abominal.

-If you have 2.0 try changing the system default text to something larger.
 This will effect the Puzzle display window so you can make the puzzle large
 enough to fill the WB screen and then use GraphicDump to print the puzzle.
 I prefer printing with a DTP but this is a good poor man's solution.


Hopefully the product IS intuitive so I'll just explain the general
operation and the menus.  The speed of the interface also needs
improvement but for now its useable.

The Wordlist Window:

Here you enter your words.
Click in the window and you'll see a cursor appear so you can enter a 
word.
Hitting return will push you down to the next line for entering another word.
Note: this occurs even if the next word is below the bounds of the window

The scroll bar at the side of the window lets you change the view of the
word list.

If you need to edit an entry just click where you want to change and use
the delete or backspace or any of the special editing available with
Intuition string gadgets.
There is also a menu for some more sophisticated editing of the wordlist
which will be discussed later.


The Puzzle Window:

Here the last generated key or puzzle is displayed.
If the puzzle is larger than the window the scroll bars at the bottom and
right side can be used to scroll about.
What is displayed is controlled by a menu which will be discussed later.


(Is it later already?)
The Menus:

Project - controls printing and saving/loading a puzzle and wordlist

	New  -    clear the wordlist

	Open -    load a saved file
		  will call up a file requestor
	Save -    save under the current file name
		  if a file name has not been set the requestor will come up
	Save As - bring up requestor to change save filename and save the file
	
	Print - text dump of the wordsearch
		Wordlist - prints the wordlist as it appears in wordlist window
			   default output is to PRT:  See Print Redirect
		Display  - prints the display as it appears in the puzzle window
			   default output is to PRT:  See Print Redirect
	Print Redirect
		To File - if active, will bring up requestor for where
			  to print the output when a print options is selected
		To Clipboard - not implemented (yet)
		
Puzzle - controls generation of new puzzle information
	Dimensions - set the dimensions of the puzzle via requestors
		     a new key and puzzle will be generated automatically
	Generate	
		New Key -        recreate the puzzle from the ground up
		
		New Puzzle -     only replace the filler the goes around words
		
		Try to Overlap - if active New Key will try to position words
				 so they are tightly overlapped
	Word Direction - How words can be positions in the puzzle
		Left -     only left to right
		Left Down  etc
		Down
		Right Down
		Right Up
		Up
		Left Up
		
Display - controls how the puzzle is displayed
	Key -       display the key, only the letters placed from the wordlist
	            are displayed
	Puzzle -    display the key plus filler to hide the words
	Direction - the puzzle/key can be fliped and rotated 90 degrees
		    the signs indicate if the puzzle is flipped along that axis
		    and the order indicates the horizontal and vertical axis of
		    the display
		+X+Y - display as generated
		+X-Y 
		-X+Y - reverse the direction of the x axis
		-X-Y
		+Y+X - width along the vertical and height along horizontal
		+Y-X
		-Y+X
		-Y-X

Wordlist - some manipulation commands for the word list
           acts on the word active before selecting the menu
	To Buffer - 	copy the word to a temporary storage buffer
			there is only one word stored in the temporary storage
	From Buffer - 	copy to the word from the buffer to the active word
	
	Insert - 	make room for a word at the current location

	Delete - 	delete the current word moving all subsequent words up
	
	Clean Up - 	remove any blank words
	
	Uppercase All - convert all words to uppercase
			puzzle is not affected so use this before you New Key
	Sort - 		sort words alphabetically


Well that's it accept for the generic disclaimer that I'm not responsible for
anything which results from you running this program, good or bad.

The program IS public domain since I feel it can be seriously improved
speed wise and I probably will not get around to working on it for a while.

As such I've included the source, in C.
I've also included the source for reqglue.o from the ReqLib package which has
one function added so the default font height and width can be be retrieved
easily in a C program.  To recompile you'll also need the programmer kit for
the req.library available on fish.
Compiled under Lattice 5.04.


Thanks to Anders Bjerin for putting together the C Manual on Fish 
which gave me the courage to attempt the intuition interface, Colin Fox and 
Bruce Dawson for my favorite requestor library, and to any and all in the
AMiga Users of Calgary who I've annoyed with programming questions 
particularly resident guru Stephen Vermeulen.

Craig Lever
RR #1,
Airdrie, Alberta, CAN
T4B 2A3

Fidonet:
Craig Lever @ 1:134/27, AMUC Express (Calgary Alta)     (403) 282-5137
                                                              282-5171
							      282-5224
							      282-5238
            @ 1:134/13, The SuperBox BBS (Calgary Alta) (403) 288-0531
	                                                      288-2396