説明を見る。00001
00002
00003 #ifndef OSL_SEE_H
00004 #define OSL_SEE_H
00005
00006 #include "osl/numEffectState.h"
00007
00008 namespace osl
00009 {
00010 namespace eval
00011 {
00012 class PtypeEvalTable;
00013 struct See
00014 {
00015 static int see(const NumEffectState& state, Move move,
00016 const PieceMask& my_pin=PieceMask(), const PieceMask& op_pin=PieceMask(), const PtypeEvalTable *table=0);
00017
00018
00019 template <Player P>
00020 static int seeInternal(const NumEffectState& state, Move move,
00021 const PieceMask& my_pin, const PieceMask& op_pin,
00022 const PtypeEvalTable &table);
00023 template <Player P>
00024 static void findEffectPieces(const NumEffectState& state, Square effect_to,
00025 PtypeOSquareVector& my_pieces, PtypeOSquareVector& op_pieces);
00026 template <osl::Player P>
00027 static void findEffectPiecesAfterMove(const NumEffectState& state, Move move,
00028 PtypeOSquareVector& my_pieces, PtypeOSquareVector& op_pieces);
00029 static void findAdditionalPieces(const NumEffectState& state, Player attack, Square target,
00030 Square direct_attack_from,
00031 PtypeOSquareVector& out);
00038 template <Player P>
00039 static int computeValue(const NumEffectState& state,
00040 Move move,
00041 PtypeOSquareVector& my_pieces,
00042 PtypeOSquareVector& op_pieces,
00043 const PieceMask& my_pin,
00044 const PieceMask& op_pin,
00045 const PtypeEvalTable &table);
00046 struct StorePtypeO;
00047 struct FindEffectMore;
00048 };
00049 };
00050 using eval::See;
00051 }
00052
00053 #endif
00054
00055
00056
00057