BitBully 0.0.56-a6
Loading...
Searching...
No Matches
BitBully::Board Class Reference

Public Types

enum  Player { P_EMPTY = 0 , P_YELLOW = 1 , P_RED = 2 }
using TBitBoard = uint64_t
using TMovesCounter = int
using TBoardArray = std::array<std::array<int32_t, N_ROWS>, N_COLUMNS>
using TBoardArrayT = std::array<std::array<int32_t, N_COLUMNS>, N_ROWS>

Public Member Functions

void playMoveFastBB (const TBitBoard mv)
Board playMoveOnCopy (const TBitBoard mv) const
Board copy () const
TBitBoard generateMoves () const
auto popCountBoard () const
bool isLegalMove (int column) const
uint64_t uid () const
uint64_t hash () const
bool operator== (const Board &b) const
bool operator!= (const Board &b) const
TBitBoard findOddThreats (TBitBoard moves)
bool setBoard (const TBoardArray &board)
bool setBoard (const TBoardArrayT &board)
bool setBoard (const std::vector< int > &moveSequence)
bool setBoard (const std::string &moveSequence)
TBoardArray toArray () const
bool playMove (int column)
bool canWin () const
bool canWin (int column) const
bool hasWin () const
std::string toString () const
TMovesCounter movesLeft () const
TMovesCounter countTokens () const
Board mirror () const
MoveList sortMoves (TBitBoard moves) const
TBitBoard findThreats (TBitBoard moves)
TBitBoard generateNonLosingMoves () const
TBitBoard doubleThreat (const TBitBoard moves) const
int toHuffman () const
std::vector< BoardallPositions (const int upToNPly, bool exactlyN) const

Static Public Member Functions

static constexpr int popCountBoard (uint64_t x)
static uint64_t hash (uint64_t x)
static TBitBoard nextMove (TBitBoard allMoves)
static bool isValid (const TBoardArray &board)
static TBitBoard lsb (const TBitBoard x)
static std::pair< Board, std::vector< int > > randomBoard (const int nPly, const bool forbidDirectWin=true)

Static Public Attributes

static constexpr int N_COLUMNS = 7
static constexpr int N_ROWS = 6
static constexpr int COLUMN_BIT_OFFSET = 9
static constexpr size_t N_VALID_BOARD_VALUES = 3

Friends

class BoardTest

Detailed Description

Definition at line 72 of file Board.h.

Member Typedef Documentation

◆ TBitBoard

using BitBully::Board::TBitBoard = uint64_t

Definition at line 82 of file Board.h.

◆ TBoardArray

using BitBully::Board::TBoardArray = std::array<std::array<int32_t, N_ROWS>, N_COLUMNS>

Definition at line 84 of file Board.h.

◆ TBoardArrayT

using BitBully::Board::TBoardArrayT = std::array<std::array<int32_t, N_COLUMNS>, N_ROWS>

Definition at line 85 of file Board.h.

◆ TMovesCounter

using BitBully::Board::TMovesCounter = int

Definition at line 83 of file Board.h.

Member Enumeration Documentation

◆ Player

enum BitBully::Board::Player

Definition at line 80 of file Board.h.

Constructor & Destructor Documentation

◆ Board()

BitBully::Board::Board ( )

Definition at line 10 of file Board.cpp.

Member Function Documentation

◆ allPositions()

std::vector< Board > BitBully::Board::allPositions ( const int upToNPly,
bool exactlyN ) const
inlinenodiscard

Definition at line 280 of file Board.h.

◆ canWin() [1/2]

bool BitBully::Board::canWin ( ) const
nodiscard

Definition at line 376 of file Board.cpp.

◆ canWin() [2/2]

bool BitBully::Board::canWin ( int column) const
nodiscard

Definition at line 381 of file Board.cpp.

◆ copy()

Board BitBully::Board::copy ( ) const
inlinenodiscard

Definition at line 105 of file Board.h.

◆ countTokens()

TMovesCounter BitBully::Board::countTokens ( ) const
inlinenodiscard

Definition at line 191 of file Board.h.

◆ doubleThreat()

TBitBoard BitBully::Board::doubleThreat ( const TBitBoard moves) const
inlinenodiscard

Definition at line 222 of file Board.h.

◆ findOddThreats()

Board::TBitBoard BitBully::Board::findOddThreats ( TBitBoard moves)

Definition at line 313 of file Board.cpp.

◆ findThreats()

Board::TBitBoard BitBully::Board::findThreats ( TBitBoard moves)

Definition at line 282 of file Board.cpp.

◆ generateMoves()

Board::TBitBoard BitBully::Board::generateMoves ( ) const
nodiscard

Definition at line 387 of file Board.cpp.

◆ generateNonLosingMoves()

