This program, and coding in general are just a hobby to me; I have a full-time day job which has absolutely nothing to do with writing VB programs, so working on Bill's Solitaire Tester happens only sporadically. Here are a few things I will be looking at when available time and inclination line up:

Solvable games irrespective of logic

I've had a few requests to investigate just how many games are solvable without following any logic at all, but simply playing every possible option available at every instance of a single deal - effectively an infinite number of undo's, and using brute force to see if a game was in some way solvable. For a single deal, the number of ways you could play that game start to multiply very quickly and first looks at this problem indicated that there are in the region of 2^50 to 2^100 ways you could play any game. So this is going to be quite a challenge, but there is at least one other programmer out there working on this, and he has generously shared some techniques he is using to reduce the number of runs required to see if the game is solvable.

Improve the logic

I really need to run some more trials using different logic priorities - I suspect I could shave off a few points by switching some of the logic around. I've had some great advice by email (thanks guys!) on using some (what to me is absolutely unintuitive) logic to improve the chances of winning. These suggestions will need some thought and testing but may help.

The other thing I might try to do is add more finesse to some of the decision making. A particular kind of move may make more sense or have a higher priority at the beginning of the game than nearer the end. A human player knows this sort of intuitively but it is bit harder to turn this into code.

Investigate other kinds of Solitaire

Klondike is just one of the huge family of Solitaire card games. It might be fun to use some of my existing code to take a look at the other games.