pin.cc
Go to the documentation of this file.
00001 /* pin.cc
00002  */
00003 #include "osl/effect_util/pin.h"
00004 
00005 #ifndef MINIMAL
00006 osl::PieceMask osl::effect_util::
00007 Pin::makeNaive(const SimpleState& state, Square 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, Square 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, Square 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 // ;;; Local Variables:
00061 // ;;; mode:c++
00062 // ;;; c-basic-offset:2
00063 // ;;; coding:utf-8
00064 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines