X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=moves.c;h=89af9a05ab6a082f3a4f1940495ce8764076b555;hb=9d270b7479328210b4f4f47ad3c769c60e4ce200;hp=a0f7b7e24251245c99542cb948be08c33981700f;hpb=d098a3196db8758737f6a79992b460306045d499;p=xboard.git diff --git a/moves.c b/moves.c index a0f7b7e..89af9a0 100644 --- a/moves.c +++ b/moves.c @@ -1037,9 +1037,9 @@ ChessMove LegalityTest(board, flags, rf, ff, rt, ft, promoChar) if(promoChar == 'd' && (piece == WhiteRook || piece == BlackRook) || promoChar == 'h' && (piece == WhiteBishop || piece == BlackBishop) || promoChar == 'g' && (piece <= WhiteFerz || piece <= BlackFerz && piece >= BlackPawn) ) - promoChar = '^'; // allowed ICS notations + promoChar = '+'; // allowed ICS notations if(appData.debugMode)fprintf(debugFP,"SHOGI promoChar = %c\n", promoChar ? promoChar : '-'); - if(promoChar != NULLCHAR && promoChar != '^' && promoChar != '=') + if(promoChar != NULLCHAR && promoChar != '+' && promoChar != '=') return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove; else if(flags & F_WHITE_ON_MOVE) { if( (int) piece < (int) WhiteWazir && @@ -1048,16 +1048,16 @@ if(appData.debugMode)fprintf(debugFP,"SHOGI promoChar = %c\n", promoChar ? promo piece == WhiteKnight && rt > BOARD_HEIGHT-3) /* promotion mandatory */ cl.kind = promoChar == '=' ? IllegalMove : WhitePromotion; else /* promotion optional, default is defer */ - cl.kind = promoChar == '^' ? WhitePromotion : WhiteNonPromotion; - } else cl.kind = promoChar == '^' ? IllegalMove : NormalMove; + cl.kind = promoChar == '+' ? WhitePromotion : WhiteNonPromotion; + } else cl.kind = promoChar == '+' ? IllegalMove : NormalMove; } else { if( (int) piece < (int) BlackWazir && (rf < BOARD_HEIGHT/3 || rt < BOARD_HEIGHT/3) ) { if( (piece == BlackPawn || piece == BlackQueen) && rt < 1 || piece == BlackKnight && rt < 2 ) /* promotion obligatory */ cl.kind = promoChar == '=' ? IllegalMove : BlackPromotion; else /* promotion optional, default is defer */ - cl.kind = promoChar == '^' ? BlackPromotion : BlackNonPromotion; - } else cl.kind = promoChar == '^' ? IllegalMove : NormalMove; + cl.kind = promoChar == '+' ? BlackPromotion : BlackNonPromotion; + } else cl.kind = promoChar == '+' ? IllegalMove : NormalMove; } } } else @@ -1228,14 +1228,14 @@ void Disambiguate(board, flags, closure) if (c == 'x') c = NULLCHAR; // get rid of any 'x' (which should never happen?) if(gameInfo.variant == VariantShogi) { - /* [HGM] Shogi promotions. On input, '=' means defer, '^' promote. Afterwards, c is set to '+' for promotions, NULL other */ + /* [HGM] Shogi promotions. On input, '=' means defer, '+' promote. Afterwards, c is set to '+' for promotions, NULL other */ if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) { ChessSquare piece = closure->piece; if (c == 'd' && (piece == WhiteRook || piece == BlackRook) || c == 'h' && (piece == WhiteBishop || piece == BlackBishop) || c == 'g' && (piece <= WhiteFerz || piece <= BlackFerz && piece >= BlackPawn) ) - c = '^'; // allowed ICS notations - if(c != NULLCHAR && c != '^' && c != '=') closure->kind = IllegalMove; // otherwise specifying a piece is illegal + c = '+'; // allowed ICS notations + if(c != NULLCHAR && c != '+' && c != '=') closure->kind = IllegalMove; // otherwise specifying a piece is illegal else if(flags & F_WHITE_ON_MOVE) { if( (int) piece < (int) WhiteWazir && (closure->rf >= BOARD_HEIGHT-(BOARD_HEIGHT/3) || closure->rt >= BOARD_HEIGHT-(BOARD_HEIGHT/3)) ) { @@ -1243,19 +1243,19 @@ void Disambiguate(board, flags, closure) piece == WhiteKnight && closure->rt > BOARD_HEIGHT-3) /* promotion mandatory */ closure->kind = c == '=' ? IllegalMove : WhitePromotion; else /* promotion optional, default is defer */ - closure->kind = c == '^' ? WhitePromotion : WhiteNonPromotion; - } else closure->kind = c == '^' ? IllegalMove : NormalMove; + closure->kind = c == '+' ? WhitePromotion : WhiteNonPromotion; + } else closure->kind = c == '+' ? IllegalMove : NormalMove; } else { if( (int) piece < (int) BlackWazir && (closure->rf < BOARD_HEIGHT/3 || closure->rt < BOARD_HEIGHT/3) ) { if( (piece == BlackPawn || piece == BlackQueen) && closure->rt < 1 || piece == BlackKnight && closure->rt < 2 ) /* promotion obligatory */ closure->kind = c == '=' ? IllegalMove : BlackPromotion; else /* promotion optional, default is defer */ - closure->kind = c == '^' ? BlackPromotion : BlackNonPromotion; - } else closure->kind = c == '^' ? IllegalMove : NormalMove; + closure->kind = c == '+' ? BlackPromotion : BlackNonPromotion; + } else closure->kind = c == '+' ? IllegalMove : NormalMove; } } - if(closure->kind == WhitePromotion || closure->kind == BlackPromotion) c = '^'; else + if(closure->kind == WhitePromotion || closure->kind == BlackPromotion) c = '+'; else if(closure->kind == WhiteNonPromotion || closure->kind == BlackNonPromotion) c = '='; } else if (closure->kind == WhitePromotion || closure->kind == BlackPromotion) { @@ -1270,7 +1270,7 @@ void Disambiguate(board, flags, closure) } else if (c != NULLCHAR) closure->kind = IllegalMove; closure->promoChar = ToLower(c); // this can be NULLCHAR! Note we keep original promoChar even if illegal. - if(c != '^' && c != '=' && c != NULLCHAR && CharToPiece(c) == EmptySquare) + if(c != '+' && c != '=' && c != NULLCHAR && CharToPiece(c) == EmptySquare) closure->kind = ImpossibleMove; // but we cannot handle non-existing piece types! if (closure->count > 1) { closure->kind = AmbiguousMove; @@ -1501,7 +1501,6 @@ ChessMove CoordsToAlgebraic(board, flags, rf, ff, rt, ft, promoChar, out) else { *outp++ = (rt+ONE-'0')/10 + '0';*outp++ = (rt+ONE-'0')%10 + '0'; } if (gameInfo.variant == VariantShogi) { /* [HGM] in Shogi non-pawns can promote */ - if(promoChar == '^') promoChar = '+'; *outp++ = promoChar; // Don't bother to correct move type, return value is never used! } *outp = NULLCHAR;