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.