Support playing offline versus AI
This commit is contained in:
parent
f7692ce4b7
commit
a8e3cf52c7
5 changed files with 36 additions and 15 deletions
|
@ -1,3 +1,6 @@
|
|||
1.1.6:
|
||||
- Support playing offline versus AI
|
||||
|
||||
1.1.5:
|
||||
- Support playing acey-deucey games
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
27
game/game.go
27
game/game.go
|
@ -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
6
go.mod
|
@ -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
14
go.sum
|
@ -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=
|
||||
|
|
Loading…
Reference in a new issue