piecePairWithStand.tcc
Go to the documentation of this file.
00001 /* piecePairWithStand.tcc
00002  */
00003 #ifndef EVAL_PPAIR_PIECEPAIRWITHSTAND_TCC
00004 #define EVAL_PPAIR_PIECEPAIRWITHSTAND_TCC
00005 
00006 #include "osl/eval/ppair/piecePairWithStand.h"
00007 #include "osl/container/pieceValues.h"
00008 
00009 template <class Table>
00010 void osl::eval::ppair::PiecePairWithStand<Table>::
00011 setValues(const SimpleState& state, container::PieceValues& values)
00012 {
00013   base_t::setValues(state, values);
00014   // 速度は無視
00015   for (int i=0; i<Piece::SIZE; i++) 
00016   {
00017     const Piece piece = state.pieceOf(i);
00018     values[i] += Table::Piece_Value.value(piece.ptypeO());
00019     if (piece.isOnBoard())
00020       continue;
00021     assert(isBasic(piece.ptype()));
00022     if (isMajorBasic(piece.ptype()))
00023     {
00024       values[i] += Table::Piece_Value.value(newPtypeO(piece.owner(), PAWN));
00025     }
00026   }
00027 }
00028 
00029 template <class Table>
00030 int osl::eval::ppair::PiecePairWithStand<Table>::
00031 standBonus(const SimpleState& state)
00032 {
00033   int result = 0;
00034   for (int i=0; i<Piece::SIZE; i++) 
00035   {
00036     const Piece piece = state.pieceOf(i);
00037     if (piece.isOnBoard())
00038       continue;
00039     result += standBonus(piece.ptypeO());
00040   }
00041   return result;
00042 }
00043 
00044 template <class Table>
00045 osl::eval::ppair::PiecePairWithStand<Table>::
00046 PiecePairWithStand(const SimpleState& state) 
00047   : base_t(state)
00048 {
00049   for (int i=0; i<Piece::SIZE; i++) 
00050   {
00051     const Piece piece = state.pieceOf(i);
00052     base_t::val += Table::Piece_Value.value(piece.ptypeO());
00053   }
00054   base_t::val += standBonus(state);
00055 }
00056 
00057 #endif /* EVAL_PPAIR_PIECEPAIRWITHSTAND_TCC */
00058 // ;;; Local Variables:
00059 // ;;; mode:c++
00060 // ;;; c-basic-offset:2
00061 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines