BitBully 0.0.39
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>
 

Public Member Functions

void playMoveFastBB (const TBitBoard mv)
 
Board playMoveOnCopy (const TBitBoard mv) 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 std::vector< int > &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.

◆ 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 9 of file Board.cpp.

Member Function Documentation

◆ allPositions()

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

Definition at line 270 of file Board.h.

◆ canWin() [1/2]

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

Definition at line 345 of file Board.cpp.

◆ canWin() [2/2]

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

Definition at line 350 of file Board.cpp.

◆ countTokens()

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

Definition at line 181 of file Board.h.

◆ doubleThreat()

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

Definition at line 212 of file Board.h.

◆ findOddThreats()

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

Definition at line 282 of file Board.cpp.

◆ findThreats()

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

Definition at line 251 of file Board.cpp.

◆ generateMoves()

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

Definition at line 356 of file Board.cpp.

◆ generateNonLosingMoves()

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

Definition at line 196 of file Board.h.

◆ hash() [1/2]

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

Definition at line 134 of file Board.h.

◆ hash() [2/2]

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

Definition at line 121 of file Board.h.

◆ hasWin()

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

Definition at line 194 of file Board.cpp.

◆ isLegalMove()

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

Definition at line 110 of file Board.cpp.

◆ isValid()

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

Definition at line 61 of file Board.cpp.

◆ lsb()

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

Definition at line 191 of file Board.h.

◆ mirror()

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

Definition at line 398 of file Board.cpp.

◆ movesLeft()

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

Definition at line 179 of file Board.h.

◆ nextMove()

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

Definition at line 138 of file Board.h.

◆ operator!=()

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

Definition at line 157 of file Board.h.

◆ operator==()

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

Definition at line 148 of file Board.h.

◆ playMove()

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

Definition at line 101 of file Board.cpp.

◆ playMoveFastBB()

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

Definition at line 86 of file Board.h.

◆ playMoveOnCopy()

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

Definition at line 98 of file Board.h.

◆ popCountBoard() [1/2]

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

Definition at line 115 of file Board.h.

◆ popCountBoard() [2/2]

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

Definition at line 106 of file Board.h.

◆ randomBoard()

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

Definition at line 254 of file Board.h.

◆ setBoard() [1/2]

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

Definition at line 21 of file Board.cpp.

◆ setBoard() [2/2]

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

Definition at line 31 of file Board.cpp.

◆ sortMoves()

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

Definition at line 225 of file Board.cpp.

◆ toArray()

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

Definition at line 360 of file Board.cpp.

◆ toHuffman()

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

Definition at line 229 of file Board.h.

◆ toString()

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

Definition at line 378 of file Board.cpp.

◆ uid()

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

Definition at line 128 of file Board.h.

Friends And Related Symbol Documentation

◆ 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: