My Project
effect5x3d.cc
Go to the documentation of this file.
1/* effect5x3d.cc
2 */
6
9 Square king)
10{
11
12 const Square center = Centering5x3::adjustCenter(king);
13
14 const int min_x = center.x() - 2;
15 const int min_y = center.y() - 1;
16
17 // 利き
18 int sum_effect = 0;
19
20 for (int dx=0; dx<5; ++dx)
21 {
22 for (int dy=0; dy<3; ++dy)
23 {
24 const Square target(min_x+dx,min_y+dy);
25 sum_effect += state.countEffect(defense, target) *
26 Effect5x3_Table.getDefenseEffect(defense,king,dx,dy);
27 }
28 }
29
30 return sum_effect / 2;
31}
32
34Effect5x3d::update(const NumEffectState& new_state, Move /*last_move*/)
35{
36 const Square kb = new_state.kingSquare<BLACK>(), kw = new_state.kingSquare<WHITE>();
37 BoardMask mb = new_state.changedEffects(BLACK), mw = new_state.changedEffects(WHITE);
38
39 if (mb.anyInRange(Board_Mask_Table5x3_Center.mask(kb)))
40 progresses[BLACK]=makeProgress(BLACK,new_state,new_state.kingSquare<BLACK>());
41 if (mw.anyInRange(Board_Mask_Table5x3_Center.mask(kw)))
42 progresses[WHITE]=makeProgress(WHITE,new_state,new_state.kingSquare<WHITE>());
43}
44
45/* ------------------------------------------------------------------------- */
46// ;;; Local Variables:
47// ;;; mode:c++
48// ;;; c-basic-offset:2
49// ;;; End:
圧縮していない moveの表現 .
利きを持つ局面
const BoardMask changedEffects(Player pl) const
int countEffect(Player player, Square target) const
利きの数を数える.
Square kingSquare() const
Definition simpleState.h:94
int y() const
将棋としてのY座標を返す.
Definition basic_type.h:567
int x() const
将棋としてのX座標を返す.
Definition basic_type.h:563
const BoardMask & mask(Square p) const
p中心の5x3 の範囲のbitを立てたもの, centering
Definition boardMask.h:133
bool anyInRange(const BoardMask &mask) const
Definition boardMask.h:57
unsigned int getDefenseEffect(Player pl, Square pos, int x, int y) const
Effect5x3Table Effect5x3_Table
Player
Definition basic_type.h:8
@ WHITE
Definition basic_type.h:10
@ BLACK
Definition basic_type.h:9
static int makeProgress(Player defense, const NumEffectState &state, Square king)
王の位置を指定したprogressの計算.
Definition effect5x3d.cc:8
void update(const NumEffectState &new_state, Move last_move)
Definition effect5x3d.cc:34