00001
00002
00003 #include "osl/effect_util/pin.h"
00004
00005 #ifndef MINIMAL
00006 osl::PieceMask osl::effect_util::
00007 Pin::makeNaive(const SimpleState& state, Position target,
00008 Player defense)
00009 {
00010 assert(target.isOnBoard());
00011 PieceMask result;
00012 findDirection<UL>(state, target, defense, result);
00013 findDirection<U>(state, target, defense, result);
00014 findDirection<UR>(state, target, defense, result);
00015 findDirection<L>(state, target, defense, result);
00016 findDirection<R>(state, target, defense, result);
00017 findDirection<DL>(state, target, defense, result);
00018 findDirection<D>(state, target, defense, result);
00019 findDirection<DR>(state, target, defense, result);
00020 return result;
00021 }
00022
00023 osl::PieceMask osl::effect_util::
00024 Pin::makeByPiece(const NumEffectState& state, Position target,
00025 Player defense)
00026 {
00027 assert(target.isOnBoard());
00028 const Player attack = alt(defense);
00029 PieceMask result;
00030
00031 findDirection<U>(state, target, defense, result);
00032
00033 findPtype<ROOK>(state, target, attack, defense, result);
00034 findPtype<BISHOP>(state, target, attack, defense, result);
00035 return result;
00036 }
00037
00038 osl::PieceMask osl::effect_util::
00039 Pin::makeByPieceKing(const NumEffectState& state, Position target,
00040 Player defense)
00041 {
00042 assert(target.isOnBoard());
00043 const Player attack = alt(defense);
00044 PieceMask result;
00045
00046 if(defense==BLACK){
00047 findLance<BLACK>(state, target, result);
00048 }
00049 else{
00050 findLance<WHITE>(state, target, result);
00051 }
00052
00053 findPtype<ROOK>(state, target, attack, defense, result);
00054 findPtype<BISHOP>(state, target, attack, defense, result);
00055 return result;
00056 }
00057 #endif
00058
00059
00060
00061
00062
00063
00064