Hyper TTT 0.95
by Brian Nenninger
http://www.kreative.net/bwn/
bwn@kreative.net

-------------------------------------------------------------------------------
Contents:

System Requirements
Introduction
How to Play
Known bugs/limitations
Source Code Notes
Version history
Future
Feedback information
The Obligatory Legal Stuff


-------------------------------------------------------------------------------
System Requirements
- BeOS R3 (binary is PPC only, but source should compile on Intel)

-------------------------------------------------------------------------------
Introduction:

Well, this is a tic-tac-toe game, which you have probably figured out. Hopefully you'll find it a bit different from the other tic-tac-toe games out there. Some features include:

- play on boards with between 2 and 6 dimensions
- play against the computer(choose between 3 computer strategies) or another
human
- multithreaded (of course)


At this point you may be wondering how to play. Basically, you want
to get a complete row of your pieces while preventing your opponent from doing
this before you. This is easy in two dimensions, a bit more challenging in
three, and pretty annoying in four or more.  Since computers aren't very good at showing more than 2-d images, higer dimensions are represented by separate 
2-d grids. If this sounds confusing, experiment with changing the number of
dimensions(in the Dimensions submenu under the Options menu). Winning rows in
higher dimensions can get fairly complex, as shown by these examples.

Here is a row of X's in two dimensions:
-------------
| X |   |   |
-------------
|   | X |   |
-------------
|   |   | X |
-------------

Here's one in three dimensions:
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | X |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   | X |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   | X |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   | X |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------

And one in four dimensions(may need to make your window bigger):
-----------------   -----------------   -----------------   -----------------
|   |   |   | X |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------

-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   | X |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------

-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   | X |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------

-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
-----------------   -----------------   -----------------   -----------------
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | X |   |   |   |
-----------------   -----------------   -----------------   -----------------

If you have trouble seeing the 4-d row, realize that starting at the top, each
successive X moves down one big square, right one big square, down one small
square, and left one small square.  I realize this isn't the best explanation,
but the best way to get the hang of it is to play a few games.  Speaking of
which...

-------------------------------------------------------------------------------
How to Play

When you launch the Hyper TTT application you will see an empty game board.  It
defaults to 4 dimensions and 4 cells per row.  It also defaults to player 1
being human and player 2 being the computer.  To make a move, just click on the
cell you want to put your piece in.  When someone wins by completing a row, the
pieces in the winning row will flash on and off until a new game begins.  There
are many menu options to customize the game:

File menu:
New - starts a new game, aborting the current game if it was in progress.

Options menu:
Show Score - This will open a window showing the number of games won by each
player and the number of ties. It is visible when the application starts up, but if you close it you can redisplay it with this command

Reset score - Resets each player's wins and the number of ties to 0 in the score window. Good for when you're losing miserably.

Fastplay - If this is selected, when a game ends a new game will immediately
begin rather than waiting for "New" to be chosen.  This is really only useful if the computer is playing itself.(Not that having the computer play itself is
especially useful either, although it's fun to stick it in the background along
with three other windows doing 3d animations and watch the OS stay fully 
responsive)

Size - submenu that allows you to select the number of cells per row. If you
change this while a game is in progress, a new game will start and the current
game will be aborted.

Dimensions - submenu allowing you to change the number of dimensions. As with
Size, changing this will abort the current game and start a new one.


Player 1 and Player 2:
These menus let you change who controls the players. "Human", oddly enough,
causes that player to be controlled by a human. "Offensive", "Defensive", and
"Balanced" are computer strategies, whose names should give you some idea of
their general approach. "Offensive" is constantly attacking, blocking its
opponents lines only when in immediate danger of losing. "Defensive" is the
opposite; it puts top priority on blocking its opponents threats. "Balanced"
tries to use an optimal mix of the other two strategies.


Cells:
This lets you choose what Player 1 and 2's pieces look like.  The default is
"Color Squares", which are just solid red and blue rectangles. "X's and O's"
will use blue X's and red O's, still not terribly exciting. It would be cool
if someone were to hack in support for arbitrary bitmaps or animations.

------------------------------------------------------------------------------
Known bugs/limitations:

I have only run this program on a Power Mac 7500 with a 604 upgrade card. I 
don't know of any reason why it wouldn't work on other Macs or BeBoxen, but
I can't make any promises. I don't have access to an Intel BeOS machine; the source should compile but no guarantees. If someone does get it compiled on Intel, feel free to email me the application and I'll put it on BeWare and my web site. Aside from that, there are no known bugs in this release; please let me know if you find any. Extra credit if you also fix them.

------------------------------------------------------------------------------
Source Code Notes:

The compiler may spit out a lot of warnings when compiling "4dBoard.cpp", and this is normal. 4dBoard.cpp is nearly all platform-independent code for the internal data structures and computer AI; the remaining files deal with the BeOS GUI. I don't claim the code is particularly elegant or well documented, I just claim it mostly works.


-------------------------------------------------------------------------------
Version history:

3/24/97 : 0.8  - Initial BeOS release
5/25/98 : 0.95 - Okay, so I took a bit of a break. Several memory and threading
                 bugs identified and corrected. GUI improved and about box   
                 added. Made PR3 compliant.

-------------------------------------------------------------------------------
Future:

This is probably the last release from me; for the forseeable future I'll be 
doing Rhapsody/Yellow Box development. If there are any critical bugs I'll
release an update, but if you want better AIs/better graphics/other features
you'll have to write them yourself. You've got the source after all...

-------------------------------------------------------------------------------
Feedback information:

If you have any comments, bug reports, or questions, please email me at
bwn@kreative.net.

-------------------------------------------------------------------------------
The Obligatory Legal Stuff

This program is distributed under the terms of the GNU General Public License,
a complete copy of which is in the file "gpl.html". Highlights: you can modify
and redistribute the software freely, and there is no warranty whatsoever.
