81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"code.rocket9labs.com/tslocum/tabula"
|
|
)
|
|
|
|
func main() {
|
|
var beiAddress string
|
|
var pips bool
|
|
flag.StringVar(&beiAddress, "bei", "", "Listen for BEI connections on specified address (TCP)")
|
|
flag.BoolVar(&pips, "pips", false, "Print table of pseudopip values")
|
|
flag.BoolVar(&tabula.Verbose, "verbose", false, "Print state of each request")
|
|
flag.Parse()
|
|
|
|
if pips {
|
|
for player := int8(1); player < 3; player++ {
|
|
fmt.Printf("Player %d:\n", player)
|
|
fmt.Println("| Space | Pseudopips |")
|
|
fmt.Println("| --- | --- |")
|
|
for space := int8(1); space <= 25; space++ {
|
|
fmt.Printf("| %d | %d |\n", space, tabula.PseudoPips(player, space, tabula.VariantBackgammon))
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
if beiAddress != "" {
|
|
s := tabula.NewBEIServer()
|
|
s.Listen(beiAddress)
|
|
}
|
|
|
|
//b := tabula.Board{0, 0, 0, 0, 0, -1, 8, 0, 4, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, -1, 1, -2, -2, -3, -2, 0, 2, 0, 0, 0, 0, 4, 1, 1, 0}
|
|
|
|
//b := tabula.Board{0, 0, -2, -2, -2, 4, 0, -1, 0, 0, -2, 4, 0, -2, -1, 0, -2, 4, 0, 2, 0, 0, 0, 0, -1, 0, 1, 0, 4, 1, 0, 0, 1, 1, 1}
|
|
|
|
analysis := make([]*tabula.Analysis, 0, tabula.AnalysisBufferSize)
|
|
|
|
b := tabula.Board{0, 0, 0, 1, 0, 0, 5, -1, 1, 0, 0, 0, -5, 4, 0, 0, 0, -4, 0, -5, 0, 2, 0, 0, 1, 0, 1, 0}
|
|
b[tabula.SpaceRoll1] = 1
|
|
b[tabula.SpaceRoll3] = 1
|
|
b.Print()
|
|
available, _ := b.Available(1)
|
|
for i := range available {
|
|
log.Println(available[i])
|
|
}
|
|
b.Analyze(available, &analysis)
|
|
for i := range analysis {
|
|
log.Println(analysis[i])
|
|
}
|
|
log.Println(b)
|
|
b = b.UseRoll(3, 1, 1).Move(3, 1, 1)
|
|
log.Println("NEW AVAILABLE")
|
|
log.Println(b)
|
|
available, _ = b.Available(1)
|
|
for i := range available {
|
|
log.Println(available[i])
|
|
}
|
|
log.Println(b)
|
|
os.Exit(0)
|
|
|
|
// Print opening moves.
|
|
for r1 := 1; r1 <= 6; r1++ {
|
|
for r2 := 1; r2 <= 6; r2++ {
|
|
b := tabula.NewBoard(tabula.VariantBackgammon)
|
|
b[tabula.SpaceRoll1] = int8(r1)
|
|
b[tabula.SpaceRoll2] = int8(r2)
|
|
if r1 == r2 {
|
|
b[tabula.SpaceRoll3] = int8(r1)
|
|
b[tabula.SpaceRoll4] = int8(r2)
|
|
}
|
|
available, _ := b.Available(1)
|
|
b.Analyze(available, &analysis)
|
|
log.Println("ROLL", r1, r2, analysis[0].Moves)
|
|
}
|
|
}
|
|
}
|