Author: Lance Perkins
Date: 10:37:36 08/24/04
Go up one level in this thread
I forgot to mention that with this approach, you get the exact number of moves for the side. This is normally useful in some form of extension. Definitely already useful for check extension. On August 24, 2004 at 13:31:10, Lance Perkins wrote: >Even without a special check-evasion code, most programs have something like >this: > > generate all moves > for all moves > make move > if not in check > do more > endif > undo move > endfor > >You can avoid the "if not in check" test if you just generate valid moves all >the time. > >It would be somethigg like this: > > // generate all valid moves > If in check > Generate king moves to all safe squares (note that the king can't > simply move away from the direction of the attacker/s) > If there is only one attacker > Generate king move to capture the attacker (assuming that > the attacker is undefended) > Generate all non-pinned Q,R,B,N,P moves to capture the attacker > and to block the attacker > Endif > Else > Generate king moves to all safe squares > Generate all non-pinned Q,R,B,N,P moves to empty squares and to > opponent-occupied squres > Endif > >I might have missed a few details there, but you get the picture. You only do >the "is in check" test once instead of each time you do a 'make move'. > > > >On August 24, 2004 at 06:17:50, martin fierz wrote: > >>as a related question to mridul's post: i don't have a special check evasion >>generator. i just have a single normal move generator and if it's a check, i >>will have to execute all the normal moves, and undo them again after seeing that >>it's still a check. >> >>does anyone have an estimate on how much a specialized check-evasion move >>generator would speed up a program? >>is it really worth it? >> >>cheers >> martin
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.