const ( SpaceHomePlayer int8 = 0 SpaceHomeOpponent int8 = 25 SpaceBarPlayer int8 = 26 SpaceBarOpponent int8 = 27 SpaceRoll1 int8 = 28 SpaceRoll2 int8 = 29 SpaceRoll3 int8 = 30 SpaceRoll4 int8 = 31 SpaceEnteredPlayer int8 = 32 // Whether the player has fully entered the board. Only used in acey-deucey games. SpaceEnteredOpponent int8 = 33 // Whether the opponent has fully entered the board. Only used in acey-deucey games. SpaceVariant int8 = 34 // 0 - Backgammon, 1 - Acey-deucey, 2 - Tabula. )
const ( VariantBackgammon int8 = 0 VariantAceyDeucey int8 = 1 VariantTabula int8 = 2 )
var ( WeightBlot = 0.9 WeightHit = -1.0 WeightOppScore = -0.9 )
var ( AnalysisBufferSize = 128 SubAnalysisBufferSize = 3072 )
var QueueBufferSize = 4096000
var Verbose bool
func PseudoPips(player int8, space int8, variant int8) int
type Analysis struct { Board Board Moves [4][2]int8 Past bool Score float64 Pips int Blots int Hits int PlayerScore float64 OppPips float64 OppBlots float64 OppHits float64 OppScore float64 // contains filtered or unexported fields }
func (a *Analysis) String() string
type BEIServer struct { }
func NewBEIServer() *BEIServer
func (s *BEIServer) Listen(address string)
Board represents the state of a game. It contains spaces for the checkers, as well as four "spaces" which contain the available die rolls.
type Board [boardSpaces]int8
func NewBoard(variant int8) Board
NewBoard returns a new board with checkers placed in their starting positions.
func (b Board) Analyze(available [][4][2]int8, result *[]*Analysis)
func (b Board) Available(player int8) ([][4][2]int8, []Board)
Available returns legal moves available.
func (b Board) Blots(player int8) int
func (b Board) ChooseDoubles(result *[]*Analysis) int
func (b Board) Evaluation(player int8, hitScore int, moves [4][2]int8) *Analysis
func (b Board) FirstLast(player int8) (playerFirst int8, opponentLast int8)
func (b Board) HaveRoll(from int8, to int8, player int8) bool
HaveRoll returns whether the player has a sufficient die roll for the specified move.
func (b Board) MayBearOff(player int8) bool
func (b Board) Move(from int8, to int8, player int8) Board
Move moves a checker on the board.
func (b Board) Past() bool
func (b Board) Pips(player int8) int
func (b Board) Print()
func (b Board) SecondHalf(player int8) bool
func (b Board) SetValue(space int, value int8) Board
func (b Board) StartingPosition(player int8) bool
func (b Board) UseRoll(from int8, to int8, player int8) Board
UseRoll uses a die roll. UseRoll must be called before making a move.