Author: Robert Hyatt
Date: 10:19:07 09/19/98
Go up one level in this thread
On September 19, 1998 at 11:14:40, Guillem Barnolas wrote: > > I am currently developing a pascal chess program which I think will be >quite weak, because to generate legal moves I'm generating all the moves and >then discarding the ones that leave the king in check... Generating only legal >ones seems quite tough.. I now crafty does, but considering it's in C and uses >bitboards, it's quite difficult for me to understand it.. I tried tscp, but it >uses the same technique that me (I should say i use the same that it uses..;) I >have thought of some way of doing this, but seem a little weird... I'll try to >explain in few words... I thought I could go from the king_position looking if >there are friendly pieces blocking possible attacks...(I think I might have seen >this in Crafty or some other program, as X_ray attacks...) and mark those >friendly pieces...afterwards i go through all the board and for non-marked >pieces I generate all the movements.. for pieces marked once I generate captures >to the attacking piece and movements on that direction.. for the pieces marked >more than once I generate no movements... I don't know If this would miss >anything... I haven't implemented it because I'm still fighting with the program >;-D... > this is not really necessary. I generate legal moves only if I start off in check, because it is more efficient (in my code) to generate only legal moves than it is to generate a bunch of moves and cull them one at a time by noting that the king is in check after making them... But for the normal case, I generate all moves, and let the search at the next ply reject a move from this ply if it can capture the king, which means that move was illegal. It doesn't happen often, *except* when you are in check. Then almost all moves are illegal... > Another thing is I don't have principal variation storing quite clear... I >saw in one page it's usually stored as a two dimension array, but don't >understand quite well the updating part... I mean, If I'm on ply 4 and happen to >find a better movement than the one I had before I still have to know If I was >following the PV, because If not I would mess everything up... in your q-search, you will do something like "score=Evaluate()" then ask if (score > beta) return beta; If you get past that, this score is a candidate to be backed up. Whenever you "back up" a score, you also simply back up all the moves that led to this score... sort of a "matched set" of moves to lead to a position and the score when you get there... > > And to finish, I have been looking for some books on the subject but happen >to see that all are out-of-prints one, except from the "Kasparov vs Deep Blue: >Computer chess comes of age" which seems to be quite an historical aproach but >seems to cover few technical aspects... > > If you can help me on any of this subjects I would be very pleased....
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.