1.1 --- a/src/rules/pawn.c Sat Mar 29 16:53:58 2014 +0100 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,97 +0,0 @@ 1.4 -/* 1.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 1.6 - * 1.7 - * Copyright 2014 Mike Becker. All rights reserved. 1.8 - * 1.9 - * Redistribution and use in source and binary forms, with or without 1.10 - * modification, are permitted provided that the following conditions are met: 1.11 - * 1.12 - * 1. Redistributions of source code must retain the above copyright 1.13 - * notice, this list of conditions and the following disclaimer. 1.14 - * 1.15 - * 2. Redistributions in binary form must reproduce the above copyright 1.16 - * notice, this list of conditions and the following disclaimer in the 1.17 - * documentation and/or other materials provided with the distribution. 1.18 - * 1.19 - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1.20 - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1.21 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1.22 - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 1.23 - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1.24 - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1.25 - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1.26 - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1.27 - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1.28 - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1.29 - * POSSIBILITY OF SUCH DAMAGE. 1.30 - * 1.31 - */ 1.32 - 1.33 -#include "pawn.h" 1.34 -#include "rules.h" 1.35 - 1.36 -_Bool pawn_chkrules(Board board, Move *move) { 1.37 - int8_t d = ((move->piece & COLOR_MASK) == WHITE ? -1 : 1); 1.38 - 1.39 - if (move->torow == (d < 0 ? 7 : 0)) { 1.40 - if (move->promotion) { 1.41 - uint8_t promopiece = move->promotion & PIECE_MASK; 1.42 - if (!promopiece || promopiece == PAWN || promopiece == KING) { 1.43 - return FALSE; 1.44 - } 1.45 - } else { 1.46 - return FALSE; 1.47 - } 1.48 - } else { 1.49 - if (move->promotion) { 1.50 - return FALSE; 1.51 - } 1.52 - } 1.53 - 1.54 - if (move->capture) { 1.55 - if (move->fromrow == move->torow + d && ( 1.56 - move->fromfile == move->tofile + 1 || 1.57 - move->fromfile == move->tofile - 1)) { 1.58 - 1.59 - return mdst(board,move) 1.60 - || (board[move->fromrow][move->tofile] & ENPASSANT_THREAT); 1.61 - } else { 1.62 - return FALSE; 1.63 - } 1.64 - } else { 1.65 - if (move->fromfile == move->tofile) { 1.66 - return (move->fromrow == move->torow + d) || 1.67 - (move->fromrow == (d < 0 ? 1 : 6) && /* advanced first move */ 1.68 - move->fromrow == move->torow + d*2); 1.69 - } else { 1.70 - return FALSE; 1.71 - } 1.72 - } 1.73 -} 1.74 - 1.75 -_Bool pawn_isblocked(Board board, Move *move) { 1.76 - return mdst(board,move) && !move->capture; 1.77 -} 1.78 - 1.79 -int pawn_getlocation(Board board, Move *move) { 1.80 - int8_t d = ((move->piece & COLOR_MASK) == WHITE ? -1 : 1); 1.81 - 1.82 - if (move->fromfile == POS_UNSPECIFIED) { 1.83 - move->fromfile = move->tofile; 1.84 - } 1.85 - move->fromrow = move->torow + d; 1.86 - if (move->fromrow > 6) { 1.87 - return INVALID_POSITION; 1.88 - } else { 1.89 - /* advanced first move */ 1.90 - if (move->fromrow == (d < 0 ? 2 : 5) && 1.91 - msrc(board,move) != move->piece) { 1.92 - 1.93 - move->fromrow += d; 1.94 - if (move->fromrow > 6) { 1.95 - return INVALID_POSITION; 1.96 - } 1.97 - } 1.98 - } 1.99 - return VALID_MOVE_SYNTAX; 1.100 -}