Author: Tord Romstad
Date: 11:09:02 09/15/03
Go up one level in this thread
Welcome, Gregg! On September 15, 2003 at 13:54:52, Gregg Jackson wrote: >Hi >I am writing an article about chess programming for an AI site, based entirely >on my own experience, I would be grateful for opinions from pro or experienced >chess programmers. Its meant to be basic and introductory.. > >=============== > >Simple chess programming project > >1) Draw the board and an interface to it for the player(s). >This should give you a chess game that two people can play, taking it in turns >to move a peice, sharing the mouse in the process. If you want to be really >flash you can write a networked version but its your decision. Having completed >this stage you will have had to write code to reject invalid moves for each >player, as well as reject a move when the wrong color piece is selected. This >may sound basic plus not have any AI, but believe me there is a lot of work here >particularly if this is your first chess program. The meat of all that will >eventually be required is here though - the looping, branching, checking etc >that should give you a good idea of what happens in all chess programs, >regardless of how you do your code. > >2) The next step in this evolving chess project is to make room to incorporate >AI (trumpet fanfare!!). At this point you could either write some AI 'in house' >ie as part of the chess program itself, or write a separate AI routine with no >graphics etc that runs as a separate program. For the latter, you can design a >configuration screen or menu option where for both Black and White you can >select either Human or Computer player, and if you choose Computer you specify a >folder where text files/cookies etc will be placed. >Whenever it is a computer players turn, your chess program dumps a small text >file or something similar to this directory, then waits/polls the directory for >the small text file the external computer program will return, then reads it in, >validates it and moves that players piece accordingly. The beauty of this >approach is that you can can play against your computer either as Black or >White, or even have the computer play against itself* You can also write your >external AI player without any need of a graphical interface etc, allowing you >to concentrate purely on code. You can enable this in your program above without >having to even write the AI yet too, which we will get to next. > >*Or later, other AI's! Both of 1 and 2 can be skipped entirely, thanks to the existence of GUIs with open chess engine protocols. The xboard protocol is the most popular, but the UCI protocol is also becoming more common. Many programmers support both protocols in the same executable. Most beginning chess programmers today don't design any user interface at all in their program. They just make their programs conform to one or both of the above-mentioned protocols, and then run the programs in one of the many excellent freeware or commercial GUIs available. >3) The AI >Having written all the code necessary to validate manual moves made by the >players, then written the code to validate incoming moves proposed by Computer >players (unless you managed to use the same routine for both), you will be in a >prime position to start dreaming up Chess AI - in fact some ideas may be >floating around already. An easy and good first step now is to write an external >Chess AI program that reads in a text file, lists all possible moves it can >make, then just picks one at random, and returns a text file detailing this move >for your above system to read. You should be able to knock this up fairly >quickly, then you can set your system up above and play against this, your MKI >AI :) It can certainly help debug the entire external mechanism, and the board >system you already wrote, plus it can serve as a bottom level benchmark for if >you start making your Chess AI 'think'. This seems like good advice. >4) What is a good move in chess? >This is what its all about really. There is not much more one can say, beyond >that this is where all the fun lies. Most people will agree though that what is >definately needed here is speed. However, with all the game side, and 'boring >stuff' out of the way, you can concentrate purely on the AI, and being separate >from the game mechanism, you should be free to choose any approach you want. > >Some AI thoughts >Assigning points to pieces >Assigning points to squares >Bit boards For more information, try the "Links" section in the "Computer Chess Resource Centre" on this board. There are many excellent introductions to computer chess programming out there. >Have fun! You too, and good luck with your article! Tord
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.