This is the result of reading a book on programming Java. The program is from 1998, but apparently still used according to my server logs.
The cards are moved with the mouse. Just click on the card to move it, don't drag it. If there is only one possible move the card will move by itself, otherwise click on the destination. A click on the card back to the left flips three cards, a right click anywhere does the same.
The keyboard can be used to the same effect. The seven columns of cards are numbered 1-7, the visible card on the left is 0 and the aces on the right are a or 8. The spacebar flips three cards from the hand.
The buttons does the following (keyboard equivalent in parentheses):
The rules are the ones I learned as a kid. The deck of cards left in
the hand (shown by the program as the back) can be turned three times,
always three cards at a time. You are not allowed to see the two other
cards you turn. There is no concept of points or score.
The source is in a main program file, Kabale.java, and in an auxiliary class, StackLayout.java. Both should be compiled together. All the images are in the kabale.jar
The finishing algorithm is not optimal, but improving it is left as an exercise to the reader (read: not so easy). The problem is not moving the cards, when that is the proper strategy. Currently the programs does every move possible.
The little faces are made by Tuomas Kuosmanen, http://tigert.gimp.org.