17 for(
int num=32;num<=39;num++){
25 if((moveMask&
dirToMask(longD))==0)
continue;
29 for(;(p1=state.
pieceAt(pos)).isEmpty();pos+=o) ;
32 contents[num1][
static_cast<Direction>(i)]=num1;
40 for(
int num=0;num<=39;num++){
42 for(
int d=0;d<7;d++) os << et[num][static_cast<Direction>(d)] <<
",";
43 os << et[num][static_cast<Direction>(7)] <<
"],\n";
50 for(
int num=0;num<=39;num++){
51 if(e1[num][
static_cast<Direction>(i)]!=e2[num][
static_cast<Direction>(i)])
return false;
const Offset getOffsetForBlack(Direction dir) const
黒にとってのoffsetを返す
const Square square() const
int getMoveMask(Ptype ptype) const
const Piece pieceOf(int num) const
const Piece pieceAt(Square sq) const
bool isEdge() const
onBoardから8近傍のオフセットを足した点がedgeかどうかの判定 そこそこ速くなった.
CArray< EffectedNum, 40 > contents
std::ostream & operator<<(std::ostream &, const EffectedNumTable &)
bool operator==(const EffectedNumTable &, const EffectedNumTable &)
const PtypeTable Ptype_Table
constexpr int dirToMask(Direction dir)
const BoardTable Board_Table
constexpr Direction shortToLong(Direction d)
引数に longDirを与えてはいけない
constexpr Direction inverse(Direction d)