15 if ((bit_position & 0xff) == 0)
16 return Square::STAND();
18 return Square((bit_position >> 4) & 0xf, bit_position & 0xf);
47 piece_vector.reserve(40);
48 for (
int i = 0; i < 40; i++)
53 std::sort(piece_vector.begin(), piece_vector.end(),
opiece_sort());
54 player_to_move = state.
turn();
64 for (
const OPiece& p: piece_vector) {
65 state.
setPiece(p.owner(), p.square(), p.ptype());
82 for (
unsigned int i = 0; i < c.
pieces().size(); i++)
95 for (
unsigned int i = 0; i < 40; i++)
void setTurn(Player player)
const PieceMask & usedMask() const
const Piece pieceOf(int num) const
void setPiece(Player player, Square sq, Ptype ptype)
bool isPieceStand() const
int y() const
将棋としてのY座標を返す.
static const Square STAND()
int x() const
将棋としてのX座標を返す.
SimpleStateよりcompactな局面の表現
const std::vector< OPiece > & pieces() const
std::vector< OPiece > piece_vector
SimpleState state() const
static Square bits2Square(const int bit_position)
Converts an integer (bits) to Square.
static int position2Bits(const Square &pos)
Converts a position to an integer (bits)
bool operator==(const CompactBoard &, const CompactBoard &)
局面を比較する.
std::ostream & operator<<(std::ostream &os, const CompactBoard &c)
std::istream & operator>>(std::istream &os, CompactBoard &c)
void writeInt(std::ostream &os, int n)
int readInt(std::istream &is)
bool operator()(const OPiece &l, const OPiece &r)