TBitBoard BitBully::Board::generateNonLosingMoves ( ) const
inlinenodiscard

Definition at line 206 of file Board.h.

◆ hash() [1/2]

uint64_t BitBully::Board::hash ( ) const
inlinenodiscard

Definition at line 140 of file Board.h.

◆ hash() [2/2]

uint64_t BitBully::Board::hash ( uint64_t x)
inlinestatic

Definition at line 127 of file Board.h.

◆ hasWin()

bool BitBully::Board::hasWin ( ) const
nodiscard

Definition at line 225 of file Board.cpp.

◆ isLegalMove()

bool BitBully::Board::isLegalMove ( int column) const
nodiscard

Definition at line 141 of file Board.cpp.

◆ isValid()

bool BitBully::Board::isValid ( const TBoardArray & board)
static

Definition at line 92 of file Board.cpp.

◆ lsb()

TBitBoard BitBully::Board::lsb ( const TBitBoard x)
inlinestatic

Definition at line 201 of file Board.h.

◆ mirror()

Board BitBully::Board::mirror ( ) const
nodiscard

Definition at line 429 of file Board.cpp.

◆ movesLeft()

TMovesCounter BitBully::Board::movesLeft ( ) const
inlinenodiscard

Definition at line 189 of file Board.h.

◆ nextMove()

TBitBoard BitBully::Board::nextMove ( TBitBoard allMoves)
inlinestatic

Definition at line 144 of file Board.h.

◆ operator!=()

bool BitBully::Board::operator!= ( const Board & b) const
inline

Definition at line 163 of file Board.h.

◆ operator==()

bool BitBully::Board::operator== ( const Board & b) const
inline

Definition at line 154 of file Board.h.

◆ playMove()

bool BitBully::Board::playMove ( int column)

Definition at line 132 of file Board.cpp.

◆ playMoveFastBB()

void BitBully::Board::playMoveFastBB ( const TBitBoard mv)
inline

Definition at line 87 of file Board.h.

◆ playMoveOnCopy()

Board BitBully::Board::playMoveOnCopy ( const TBitBoard mv) const
inlinenodiscard

Definition at line 99 of file Board.h.

◆ popCountBoard() [1/2]

auto BitBully::Board::popCountBoard ( ) const
inlinenodiscard

Definition at line 121 of file Board.h.

◆ popCountBoard() [2/2]

constexpr int BitBully::Board::popCountBoard ( uint64_t x)
inlinestaticconstexpr

Definition at line 112 of file Board.h.

◆ randomBoard()

std::pair< Board, std::vector< int > > BitBully::Board::randomBoard ( const int nPly,
const bool forbidDirectWin = true )
inlinestatic

Definition at line 264 of file Board.h.

◆ setBoard() [1/4]

bool BitBully::Board::setBoard ( const std::string & moveSequence)

Definition at line 32 of file Board.cpp.

◆ setBoard() [2/4]

bool BitBully::Board::setBoard ( const std::vector< int > & moveSequence)

Definition at line 22 of file Board.cpp.

◆ setBoard() [3/4]

bool BitBully::Board::setBoard ( const TBoardArray & board)

Definition at line 62 of file Board.cpp.

◆ setBoard() [4/4]

bool BitBully::Board::setBoard ( const TBoardArrayT & board)

Definition at line 57 of file Board.cpp.

◆ sortMoves()

MoveList BitBully::Board::sortMoves ( TBitBoard moves) const
nodiscard

Definition at line 256 of file Board.cpp.

◆ toArray()

Board::TBoardArray BitBully::Board::toArray ( ) const
nodiscard

Definition at line 391 of file Board.cpp.

◆ toHuffman()

int BitBully::Board::toHuffman ( ) const
inlinenodiscard

Definition at line 239 of file Board.h.

◆ toString()

std::string BitBully::Board::toString ( ) const
nodiscard

Definition at line 409 of file Board.cpp.

◆ uid()

uint64_t BitBully::Board::uid ( ) const
inlinenodiscard

Definition at line 134 of file Board.h.

◆ BoardTest

friend class BoardTest
friend

Definition at line 73 of file Board.h.

Member Data Documentation

◆ COLUMN_BIT_OFFSET

int BitBully::Board::COLUMN_BIT_OFFSET = 9
staticconstexpr

Definition at line 79 of file Board.h.

◆ N_COLUMNS

int BitBully::Board::N_COLUMNS = 7
staticconstexpr

Definition at line 77 of file Board.h.

◆ N_ROWS

int BitBully::Board::N_ROWS = 6
staticconstexpr

Definition at line 78 of file Board.h.

◆ N_VALID_BOARD_VALUES

size_t BitBully::Board::N_VALID_BOARD_VALUES = 3
staticconstexpr

Definition at line 81 of file Board.h.


The documentation for this class was generated from the following files: