OpenJigsaw readme
OpenJigsaw is a simple jigsaw puzzle program game written in C++ using wxWindows (http://www.wxwindows.org/). I am releasing it under the Zlib license (see COPYING), which means you can do pretty much everything with it except claim that you made it. It should work under most platforms that wxWindows supports (though DOS might be a problem). I've only tested it with MS Windows XP and FreeBSD 5 though.
You can find the latest version of the source code (and some binaries) at http://marijn.haverbeke.nl/jigsaw.
Installing
If you can download a binary for your platform all you need to do is unzip it and run it. Building from source is a little harder (but still no rocket science).
First, make sure you have wxWindows (version 2.x) for your platform installed. They provide pretty good help for building it from source, but I had some screwups trying to compile it on Windows.
In Unix environments with GCC (or Cygwin/MinGW on MS Windows) you can use the Makefile provided with the source code. If your wxWindows headers and libraries are in a strange place you might have to change the INCPATH and LIBPATH, and the location of wx-config. Then do:
make PLATFORM=[your platform]
The make program has to be GNU make (called gmake on some platforms). Regarding platform, the makefile currently only distinguishes between "windows" and other platforms, so put 'PLATFORM=windows' if you are on an MS Windows platform, and just make something up for other platforms. You can also add 'TYPE=debug' to build a debugging version.
For other compilers just use your favorite IDE to add all the .cpp and .hpp files into a project and compile it. Use wx-config to get the correct linker and compiler flags for your platform ('wx-config --libs' and 'wx-config --cxxflags'). Also (obviously) tell the compiler to link in the wxWindows library.
Todo
Currently the size dialog does not look as pretty as it should. This is because some problem (either a bug or my own stupidity) with the wxGTK library - see sizedialog.cpp for details.
I'll probably end up implementing pixel-correct hit detection on the pieces, so that if you click real close to a piece but not on it, it is not picked up. Right now if pieces are on top of each other you sometimes do not get the piece you clicked on because you hit the area of another piece that was close to the mouse.
