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