説明を見る。00001
00002
00003 #ifndef OSL_CHECKMATE_IMMEDIATE_CHECKMATE_H
00004 #define OSL_CHECKMATE_IMMEDIATE_CHECKMATE_H
00005 #include "osl/numEffectState.h"
00006
00007 namespace osl
00008 {
00009 namespace checkmate
00010 {
00011 class ImmediateCheckmate
00012 {
00013 private:
00014 template<Player P,bool setBestMove>
00015 static bool hasCheckmateDrop(NumEffectState const& state,Square target,
00016 King8Info mask,Move& bestMove);
00017
00018 public:
00019 template<Player P,bool setBestMove>
00020 static bool slowHasCheckmateMoveDirPiece(NumEffectState const& state,Square target,
00021 King8Info mask,Direction d,Square pos,Piece p,Ptype ptype,Move& bestMove);
00022
00023 template<Player P,bool setBestMove>
00024 static bool hasCheckmateMoveDirPiece(NumEffectState const& state,Square target,
00025 King8Info mask,Direction d,Square pos,Piece p,Move& bestMove);
00026
00027 template<Player P,bool setBestMove>
00028 static bool hasCheckmateMoveDir(NumEffectState const& state,Square target,
00029 King8Info mask,Direction d,Move& bestMove);
00030
00031 template<Player P,bool setBestMove>
00032 static bool hasCheckmateMove(NumEffectState const& state,Square target,
00033 King8Info mask,Move& bestMove);
00034
00043 template<Player P>
00044 static bool hasCheckmateMove(NumEffectState const& state);
00045 template<Player P>
00046 static bool hasCheckmateMove(NumEffectState const& state, King8Info);
00047
00057 template<Player P>
00058 static bool hasCheckmateMove(NumEffectState const& state,Move &bestMove);
00059 template<Player P>
00060 static bool hasCheckmateMove(NumEffectState const& state,
00061 King8Info canMoveMask,
00062 Square king, Move& bestMove);
00066 static bool hasCheckmateMove(Player pl,NumEffectState const& state);
00067 static bool hasCheckmateMove(Player pl,NumEffectState const& state,Move& bestMove);
00068
00069 };
00070 }
00071 using checkmate::ImmediateCheckmate;
00072 }
00073 #endif
00074
00075
00076
00077
00078