src/chess/pawn.c

changeset 47
d726e4b46c33
parent 23
824c9522ce66
child 55
54ea19938d57
     1.1 --- a/src/chess/pawn.c	Thu Apr 17 12:16:14 2014 +0200
     1.2 +++ b/src/chess/pawn.c	Wed May 28 15:47:57 2014 +0200
     1.3 @@ -71,28 +71,10 @@
     1.4  }
     1.5  
     1.6  _Bool pawn_isblocked(GameState *gamestate, Move *move) {
     1.7 -    return mdst(gamestate->board, move) && !move->capture;
     1.8 +    if (move->torow == move->fromrow + 1 || move->torow == move->fromrow - 1) {
     1.9 +        return mdst(gamestate->board, move) && !move->capture;
    1.10 +    } else {
    1.11 +        return mdst(gamestate->board, move) ||
    1.12 +            gamestate->board[(move->fromrow+move->torow)/2][move->tofile];
    1.13 +    }
    1.14  }
    1.15 -
    1.16 -int pawn_getlocation(GameState *gamestate, Move *move) {
    1.17 -    int8_t d = ((move->piece & COLOR_MASK) == WHITE ? -1 : 1);
    1.18 -    
    1.19 -    if (move->fromfile == POS_UNSPECIFIED) {
    1.20 -        move->fromfile = move->tofile;
    1.21 -    }
    1.22 -    move->fromrow = move->torow + d;
    1.23 -    if (move->fromrow > 6) {
    1.24 -        return INVALID_POSITION;
    1.25 -    } else {
    1.26 -        /* advanced first move */
    1.27 -        if (move->fromrow == (d < 0 ? 2 : 5) &&
    1.28 -            msrc(gamestate->board,move) != move->piece) {
    1.29 -
    1.30 -            move->fromrow += d;
    1.31 -            if (move->fromrow > 6) {
    1.32 -                return INVALID_POSITION;
    1.33 -            }
    1.34 -        }
    1.35 -    }
    1.36 -    return VALID_MOVE_SYNTAX;
    1.37 -}

mercurial