GoBoard-related utility classes. More...
#include "GoBoard.h"
#include "SgBoardColor.h"
#include "SgDebug.h"
#include "SgPoint.h"
#include "SgPointArray.h"
#include "SgStack.h"
#include "SgVector.h"
Go to the source code of this file.
Classes | |
class | GoRestoreKoRule |
Used to restore the ko rule to its current value in an exception-safe way. More... | |
class | GoRestoreToPlay |
Used to restore ToPlay to its current value in an exception-safe way. More... | |
class | GoBlockIterator |
Iterate over all blocks' anchors on the board. More... | |
class | GoRestoreSuicide |
Used to permit/forbid self-removal for certain periods of play. More... | |
class | GoRestoreRepetitionAndSuicide |
Used to alter state of repetition and self-removal for certain periods of play. More... | |
class | GoNeighborBlockIterator |
Iterate through the anchors of all the blocks adjacent to the given point. More... | |
class | GoAdjBlockIterator< BOARD > |
Iterate through the anchors of all the blocks adjacent to the given block. More... | |
class | GoNbIterator |
class | GoBoardWrite::WriteMap |
Write a map of the board, showing marks for SgPointSet. More... | |
Namespaces | |
namespace | GoBoardUtil |
Utility functions for users of class GoBoard. | |
namespace | GoBoardWrite |
Functions | |
void | GoBoardUtil::AddNeighborBlocksOfColor (const GoBoard &bd, SgPoint p, SgBlackWhite color, SgVector< SgPoint > &neighbors) |
Add anchors of neighbor blocks to list. | |
void | GoBoardUtil::AddWall (GoBoard &bd, SgBlackWhite color, SgPoint start, int length, int direction) |
Add wall of stones in color to the board. | |
GoPointList | GoBoardUtil::AdjacentStones (const GoBoard &bd, SgPoint point) |
Get list of stones adjacent to a block. | |
void | GoBoardUtil::AdjacentBlocks (const GoBoard &bd, SgPoint p, int maxLib, SgVector< SgPoint > *blocks) |
SgVector version of GoBoard::AdjacentBlocks. | |
int | GoBoardUtil::Approx2Libs (const GoBoard &board, SgPoint block, SgPoint p, SgBlackWhite color) |
Estimate second order liberties of point p for given block This is fast and approximate, may double count libs. | |
bool | GoBoardUtil::AtLeastTwoSharedLibs (const GoBoard &bd, SgPoint block1, SgPoint block2) |
Return whether 'block1' and 'block2' have at least two shared liberties. | |
bool | GoBoardUtil::BlockIsAdjacentTo (const GoBoard &bd, SgPoint block, const SgPointSet &walls) |
void | GoBoardUtil::BlocksAdjacentToPoints (const GoBoard &bd, const SgVector< SgPoint > &points, SgBlackWhite c, SgVector< SgPoint > *anchors) |
void | GoBoardUtil::BlocksAdjacentToPoints (const GoBoard &bd, const SgPointSet &points, SgBlackWhite c, SgVector< SgPoint > *anchors) |
List the anchors of all blocks of color 'c' adjacent to the region consisting of 'points'. | |
SgPointArray< int > | GoBoardUtil::CfgDistance (const GoBoard &bd, SgPoint p, int maxDist=std::numeric_limits< int >::max()) |
Compute the common fate graph distance from all points to a given point. | |
bool | GoBoardUtil::ContainsAnchor (const SgPoint anchor[], const SgPoint p) |
Is p contained in anchor[] ? anchor[] must be terminated by END_POINT. | |
void | GoBoardUtil::DiagonalsOfColor (const GoBoard &bd, SgPoint p, int c, SgVector< SgPoint > *diagonals) |
Get diagonal points with a color. | |
void | GoBoardUtil::DumpBoard (const GoBoard &bd, std::ostream &out=SgDebug()) |
Write board including move history to stream. | |
bool | GoBoardUtil::EndOfGame (const GoBoard &bd) |
Return whether the game is finished. | |
void | GoBoardUtil::ExpandToBlocks (const GoBoard &board, SgPointSet &pointSet) |
Add other stones of blocks to SgPointSet if one is in set. | |
template<class BOARD > | |
SgPoint | GoBoardUtil::FindNeighbor (const BOARD &bd, SgPoint p, SgEmptyBlackWhite c) |
Find a neighboring point in color c. | |
bool | GoBoardUtil::GenerateIfLegal (const GoBoard &bd, SgPoint move, SgVector< SgPoint > *moves) |
Include move in list if it is legal. | |
void | GoBoardUtil::GetCoordString (SgMove move, std::string *s, int boardSize) |
Convert the given move to human-readable coordinates. | |
void | GoBoardUtil::GetCoordString (const GoBoard &board, SgMove move, std::string *s) |
Convert the given move to human-readable coordinates. | |
SgRect | GoBoardUtil::GetDirtyRegion (const GoBoard &bd, SgMove move, SgBlackWhite color, bool checklibs=false, bool premove=false) |
Which intersections were modified with the last move. | |
bool | GoBoardUtil::HasAdjacentBlocks (const GoBoard &bd, SgPoint p, int maxLib) |
Return whether block has at least one adjacent opponent block with at most maxLib liberties. | |
bool | GoBoardUtil::HasStonesOfBothColors (const GoBoard &bd, const SgVector< SgPoint > &stones) |
template<class BOARD > | |
bool | GoBoardUtil::IsBoardEmpty (const BOARD &bd) |
template<class BOARD > | |
bool | GoBoardUtil::IsCompletelySurrounded (const BOARD &bd, SgPoint p) |
Return if point is surrounded by one color and no adjacent block is in atari. | |
bool | GoBoardUtil::IsHandicapPoint (SgGrid size, SgGrid col, SgGrid row) |
template<class BOARD > | |
bool | GoBoardUtil::IsNeighborOfSome (const BOARD &bd, SgPoint p, SgPoint anchors[], SgBlackWhite toPlay) |
template<class BOARD > | |
bool | GoBoardUtil::IsSimpleChain (const BOARD &bd, SgPoint block, SgPoint &other) |
Does block have two shared liberties with some other block? WARNING: for efficiency this checks only the first two liberties of the block. | |
bool | GoBoardUtil::IsSimpleEyeOfBlock (const GoBoard &bd, SgPoint lib, SgPoint blockAnchor, const SgVector< SgPoint > &eyes) |
Is lib a simple eye of block? Eyes is a list of other eye points, that do not need to be occupied for lib to be an eye. | |
bool | GoBoardUtil::IsSnapback (const GoBoard &bd, SgPoint p) |
Check if the move just played on p was a snapback. | |
SgPointSet | GoBoardUtil::Lines (const GoBoard &bd, SgGrid from, SgGrid to) |
all points on lines [from..to] | |
bool | GoBoardUtil::ManySecondaryLibs (const GoBoard &bd, SgPoint block) |
bool | GoBoardUtil::MoveNotLegalOrAtari (const GoBoard &bd, SgPoint move) |
Either move is not legal, or the block at move is in atari after the move. | |
bool | GoBoardUtil::MoveLegalAndNotAtari (const GoBoard &bd, SgPoint move) |
Move is legal and the block at move is not in atari after the move. | |
SgArrayList< SgPoint, 4 > | GoBoardUtil::NeighborsOfColor (const GoBoard &bd, SgPoint p, int c) |
Get adjacent points with a color. | |
void | GoBoardUtil::NeighborsOfColor (const GoBoard &bd, SgPoint p, int c, SgVector< SgPoint > *neighbors) |
Get adjacent points with a color (SgVector version). | |
bool | GoBoardUtil::TrompTaylorPassWins (const GoBoard &bd, SgBlackWhite toPlay) |
Check if Tromp-Taylor rules and pass wins. | |
bool | GoBoardUtil::PlayIfLegal (GoBoard &bd, SgPoint p, SgBlackWhite player) |
Play a move if legal. | |
bool | GoBoardUtil::PlayIfLegal (GoBoard &bd, SgPoint p) |
Play a move for the current player if legal. | |
void | GoBoardUtil::ReduceToAnchors (const GoBoard &bd, SgVector< SgPoint > *stones) |
Keep only the anchor of each block in the list. | |
void | GoBoardUtil::ReduceToAnchors (const GoBoard &bd, const SgVector< SgPoint > &stones, SgArrayList< SgPoint, SG_MAXPOINT > &anchors) |
Keep only the anchor of each block in the list. | |
void | GoBoardUtil::RegionCode (const GoBoard &bd, const SgVector< SgPoint > ®ion, SgHashCode *c) |
Compute the hash code for region of this board position. | |
bool | GoBoardUtil::RemainingChineseHandicap (const GoBoard &bd) |
Returns true iff during the first N moves of a Chinese handicap game. | |
template<class BOARD > | |
bool | GoBoardUtil::SelfAtari (const BOARD &bd, SgPoint p) |
Check if move would be self-atari. | |
template<class BOARD > | |
bool | GoBoardUtil::SelfAtari (const BOARD &bd, SgPoint p, int &numStones) |
Same as above, but also compute number of stones put into selfatari. | |
template<class BOARD > | |
bool | GoBoardUtil::SelfAtariForColor (const BOARD &bd, SgPoint p, SgBlackWhite toPlay) |
Check if move would be self-atari for given color. | |
void | GoBoardUtil::SharedLiberties (const GoBoard &bd, SgPoint block1, SgPoint block2, SgVector< SgPoint > *sharedLibs) |
Return all points that are liberties of both 'block1' and 'block2'. | |
void | GoBoardUtil::SharedLibertyBlocks (const GoBoard &bd, SgPoint anchor, int maxLib, SgVector< SgPoint > *blocks) |
bool | GoBoardUtil::ScorePosition (const GoBoard &bd, const SgPointSet &deadStones, float &score) |
Count score given the set of dead stones. | |
template<class BOARD > | |
SgEmptyBlackWhite | GoBoardUtil::ScorePoint (const BOARD &bd, SgPoint p, bool noCheck) |
Helper function used in ScoreSimpleEndPosition. | |
template<class BOARD > | |
float | GoBoardUtil::ScoreSimpleEndPosition (const BOARD &bd, float komi, const SgBWSet &safe, bool noCheck, SgPointArray< SgEmptyBlackWhite > *scoreBoard) |
Score position with given safe stones and only simple eyes. | |
float | GoBoardUtil::ScoreSimpleEndPosition (const GoBoard &bd, float komi, bool noCheck=false) |
Score position with all stones safe and only simple eyes. | |
int | GoBoardUtil::Stones (const GoBoard &bd, SgPoint p, SgPoint stones[]) |
Fill stones in an array. | |
void | GoBoardUtil::TestForChain (GoBoard &bd, SgPoint block, SgPoint block2, SgPoint lib, SgVector< SgPoint > *extended) |
template<class BOARD > | |
float | GoBoardUtil::TrompTaylorScore (const BOARD &bd, float komi, SgPointArray< SgEmptyBlackWhite > *scoreBoard=0) |
Compute the Tromp-Taylor-score for the current positions. | |
bool | GoBoardUtil::TwoPasses (const GoBoard &bd) |
Check if the last two moves were two passes in a row, the first pass by the current color to play, the second by the opponent. | |
void | GoBoardUtil::UndoAll (GoBoard &bd) |
Undo all moves or setup stones. | |
template<class BOARD > | |
std::ostream & | GoWriteBoard (std::ostream &out, const BOARD &bd) |
std::ostream & | operator<< (std::ostream &out, const GoBoard &bd) |
std::ostream & | operator<< (std::ostream &out, const GoBoardWrite::WriteMap &w) |
Variables | |
static const int | MAX_ADJACENT = (SG_MAX_SIZE + 1) * (SG_MAX_SIZE + 1) / 4 |
GoBoard-related utility classes.
Definition in file GoBoardUtil.h.
std::ostream& GoWriteBoard | ( | std::ostream & | out, | |
const BOARD & | bd | |||
) |
Definition at line 792 of file GoBoardUtil.h.
References GoBoardUtil::IsHandicapPoint(), SgPointUtil::Pt(), SG_ASSERT, SG_BLACK, SG_EMPTY, SG_WHITE, and SgBW().
Referenced by operator<<().
std::ostream& operator<< | ( | std::ostream & | out, | |
const GoBoardWrite::WriteMap & | w | |||
) |
Definition at line 966 of file GoBoardUtil.cpp.
References GoBoardWrite::WriteMap::Board(), GoBoardWrite::WriteMap::Points(), GoBoard::Size(), and SgPointSet::Write().
std::ostream& operator<< | ( | std::ostream & | out, | |
const GoBoard & | bd | |||
) |
Definition at line 868 of file GoBoardUtil.h.
References GoWriteBoard().
const int MAX_ADJACENT = (SG_MAX_SIZE + 1) * (SG_MAX_SIZE + 1) / 4 [static] |
Definition at line 1095 of file GoBoardUtil.h.
Referenced by GoAdjBlockIterator< BOARD >::GoAdjBlockIterator().