GNU CHESS - THINGS TO DO 5.The routine repetition() is still not correct since it considers only where a piece is placed not the type of the piece. 6.A tournament program to play chess between two different chess programs. This could be done by extending xchess so it could play two chess programs against each other. If such a beast exsisted we could play different versions of gnuchess against each other. And calculate ratings for different machines. A nodes/sec - rating table would be very nice to have. Also we could test different evaluation heuristics against each other. 7.A chess database to store historical games. 10.gnuchess does not handle stalemate correctly(is this still true?) 13.Convert the type of all time variables to time_t. 18.Check gnuchess compliance with GNU Coding Standards. 19.Readability of the code can be increased by using these suggested types where apropriate instead of just plain short. typedef enum { white, black, neutral } color_t; /* OR */ typedef short color_t; /* (0..2) */ typedef enum { no_piece, pawn, knight, bishop, rook, queen, king, bpawn } piece_t; /* OR */ typedef short piece_t; /* (0..7) */ typedef enum { a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4, b5, b6, b7, b8, c1, c2, c3, c4, c5, c6, c7, c8, d1, d2, d3, d4, d5, d6, d7, d8, e1, e2, e3, e4, e5, e6, e7, e8, f1, f2, f3, f4, f5, f6, f7, f8, g1, g2, g3, g4, g5, g6, g7, g8, h1, h2, h3, h4, h5, h6, h7, h8 } square_t; /* OR */ typedef short square_t; /* (0..63) */ typedef short piececnt_t; /* (0..32) piece count */ typedef short offset_t; /* (-63..63) distances on the board */ typedef short score_t; /* (-32768..32767) position scores */ typedef short boolean_t; 20.write more documentation 21.Fix this bug report Article 95 in gnu.chess: From: campbell@rnd.GBA.NYU.EDU (Bruce Dietrich-Campbell) Subject: A Couple of Minor Bugs Summary: mate ignored, removing en passant Message-ID: <2004@rnd.GBA.NYU.EDU> Date: 21 Feb 90 19:41:40 GMT Reply-To: campbell@rnd.UUCP (Bruce Dietrich-Campbell) Organization: NYU Stern School of Business Lines: 43 Good fighting spirit!! Gnuchess fights on even when mated !-) ------------------------------- Try the following 8| | |*R | | | |*K | | Board Layout moves: |-------------------------------| 7| | | | | | R | | R | white black white black |-------------------------------| 6| | | | | | | | | kg2 kg8 f5e6 b8e8 |-------------------------------| rh7 rb8 f7g7 g8f8 5| | | | | | B | | | rf7 g7g8 f8f7(??) |-------------------------------| bf5 4| | | | | | | | | That's the way |-------------------------------| to fight!! 3| | | | | | | | | |-------------------------------| 2| | | | | | | K | | |-------------------------------| 1| | | | | | | | | ------------------------------- a b c d e f g h ------------------------------- Try the following 8| | | | | | | | | Board Layout: moves: |-------------------------------| 7| | | | | | | | | white black white black |-------------------------------| 6| | | | | | | | | ke2 kb2 c2c4 d4c3 |-------------------------------| pc2 pd4 5| | | | | | | | | ie. black takes |-------------------------------| en passant 4| | | |*P | | | | | |-------------------------------| Now try the 3| | | | | | | | | remove command. |-------------------------------| The white pawn 2| |*K | P | | K | | | | doesn't reappear. |-------------------------------| 1| | | | | | | | | ------------------------------- a b c d e f g h ............................................................................. Bruce Dietrich-Campbell ARPA: campbell@rnd.gba.nyu.edu USENET: ...!{uunet,rocky,harvard}!cmcl2!rnd!campbell Try moving a rook to row and and the undo (it becomes a pawn!!!) And also fix undo of promotions when using edit to setup a position. 22. Regression testing of strength against a bank of positions. The regression should compare performance between two releases, assess solution times, speed in nodes per second, accuracy of evaluation, and depth and then produce a comparison table, along with a final assessment of which version is superior. 23. Complete rework of the book, eliminating all illegal moves, providing a score for each variation and then use dither to choose a random move. Support code to enter variations based on the score. 24. An analyse mode, feed gnuchess with a game. gnuchess will analyse each posistion in that game giving it`s own principle variation and score and a principle variation and score for the played move, if they are not the same. 25. New code structure: gnuchess.h: As is! gnuchess.c: (just the main program) from gnuchess.c eval.c: (evaluation routines) from gnuchess.c move.c: (move generation) from gnuchess.c tran.c: (transposition table) from gnuchess.c book.c: (opening book) from *dsp.c and gnuchess.c search.c: (move tree search) from gnuchess.c dsp.c: (common display routies) from *dsp.c nondsp.c: (the non common nondsp routines)from nondsp.c uxdsp.c: (the non common uxdsp routines) from uxdsp.c nuxdsp.c: (the non common nuxdsp routines)from nuxdsp.c 26. Better forced mate recogition by adding all check moves to the quiescent analyse (this probably means that the KingScan heuristics can be removed) 27. an empty command line should display the board, to be compatibe with unix chess in CHESSTOOL mode. 28. The CHESSTOOL mode should not be a compile time option but rather an option depending on a flag (-c) or if gnuchessr is named chess.