Is there any Chess game API , purely written in javascipt ? No Flash! Anybody know the algorithm(in general) used in Chess games ?
How does a chess algorithm work?:
What a chess computer tries to do is generate the board-position tree five or 10 or 20 moves into the future. Assuming that there are about 20 possible moves for any board position, a five-level tree contains 3,200,000 board positions. A 10-level tree contains about 10,000,000,000,000 (10 trillion) positions. The depth of the tree that a computer can calculate is controlled by the speed of the computer playing the game. The fastest chess computers can generate and evaluate millions of board positions per second.
Once it generates the tree, then the computer needs to "evaluate the board positions." That is, the computer has to look at the pieces on the board and decide whether that arrangement of pieces is "good" or "bad." The way it does this is by using an evaluation function. The simplest possible function might just count the number of pieces each side has. If the computer is playing white and a certain board position has 11 white pieces and nine black pieces, the simplest evaluation function might be:
11 - 9 = 2
Obviously, for chess that formula is way too simple, because some pieces are more valuable than others. So the formula might apply a weight to each type of piece. As the programmer thinks about it, he or she makes the evaluation function more and more complicated by adding things like board position, control of the center, vulnerability of the king to check, vulnerability of the opponent's queen, and tons of other parameters. No matter how complicated the function gets, however, it is condensed down to a single number that represents the "goodness" of that board position.
For building your own javascript 'engine' that's able to play chess at a basic level check Step by Step Javascript Chess with CPU oppo
If you scroll down it contains the source code of this, must say very limited, chess engine purely based on javascript. It also has a working version of the game to try out and all the necessary resources for building your own.
Some useful resources:
- First implementation of a chess engines in Javascript
- The Anatomy of Chess Programs, by Tony Marsland, is a nice intro on how current chess programs work.
- Chess Space
- Paul Verhelst - Question and Answers
- Bibliography on Minimax Algorithms.
- Crafty is a strong program whose source code is freely available and, for a chess program, quite readable.
- Unfinished Work and Challenges to Chess Programmers
- Is there a perfect algorithm for Chess? Discussion here on so
The Computer Chess Blog documents the creation of a C# chess engine. It's not JavaScript but the syntax is similar enough that you might get a good understanding of the different chess engine components.
Also if you want your chess engine to be web enabled you might want to consider using C# with a Silverlight GUI. You will get better performance from .NET than you would with JavaScript. As you will learn this will translate into a stronger (deeper searching) chess program. A good example of Silverlight Chess can be found at GeeksWithChess.com
AjaxChess / GarboChess is implemented entirely in JavaScript and is quite strong.