X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fgenmove.c;h=2f4db1b6a6d32f28b872313eda55269299c6b017;hb=ef305e06b93ed27dd376c1f3ea8e0a7041a73943;hp=208966d3a0fccb8bd4b0118c15186bdca7dfa54d;hpb=1907f35d3370f971df16e40dec4135110386a84c;p=gnushogi.git diff --git a/gnushogi/genmove.c b/gnushogi/genmove.c index 208966d..2f4db1b 100644 --- a/gnushogi/genmove.c +++ b/gnushogi/genmove.c @@ -323,21 +323,7 @@ PromotionPossible(short color, short f, short t, short p) return false; } - /* FIXME: this can be simplified... */ - switch (p) - { - case pawn: -#ifndef MINISHOGI - case lance: - case knight: -#endif - case silver: - case bishop: - case rook: - return true; - }; - - return false; + return (typeMask[p] & (T_PAWN|T_LANCE|T_KNIGHT|T_SILVER|T_BISHOP|T_ROOK)) != 0; } @@ -350,13 +336,21 @@ NonPromotionPossible(short color, case pawn : if (color == black) { +#ifdef MINISHOGI + return ((t < 20) +#else return ((t < 72) +#endif ? true : (generate_move_flags ? ILLEGAL_TRAPPED : false)); } else { +#ifdef MINISHOGI + return ((t > 4) +#else return ((t > 8) +#endif ? true : (generate_move_flags ? ILLEGAL_TRAPPED : false)); } @@ -538,10 +532,7 @@ field_bonus(short side, short piece, /* CHECKME: is this right? */ if (((rvupiece == rvuboard) && (upiece == pawn)) - || (upiece == bishop) -#ifndef MINISHOGI - || (upiece == knight) -#endif + || typeMask[upiece] & (T_BISHOP | T_KNIGHT) ) { s++; /* The opposing pawn (piece) */ @@ -781,11 +772,7 @@ LinkMove(short ply, short f, { #ifdef TESUJIBONUS /* Look at non-promoting silver or knight */ - if (piece == silver -#ifndef MINISHOGI - || piece == knight -#endif - ) + if (typeMask[piece] & (T_SILVER | T_KNIGHT)) { local_flag |= tesuji; /* Non-promotion */ s++; @@ -1127,11 +1114,7 @@ LinkPreventCheckDrops(short side, short xside, short ply) for (piece = pawn+1; piece <= rook; piece++) { - if ( -#ifndef MINISHOGI - piece == lance || -#endif - piece == bishop || piece == rook) + if (typeMask[piece] & (T_LANCE | T_BISHOP | T_ROOK)) { /* check for threat of xside piece */ ptyp = ptype[side][piece];