Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Some questions.......

Author: James Robertson

Date: 09:56:48 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...

Don't. It is horrendously slow. Generate moves and ignore check. You can catch
whether your side is in check or not in the next ply. I.e., If in your search
you have a move that moves you into check, then your opponent will on the next
ply have a move that captures your king (correct?). Then you send back a PV with
ILLEGAL_MOVE or something when a king is captured. You can catch illegal moves
this way in your move ordering for the next ply, since it will be doing capture
tests. If you have bitboards this is much simpler because you can catch a king
en prise by simple boolean operations in move generation.

>Generating only legal
>ones seems quite tough.. I now crafty does,

Are you sure? I haven't looked, but......

>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...)

That is in generate check evasions, when we already know we are in check.

>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...
>
>     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...
>

I store my pv a different way from TSCP....... It is probably slower, but you
can store it any way you want :)

>     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...

Forget books. Look on the internet!!!!!!! There is tons of data for FREE here.
Visit: http://www.xs4all.nl/~verhelst/chess/programming.html
A great chess programming site.

>
>     If you can help me on any of this subjects I would be very pleased....

I hope I made some sense..... :)

James



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.