3 #ifndef MOBILITY_BISHOP_MOBILITY_H
4 #define MOBILITY_BISHOP_MOBILITY_H
51 int count=posDR.
y()-posUL.
y()+
52 posDL.
y()-posUR.
y()-4+
53 (state.
pieceAt(posUR).template canMoveOn<P>() ? 1 : 0)+
54 (state.
pieceAt(posDR).template canMoveOn<P>() ? 1 : 0)+
55 (state.
pieceAt(posUL).template canMoveOn<P>() ? 1 : 0)+
56 (state.
pieceAt(posDL).template canMoveOn<P>() ? 1 : 0);
64 return countAll<P>(state,p.
number());
68 return countAll<BLACK>(state,p);
70 return countAll<WHITE>(state,p);
73 template<Player P, Direction Dir>
78 assert(Dir ==
UL || Dir ==
UR || Dir ==
DL || Dir ==
DR);
81 int count = std::abs(pos.
y() - p.
square().
y())
82 - 1 + (state.
pieceAt(pos).template canMoveOn<P>() ? 1 : 0);
85 template <Direction dir>
88 return countAllDir<BLACK, dir>(state,p);
90 return countAllDir<WHITE, dir>(state,p);
109 return countSafe<BLACK>(state,p);
111 return countSafe<WHITE>(state,p);