This program plays noughts and crosses.  It was written by Richard Cavell, a 23 year old medical student
using Visual C++ 6.0.  It has been uploaded to various programming websites, and all parts of it are
freely redistributable.

The computer player is unbeatable, but can always be forced to a draw.

I wrote this program simply to teach myself the Windows GDI.  I started it in 1999, and only finished it on 
20 March 2001 after I stumbled across Steve Chapel's code to allow the computer to play perfectly.

The source code is freely available for any person who wishes to learn from it.  Since most of this code was
written two years ago when I was only just learning object-oriented/structural programming, it is quite
amateurish.

I have taken due care, but obviously I can make no representation that these files are completely virus-free
or that they won't cause harm to your system.  Always have a backup plan in place.

Compiled on Visual C++ 6.0 with no service packs applied.

Exercises for the reader:

- Recompile with the latest service pack
- Ensure that the code works perfectly on all versions of Windows
- Rewrite some of the code to make it faster and look far more professional
- Alter the screen update code to allow a partial refresh 
- There is a slight flicker when the comments change or when a move is played, and also when PlaySound()
  generates a sound effect, especially on the 9th move
- Add better sound effects
- Add functionality to make the computer move less predictably, and perhaps imperfectly sometimes.
- Accelerate it with DirectX

At the moment I am working on the game '5 in a row', which is played on a grid of arbitrary length and width.
Each player alternates turns and places their symbol on the grid.  The player must get 5 of his symbols in
a row.  The game will have a fully-3D mode, using OpenGL.

Please feel free to contact me about the code (but don't take this code as any kind of example of
professionally written C++).

Richard Cavell
richardcavell@mail.com
Melbourne, Australia
20 March 2001
