My Project
immediateCheckmateTable.h
Go to the documentation of this file.
1 /* immediateCheckmateTable.h
2  */
3 #ifndef OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
4 #define OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
5 #include "osl/basic_type.h"
6 #include "osl/bits/king8Info.h"
7 
8 namespace osl
9 {
10  namespace checkmate
11  {
13  {
14  private:
19  public:
21  unsigned char dropPtypeMaskOf(unsigned int liberty_drop_mask) const
22  {
23  return dropPtypeMasks[liberty_drop_mask];
24  }
25  unsigned char dropPtypeMask(King8Info canMoveMask) const
26  {
27  return dropPtypeMaskOf(canMoveMask.libertyDropMask());
28  }
29  unsigned int ptypeDropMask(Ptype ptype,King8Info canMoveMask) const
30  {
31  return ptypeDropMasks[canMoveMask.liberty()][ptype];
32  }
33  unsigned int blockingMask(Ptype ptype,Direction dir) const
34  {
35  assert(static_cast<int>(dir)<8);
36  return blockingMasks[ptype][dir];
37  }
38  unsigned int noEffectMask(Ptype ptype,Direction dir) const
39  {
40  assert(static_cast<int>(dir)<8);
41  return noEffectMasks[ptype][dir];
42  }
43  };
45  }
46 }
47 
48 #endif /* OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H */
49 // ;;; Local Variables:
50 // ;;; mode:c++
51 // ;;; c-basic-offset:2
52 // ;;; End:
53 
osl::checkmate::ImmediateCheckmateTable::dropPtypeMasks
CArray< unsigned char, 0x10000u > dropPtypeMasks
Definition: immediateCheckmateTable.h:15
osl::checkmate::ImmediateCheckmateTable::blockingMasks
CArray2d< unsigned char, PTYPE_SIZE, 8 > blockingMasks
Definition: immediateCheckmateTable.h:17
osl::checkmate::ImmediateCheckmateTable::ptypeDropMask
unsigned int ptypeDropMask(Ptype ptype, King8Info canMoveMask) const
Definition: immediateCheckmateTable.h:29
osl::checkmate::King8Info::liberty
unsigned int liberty() const
8-15 bit 目を 0-7bitにshiftして返す
Definition: king8Info.h:54
basic_type.h
osl::Ptype
Ptype
駒の種類を4ビットでコード化する
Definition: basic_type.h:84
osl::checkmate::ImmediateCheckmateTable
Definition: immediateCheckmateTable.h:13
osl::checkmate::ImmediateCheckmateTable::noEffectMasks
CArray2d< unsigned short, PTYPE_SIZE, 8 > noEffectMasks
Definition: immediateCheckmateTable.h:18
osl::checkmate::ImmediateCheckmateTable::blockingMask
unsigned int blockingMask(Ptype ptype, Direction dir) const
Definition: immediateCheckmateTable.h:33
checkmate
osl::checkmate::ImmediateCheckmateTable::dropPtypeMaskOf
unsigned char dropPtypeMaskOf(unsigned int liberty_drop_mask) const
Definition: immediateCheckmateTable.h:21
osl::Direction
Direction
Definition: basic_type.h:310
osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable
ImmediateCheckmateTable()
Definition: immediateCheckmateTable.cc:30
king8Info.h
osl::checkmate::ImmediateCheckmateTable::noEffectMask
unsigned int noEffectMask(Ptype ptype, Direction dir) const
Definition: immediateCheckmateTable.h:38
osl::checkmate::Immediate_Checkmate_Table
const ImmediateCheckmateTable Immediate_Checkmate_Table
Definition: tables.cc:122
osl::checkmate::King8Info::libertyDropMask
unsigned int libertyDropMask() const
0-15bit
Definition: king8Info.h:59
osl::checkmate::ImmediateCheckmateTable::ptypeDropMasks
CArray2d< unsigned char, 0x100u, PTYPE_SIZE > ptypeDropMasks
Definition: immediateCheckmateTable.h:16
osl::CArray< unsigned char, 0x10000u >
osl::checkmate::ImmediateCheckmateTable::dropPtypeMask
unsigned char dropPtypeMask(King8Info canMoveMask) const
Definition: immediateCheckmateTable.h:25
osl::checkmate::King8Info
敵玉の8近傍の状態を表す.
Definition: king8Info.h:29
osl
Definition: additionalEffect.h:6