4#include <boost/dynamic_bitset.hpp>
63 for (
int i = 0; i < 40; ++i)
117 for (PawnArray::const_iterator p =
pawn_pieces.begin();
123 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
125 for (LanceArray::const_iterator p =
lance_pieces.begin();
131 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
139 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
147 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
155 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
157 for (RookArray::const_iterator p =
rook_pieces.begin();
163 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
165 for (GoldArray::const_iterator p =
gold_pieces.begin();
177 boost::dynamic_bitset<>
182 for (PawnArray::const_iterator p =
pawn_pieces.begin();
185 const int value =
static_cast<int>(*p);
186 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
189 for (LanceArray::const_iterator p =
lance_pieces.begin();
192 const int value =
static_cast<int>(*p);
193 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
199 const int value =
static_cast<int>(*p);
200 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
206 const int value =
static_cast<int>(*p);
207 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
213 const int value =
static_cast<int>(*p);
214 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
217 for (RookArray::const_iterator p =
rook_pieces.begin();
220 const int value =
static_cast<int>(*p);
221 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
224 for (GoldArray::const_iterator p =
gold_pieces.begin();
227 const int value =
static_cast<int>(*p);
228 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
234 const char value =
static_cast<char>(*p);
235 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
236 bits = bits << 8 | mask;
239 unsigned long value = 0;
244 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
245 bits = bits << 8 | mask;
253 const boost::dynamic_bitset<> bits =
toBits();
260 if (bits.size() == 0)
264 for (
int i=0; i<18; ++i)
267 const unsigned long value =
270 const OPSquare p(
static_cast<int>(value));
273 for (
int i=0; i<4; ++i)
276 const unsigned long value =
279 const OPSquare p(
static_cast<int>(value));
282 for (
int i=0; i<4; ++i)
285 const unsigned long value =
288 const OPSquare p(
static_cast<int>(value));
291 for (
int i=0; i<4; ++i)
294 const unsigned long value =
297 const OPSquare p(
static_cast<int>(value));
300 for (
int i=0; i<2; ++i)
303 const unsigned long value =
306 const OPSquare p(
static_cast<int>(value));
309 for (
int i=0; i<2; ++i)
312 const unsigned long value =
315 const OPSquare p(
static_cast<int>(value));
318 for (
int i=0; i<4; ++i)
321 const unsigned long value =
323 const OSquare p(
static_cast<int>(value));
326 for (
int i=0; i<2; ++i)
329 const unsigned long value =
334 const unsigned long value = (bits & mask).to_ulong();
std::array< char, Capacity >::const_iterator const_iterator
const Square square() const
void setTurn(Player player)
const PieceMask & usedMask() const
const Piece pieceOf(int num) const
void setPiece(Player player, Square sq, Ptype ptype)
int y() const
将棋としてのY座標を返す.
static const Square STAND()
int x() const
将棋としてのX座標を返す.
More compact board than CompactBoard.
static const size_t total_bits
boost::dynamic_bitset toBits() const
std::string toBase64() const
SilverArray silver_pieces
BishopArray bishop_pieces
SimpleState getState() const
KnightArray knight_pieces
Square, Owner, Promoted : 10 bits.
static const size_t total_bits
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)
static const size_t total_bits
int fromBase64(const std::string &base64, MiniBoard &mb)
std::string base64Encode(boost::dynamic_bitset<> src)
boost::dynamic_bitset base64Decode(std::string src)
Ptype unpromote(Ptype ptype)
ptypeがpromote後の型の時に,promote前の型を返す. promoteしていない型の時はそのまま返す
Ptype promote(Ptype ptype)
promote可能なptypeに対して,promote後の型を返す promote不可のptypeを与えてはいけない.
bool operator()(const OSquare &l, const OSquare &r)