Matchstick Puzzle

By moving two sticks and the button, try to
make the fish swim in another direction.

Solution

This applet is capable of handling any number of matches and buttons, and can be made any size. It is also possible to specify a different matchstick length if necessary. The default length, shown in the example, is 69 pixels. Any desired background color can be specified. I'm using light gray here, to blend in with the rest of the page. The applet will automatically select an appropriate shadow color.

The controls are relatively simple: buttons can be moved around. Matches can be moved or rotated, depending on where you click. If you point at or near the head or the other end, the match will be rotated. Otherwise it will just be moved.

A different example, with just three sticks, slightly longer, no button and no "snapping".
There is a special applet parameter called "snap", set to either "yes" or "no", specifying whether a match should adjust its alignment when dropped. When "snap" is turned on, a rotated match will come to rest at a multiple of 15 degrees. This makes it easier to build squares and triangles. A moved match will come to rest with its head or other end "attached" to the head or other end of another match, if there is one within a short distance.

To clarify, "attached" matchsticks meet at a point slightly outside their physical form, as shown in the picture to the left. This is to ensure that there is enough room for several matches to meet at any corner or junction. The same thing applies to the other ends.

Since this applet has been sold and I no longer own the rights to it, I can't provide any downloadable version. I'm just displaying it here as a source of inspiration to other Java developers.