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 Piece pieceOf(int num) const
const PieceMask & usedMask() 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)