Support playing offline versus AI

This commit is contained in:
Trevor Slocum 2023-11-30 13:41:33 -08:00
parent f7692ce4b7
commit a8e3cf52c7
5 changed files with 36 additions and 15 deletions

View file

@ -1,3 +1,6 @@
1.1.6:
- Support playing offline versus AI
1.1.5:
- Support playing acey-deucey games

View file

@ -45,3 +45,4 @@ Please share issues and suggestions [here](https://code.rocket9labs.com/tslocum/
- [messeji](https://code.rocket9labs.com/tslocum/messeji) - Text display and input widgets
- [draw2d](https://github.com/llgcode/draw2d) - Shape drawing
- [resize](https://github.com/nfnt/resize) - Image resizing
- [tabula](https://code.rocket9labs.com/tslocum/tabula) - Backgammon AI

View file

@ -20,6 +20,7 @@ import (
"time"
"code.rocket9labs.com/tslocum/bgammon"
"code.rocket9labs.com/tslocum/bgammon-tabula-bot/bot"
"code.rocket9labs.com/tslocum/bgammon/pkg/server"
"code.rocket9labs.com/tslocum/etk"
"code.rocketnine.space/tslocum/kibodo"
@ -38,7 +39,7 @@ import (
"golang.org/x/text/language"
)
const version = "v1.1.5"
const version = "v1.1.6"
const MaxDebug = 2
@ -834,9 +835,21 @@ func (g *Game) playOffline() {
if g.loggedIn {
return
}
// Start the local server.
server := server.NewServer("", "", false)
conn := server.ListenLocal()
go g.ConnectLocal(conn)
conns := server.ListenLocal()
// Connect the bot.
botConn := <-conns
go bot.NewLocalClient(botConn, "", "BOT_tabula", "", 1)
// Wait for the bot to finish creating a match.
time.Sleep(10 * time.Millisecond)
// Connect the player.
playerConn := <-conns
go g.ConnectLocal(playerConn)
}
func (g *Game) handleUpdateTimeLabels() {
@ -1601,17 +1614,11 @@ func (g *Game) layoutBoard() {
g.needLayoutBoard = false
if g.portraitView() { // Portrait view.
g.Board.Lock()
g.Board.fullHeight = false
g.Board.setRect(0, 0, g.screenW, g.screenW)
g.Board.Unlock()
g.Board.uiGrid.SetRect(image.Rect(0, g.Board.h, g.screenW, g.screenH))
} else { // Landscape view.
g.Board.Lock()
g.Board.fullHeight = true
g.Board.setRect(0, 0, g.screenW-g.bufferWidth, g.screenH)
@ -1626,8 +1633,6 @@ func (g *Game) layoutBoard() {
g.Board.setRect(0, 0, g.Board.w, g.Board.w)
}
g.Board.Unlock()
bufferPaddingX := int(g.Board.horizontalBorderSize / 2)
g.Board.uiGrid.SetRect(image.Rect(g.Board.w+bufferPaddingX, bufferPaddingX, g.screenW-bufferPaddingX, g.screenH-bufferPaddingX))
}

6
go.mod
View file

@ -1,9 +1,10 @@
module code.rocket9labs.com/tslocum/boxcars
go 1.17
go 1.21.4
require (
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130211730-d63d80ad065a
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130213126-817f86dcf920
code.rocket9labs.com/tslocum/bgammon-tabula-bot v0.0.0-20231130213432-0a1dd87fe70e
code.rocket9labs.com/tslocum/etk v0.0.0-20231120184929-cba07aae6454
code.rocketnine.space/tslocum/kibodo v1.0.2
code.rocketnine.space/tslocum/messeji v1.0.6-0.20231128010227-689683b75174
@ -17,6 +18,7 @@ require (
)
require (
code.rocket9labs.com/tslocum/tabula v0.0.0-20231130202354-01189fe9433e // indirect
github.com/ebitengine/oto/v3 v3.1.0 // indirect
github.com/ebitengine/purego v0.5.1 // indirect
github.com/gobwas/httphead v0.1.0 // indirect

14
go.sum
View file

@ -1,13 +1,18 @@
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130211730-d63d80ad065a h1:Y0QqssmUkUVvuNalZp1mlr/kJoIyxmsjw8SbvnM2hW4=
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130211730-d63d80ad065a/go.mod h1:+dgD9v8BlzZjzpIB+/g0lgog90YUoPzEZsp1iAchl30=
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130213126-817f86dcf920 h1:0WYRdT4yxJgbDPg+LASmNbGUuk9V/k/HfVNukGANFtc=
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231130213126-817f86dcf920/go.mod h1:+dgD9v8BlzZjzpIB+/g0lgog90YUoPzEZsp1iAchl30=
code.rocket9labs.com/tslocum/bgammon-tabula-bot v0.0.0-20231130213432-0a1dd87fe70e h1:QPkiO+0gw39CpNAoDyastfQMiqjjLn0V4T//snUv6A4=
code.rocket9labs.com/tslocum/bgammon-tabula-bot v0.0.0-20231130213432-0a1dd87fe70e/go.mod h1:KfCEyYORXFZc7bCdWbCRmC6b3tceW2ydXGRXErgTx3s=
code.rocket9labs.com/tslocum/etk v0.0.0-20231120184929-cba07aae6454 h1:R+KAg2+ORkMT/bcljmlno1nr21OBOxo6hY0Qa2qOk+Y=
code.rocket9labs.com/tslocum/etk v0.0.0-20231120184929-cba07aae6454/go.mod h1:bDrMbdTIhIy9egS6ISZat3Cw1dusd/Raeiq8vKHo9b4=
code.rocket9labs.com/tslocum/tabula v0.0.0-20231130202354-01189fe9433e h1:+u8tivrgQ8+UhQn/pAW6VHMziwoimD/w0RrEXtThnIQ=
code.rocket9labs.com/tslocum/tabula v0.0.0-20231130202354-01189fe9433e/go.mod h1:DZdQq8KZDVw6rdeo7Zerk74rrX/KQHuKoQgiF+jVmYA=
code.rocketnine.space/tslocum/kibodo v1.0.2 h1:0RfvVz+IUku8MFx9wvDb+p8byns5gAjQLUo4ZenWP44=
code.rocketnine.space/tslocum/kibodo v1.0.2/go.mod h1:mAYs1JKFnWlRFzo9BtteAlwjKdk1MIKgEyhQaPdeQDI=
code.rocketnine.space/tslocum/messeji v1.0.6-0.20231128010227-689683b75174 h1:jxE3JcaE4ovMWaZHLA6MvYgkmdkdbEEUv943Bp+MoxU=
code.rocketnine.space/tslocum/messeji v1.0.6-0.20231128010227-689683b75174/go.mod h1:yLsZtW6XgrQPpqBpQfJJkueurBUUYNnkPr68cS1MtJc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/ebitengine/oto/v3 v3.1.0 h1:9tChG6rizyeR2w3vsygTTTVVJ9QMMyu00m2yBOCch6U=
github.com/ebitengine/oto/v3 v3.1.0/go.mod h1:IK1QTnlfZK2GIB6ziyECm433hAdTaPpOsGMLhEyEGTg=
github.com/ebitengine/purego v0.5.1 h1:hNunhThpOf1vzKl49v6YxIsXLhl92vbBEv1/2Ez3ZrY=
@ -21,6 +26,7 @@ github.com/gobwas/ws v1.3.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/K
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/hajimehoshi/bitmapfont/v3 v3.0.0 h1:r2+6gYK38nfztS/et50gHAswb9hXgxXECYgE8Nczmi4=
github.com/hajimehoshi/bitmapfont/v3 v3.0.0/go.mod h1:+CxxG+uMmgU4mI2poq944i3uZ6UYFfAkj9V6WqmuvZA=
github.com/hajimehoshi/ebiten/v2 v2.6.3 h1:xJ5klESxhflZbPUx3GdIPoITzgPgamsyv8aZCVguXGI=
github.com/hajimehoshi/ebiten/v2 v2.6.3/go.mod h1:TZtorL713an00UW4LyvMeKD8uXWnuIuCPtlH11b0pgI=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
@ -30,6 +36,7 @@ github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZ
github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=
github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4=
github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk=
github.com/jfreymuth/oggvorbis v1.0.5 h1:u+Ck+R0eLSRhgq8WTmffYnrVtSztJcYrl588DM4e3kQ=
@ -41,6 +48,7 @@ github.com/leonelquinteros/gotext v1.5.3-0.20231003122255-12a99145a351/go.mod h1
github.com/llgcode/draw2d v0.0.0-20231022063514-1acb54133d2a h1:aP1ySrs3EYBaKOF+1hEUbIMNjT8FZlGGbB73cRAukZw=
github.com/llgcode/draw2d v0.0.0-20231022063514-1acb54133d2a/go.mod h1:zNlGqkQNLxAN7D2uihSJsrEzrkWrSIK5kmSZU/dN5NY=
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb h1:61ndUreYSlWFeCY44JxDDkngVoI7/1MVhEl98Nm0KOk=
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb/go.mod h1:1l8ky+Ew27CMX29uG+a2hNOKpeNYEQjjtiALiBlFQbY=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@ -49,6 +57,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@ -90,5 +99,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q=
nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=