Author: James Swafford
Date: 18:59:46 09/09/01
Go up one level in this thread
On September 09, 2001 at 18:08:12, Bob Green wrote: >I agree with the others who have posted - it **is** addictive and it **does** >take some time. > >I would add the following link as both having a lot of good information and >linking to even more: > >http://www.xs4all.nl/~verhelst/chess/programming.html > >One of the links missing from this is the following page titled "Build a >Grandmaster one Step At A Time": > >http://www.xs4all.nl/~verhelst/chess/programming.html Hey - that looks familiar! :-) The correct URL is www.galahadnet.com/chess/chessprg. You may also find www.galahadnet.com/chess/galahad and www.galahadnet.com/chess/prophet interesting. -- James > >I am going to quote verbatim from this site, which provided me a fine way of >both structuring my work and making sure I didn't "miss" anything: > > 1 Display the board and some skeletal menus. > 2 Create the data structure to represent the position. > 3 Write all the piece drawing routines. > 4 Initialize and display the board. > 5 Write the Make and Unmake functions. > 6 Devise and implement a method for the user to move the pieces (i.e. >click-point-click). > 7 Add legality checking to ensure the user's moves are legal. > 8 Add the basic options Takeback and Newgame. > 9 Write some debugging tools. > 10 Write one or more move generation routines. Some possibilities - > GenerateCaptures, > GenerateNonCaptures, > GenerateEscapes. > 11 Add a user option to display possible moves. It'll help debug those move >generation routines you just wrote! > 12 Add end-of-game tests. These include checkmate, stalemate, draw-by-rep, >draw by lack of mating material, draw by the fifty move rule. Test after every >"over the board" move. > 13 Implement the computer player using just the root move list. At this point, >the computer isn't searching - it's just making any ole' move. > 14 Add the movelist (moves that have been played over-the-board) to the >display in short algebraic notation. > 15 Take some time to finish your GUI. > 16 Implement the evaluator. Score only material imbalances for now. > 17 Implement a full-width search function. > 18 Devise some method of move ordering. > 19 Write a static exchange evaluator (SEE) to aid with move ordering. > 20 Display the principal continuation (for each depth) to the screen. > 21 Implement timing. Display clocks to the screen. > 22 Add search data to the display (depth, nodes, nps, evals, score ...) > 23 Write code to run test suites. > 24 Write all kinds of tools for evaluating data from test suites. > 25 Do some low level tuning before adding many heuristics. > 26 Implement separate search functions for root position and the quiescence >stage. > 27 Add heuristics to the searchengine - hashing, null move, main var search, >pvs, killers, history,extensions. Continually test your performance with some >tactical test suite, like "Win At Chess." > 28 Enhance the evaluator's knowledge. > 29 Spend time tweaking with more positional test suites. > 30 Add a save/load feature following the PGN standard. > 31 Develop an opening book. > 32 Add pondering. This means the engine "thinks" on the opponent's time. > 33 Add support for endgame tablebases. > 34 Write an ICS interface (allows internet play on a chess server). > 35 Experiment with learning algorithms. > 36 Add Auto232 - interfaces programs via serial port. > >Best regards, > >Bob Green
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.