void GoBlock::CheckConsistency() const { SG_ASSERT(Stones().SubsetOf(m_bd.All(Color()))); SgPoint anchor = Anchor(); SG_ASSERT(m_bd.Anchor(anchor) == Anchor()); SgPointSet stones; for (GoBoard::StoneIterator it(m_bd, anchor); it; ++it) stones.Include(*it); SG_ASSERT(Stones() == stones); }
void GoChain::GetBlocks(const GoRegionBoard* ra, SgVectorOf<GoBlock>* blocks) const { SgBlackWhite color = Color(); SgPointSet chainPts = Stones(); for (SgVectorIteratorOf<GoBlock> it(ra->AllBlocks(color)); it; ++it) if (chainPts.Contains((*it)->Anchor())) blocks->PushBack(*it); }
void GoBlock::Write(std::ostream& stream) const { WriteID(stream); stream << '\n' << SgWritePointSet(Stones(), "Stones: ") << "\nhealthy: " << Healthy().Length() << "\nisSafe: " << SgWriteBoolean(IsSafe()) << "\nhas1Eye: " << SgWriteBoolean(Has1Eye()) << "\n"; }
inline BoardIterator StoneBoard::Stones(HexColor color) const { return Stones(HexColorSetUtil::Only(color)); }