Project Description
An open source micro chess program which attempts to be smaller than the Commodore-era Microchess. It is implemented in C#, C++, VB and XNA. Bundled tutorial.

Huo_Chess_0961_1_small.jpg

Analytical Project Description
Huo Chess by Spiros (Spyridon) Kakos (http://www.kakos.com.gr) is a free and fully open source micro chess program that attempts to be smaller in size than the Commodore-era Microchess. The goal is to create the smallest chess program that exists. More versions are to come in the future. I started developing the program in CLI C++ v8.0 (with Visual Studio 2008) and I named it "Huo Chess" for personal reasons. The latest version (v0.95) is developed in C#. Other language editions (in C++, VB and XNA Framework) were maintained until version 0.82 at least (I will update the other languages editions as soon as I have time).

The program is also distributed via
For a tutorial on how to develop a chess software application on your own see This tutorial series is based on the Huo Chess and it is written by the creator of Huo Chess himself (that is, me - Spiros Kakos).

Huo_Chess_0961_2_small.jpg

The current C# Console Application version (0.961) of Huo Chess is 55 KB in size, while the Windows Application edition (with GUI) is 119 KB in size. The respective emulation of Microchess (the first microchess from the Commodore era) in C is 56 KB.
However, it must be noted that the original Microchess, written in pure Assembly, was about 1 KB (http://www.benlo.com/microchess/microchess1.html)…something I believe no one will ever match!
Huo Chess plays decent chess and has managed to draw Microchess, but unfortunately will probably lose if it plays with Garry Kasparov :)
Its algorithm can be used to study the underlying logic of a chess program or as a basis for your own chess program.

For games played by Huo Chess and for an analytical explanation of its underlying logic, see http://www.codeproject.com/KB/game/cpp_microchess.aspx. The program is heavily commented in plain English (some Greek exist also) and someone can easily understand how it works (especially in combination with the Codeproject article on Huo Chess).

The program implements the MiniMax algorithm. Huo Chess plays with the material in mind, while its code has some hints of positional strategic playing embedded. More analytically: When the program starts thinking, it scans the chessboard to find where its pieces are (see ComputerMove function) and then tries all possible moves it can make. It analyzes these moves up to the thinking depth I have defined (via the ComputerMove -> AnalyzeMove1HumanMove -> AnalyzeMove2ComputerMove path), measures the score (see CountScore function) of the final position reached from all possible move variants and – finally – chooses the move that leads to the most promising (from a score point of view) position (ComputerMove function).

Huo Chess 0_961 algorithm_1_small.jpg

Please contact me via email or through the Discussions section of the project for questions regarding the source code or the algorithm of Huo Chess.

Last edited Aug 12 at 3:29 PM by Spiros_Kakos, version 19