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 
34 Effect5x3d::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 
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の表現 .
Definition: basic_type.h:1052
利きを持つ局面
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
const BoardMaskTable5x3Center Board_Mask_Table5x3_Center
Definition: tables.cc:121
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