Computer Chess Club Archives


Search

Terms

Messages

Subject: This is the place!

Author: Russell Reagan

Date: 21:04:29 07/12/02

Go up one level in this thread


On July 12, 2002 at 22:54:42, Zachariah S Edwardson wrote:

>Hello,
>
>I am wanting to learn chess programming.  I have a CS minor and I do know how
>min-max and alpha-beta searches work.  I know there are many programs code to
>download.  Which programs should I look at and any web pages I should look at?
>or is my programming knowlege too little to be able to program a chess program.
>
>Thanks
>
>Zach Edwardson

If you have a minor in CS you should know enough to at least make a chess
playing program. The article that initially got me started was at gamedev.net.
It has 6 parts titled: Getting Started, Data Structures, Move Generation, Basic
Search, Advanced Search, and Evaluation Functions. You can find it here:
http://www.gamedev.net/reference/programming/features/chess1/

Probably the most useful site for learning this kind of thing is Bruce
Moreland's webpage at http://www.seanet.com/~brucemo/ He covers quite a few
topics and gives psuedo-code for most things (and his psuedo code looks 99% like
C code, so that's good).

There are plenty of other sites that cover general overviews of chess
programming, and it's very easy to wander off into the bushes if you aren't
careful. For example, you might run across a site that is talking about razoring
or other pruning techniques. You need to hold off on things like that. There is
nothing wrong with becoming familiar with those things, but take it from me (I
learned the hard way), you will do much better to get a program working first
and not worry about speed or adding advanced features. If you try to plan
everything out and make it fast and add multiple pruning techniques, you're
going to feel overwhelmed and probably not get very far. There are five main
things that you need to focus on at first (these are from the gamdev.net site).

1. A way to represent a game of chess in memory
2. A way to determine if a move that was played is legal (and a way to generate
legal moves for our search later on).
3. A way to pick between all of the moves (this is basically the search).
4. A way to compare positions, determine which side is winning, and by how much
(this is evaluation).
5. A user interface (this should be simple the first time around, text only).

Basically try to get a grasp for the major components of a chess engine, then
look at some source code for various engines, and try to figure out what that
program is doing and how it is doing it. The most popular beginner's engine that
people learn from is Tom's Simple Chess Program (TSCP), and there are plenty of
other basic ones. Maybe Dann Corbit will post his recommendations. He keeps up
with amatuer engines like no one else. You can find a lot of engines here:
http://www.wbholmes.de/linkse_e.htm and here is another good site that has a lot
of good links: http://www.wbholmes.de/linkse_cpro.htm

My last bit of advice is to just bite the bullet and realize that you're not
going to accomplish this overnight. It's going to take time and effort, so just
accept it and enjoy learning new things and working on your program. And don't
be afraid to ask questions here, there are masses of people that have experience
with computer chess programming that range from amatuer hobbyists like myself to
authors of some of the best chess engines in the world.

Good luck!

Russell



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.