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.
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.980) 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).
The current C# Console Application version (0.980) of Huo Chess is 40 KB in size, while the Windows Application edition (with GUI) is 77 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 in size (seel
)…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
. 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 -> AnalyzeMove
1HumanMove -> Analyze
ComputerMove 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).
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.