A chess GUI build using the Fyne toolkit.

Chess

The subject of my current live stream series. A simple chess UI built with Fyne.

Thanks to:

Running

Just use the go tools to install on your system and run it.

$ go get github.com/andydotxyz/chess
$ ./chess

Installing

To install alongside the other applications on your system use the fyne tool.

$ go get fyne.io/fyne/v2/cmd/fyne
$ fyne install

Screenshot

Status

  • Renders board
  • Animate moves
  • Polish board and colours etc
  • Handle user input
  • Drag and drop for moves
  • Take turns against a computer player
  • Save state and restore on app launch

TODO

  • Add game summary info (who to move etc)
  • Remove dependency on external algorithm
Owner
Andy Williams
Go, Java and C developer, CTO and technical leader
Andy Williams
Similar Resources

A cli to play chess against an an UCI engine of your choice, written in go

A cli to play chess against an an UCI engine of your choice, written in go

chess-cli chess-cli is a cli for playing chess against an UCI compatible engine written in go Note: Chess pieces are in unicode, so the color may seem

Dec 24, 2021

A simple chess engine for experiment, made in Golang

chess-engine A simple chess engine for experiment, made in Golang Build the engine Run the command make or make build Run the engine Run the command f

Dec 26, 2021

chess.com api wrapper for go

Chessdotcom-go An unofficial, simple, lighweight API wrapper for chess.com written in go Usage go get -u "github.com/ATTron/chessdotcom-go" im

Dec 31, 2021

A chess server built with Temporal.

A chess server built with Temporal.

chesstempo A chess server built with Temporal. Dependencies The activity worker runs Stockfish in the background. In Debian-based distros, you can ins

Nov 21, 2022

Open source of the build infrastructure used by Stadia Games & Entertainment

SG&E Monorepo This repository contains the open sourcing of the infrastructure developed by Stadia Games & Entertainment (SG&E) to run its operations.

Dec 18, 2022

build and animate objects according to verlet physics. pure golang library

build and animate objects according to verlet physics. pure golang library

verlet build and animate objects according to verlet physics. pure golang library Examples depend on pixel library, see requirements to build them: wo

Dec 22, 2022

A small fantasy game engine in WASM using GoLang

A small fantasy game engine in WASM using GoLang

The GoLang Fantasy Engine (GoLF Engine) is a retro game engine. It draws inspiration from fantasy console projects like pico-8, tic-80, and pyxle. Like those projects it is designed to be a retro-feeling game creation/playing tool. Unlike those projects GoLF is more minimal in scope and only provides an API and a small set of tools to help you create your games. Tools like an image editor and code editor are not built in. Despite this minimalism creating games in GoLF is still easy and should still maintain the retro game feel.

Jul 16, 2022

Arkanoid game in Go using Ebiten game engine with ECS.

Arkanoid game in Go using Ebiten game engine with ECS.

Arkanoid-go Arkanoid game in Go using Ebiten game engine with ECS. You must have Git LFS installed when cloning the repository to download assets. See

Oct 9, 2022

This project is designed to be an open source implementation for streaming desktop games using WebRTC

This project is designed to be an open source implementation for streaming desktop games using WebRTC

The aim of this project is develop a WebRTC screenshare designed for streaming video games and accepting remote inputs. There will be ansible instruct

Oct 6, 2022
Comments
  • stockfish missing seems to cause stack-overflow on Windows

    stockfish missing seems to cause stack-overflow on Windows

    Just got the following error when looking at differences between our chess implementations. This is your master. I Just turn off the computer and it's fine 😄

    Traceback from console
    $ go run .
    2021/12/29 15:03:55 Cound not find stockfish executable, using random player
    runtime: goroutine stack exceeds 1000000000-byte limit
    runtime: sp=0xc020835388 stack=[0xc020834000, 0xc040834000]
    fatal error: stack overflow
    
    runtime stack:
    runtime.throw(0x11e74ca, 0xe)
            C:/Program Files/Go/src/runtime/panic.go:1117 +0x79
    runtime.newstack()
            C:/Program Files/Go/src/runtime/stack.go:1069 +0x80d
    runtime.morestack()
            C:/Program Files/Go/src/runtime/asm_amd64.s:458 +0x97
    
    goroutine 24 [running]:
    runtime.typehash(0x11ca2e0, 0xc020835488, 0x756ea1d0d9fa52, 0xb04325)
            C:/Program Files/Go/src/runtime/alg.go:144 +0x65d fp=0xc020835398 sp=0xc020835390 pc=0xb0443d
    runtime.nilinterhash(0xc020835480, 0xba8f5c73, 0xc00005db00)
            C:/Program Files/Go/src/runtime/alg.go:128 +0x78 fp=0xc0208353e0 sp=0xc020835398 pc=0xb03cd8
    runtime.mapaccess2(0x1182740, 0xc0000c4e70, 0xc020835480, 0x1bf62f6abd8, 0xc0208354c0)
            C:/Program Files/Go/src/runtime/map.go:471 +0x72 fp=0xc020835420 sp=0xc0208353e0 pc=0xb10e72
    sync.(*Map).Load(0x141a060, 0x11ca2e0, 0xc00005db00, 0x0, 0x0, 0xcb3900)
            C:/Program Files/Go/src/sync/map.go:104 +0xb2 fp=0xc0208354a0 sp=0xc020835420 pc=0xb77a92
    fyne.io/fyne/v2/internal/cache.Renderer(0x1257ee8, 0xc00005db00, 0xc00005db00, 0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/cache/widget.go:27 +0xac fp=0xc0208354f8 sp=0xc0208354a0 pc=0xcb394c
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:138 +0x52 fp=0xc020835528 sp=0xc0208354f8 pc=0xcd3e12
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835558 sp=0xc020835528 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835588 sp=0xc020835558 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208355b8 sp=0xc020835588 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208355e8 sp=0xc0208355b8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835618 sp=0xc0208355e8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835648 sp=0xc020835618 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835678 sp=0xc020835648 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208356a8 sp=0xc020835678 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208356d8 sp=0xc0208356a8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835708 sp=0xc0208356d8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835738 sp=0xc020835708 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835768 sp=0xc020835738 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835798 sp=0xc020835768 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208357c8 sp=0xc020835798 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208357f8 sp=0xc0208357c8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835828 sp=0xc0208357f8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835858 sp=0xc020835828 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835888 sp=0xc020835858 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208358b8 sp=0xc020835888 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208358e8 sp=0xc0208358b8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835918 sp=0xc0208358e8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835948 sp=0xc020835918 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835978 sp=0xc020835948 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208359a8 sp=0xc020835978 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208359d8 sp=0xc0208359a8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835a08 sp=0xc0208359d8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835a38 sp=0xc020835a08 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835a68 sp=0xc020835a38 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835a98 sp=0xc020835a68 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835ac8 sp=0xc020835a98 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835af8 sp=0xc020835ac8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835b28 sp=0xc020835af8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835b58 sp=0xc020835b28 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835b88 sp=0xc020835b58 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835bb8 sp=0xc020835b88 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835be8 sp=0xc020835bb8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835c18 sp=0xc020835be8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835c48 sp=0xc020835c18 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835c78 sp=0xc020835c48 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835ca8 sp=0xc020835c78 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835cd8 sp=0xc020835ca8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835d08 sp=0xc020835cd8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835d38 sp=0xc020835d08 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835d68 sp=0xc020835d38 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835d98 sp=0xc020835d68 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835dc8 sp=0xc020835d98 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835df8 sp=0xc020835dc8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835e28 sp=0xc020835df8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835e58 sp=0xc020835e28 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835e88 sp=0xc020835e58 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835eb8 sp=0xc020835e88 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835ee8 sp=0xc020835eb8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835f18 sp=0xc020835ee8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835f48 sp=0xc020835f18 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835f78 sp=0xc020835f48 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835fa8 sp=0xc020835f78 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020835fd8 sp=0xc020835fa8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836008 sp=0xc020835fd8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836038 sp=0xc020836008 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836068 sp=0xc020836038 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836098 sp=0xc020836068 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208360c8 sp=0xc020836098 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208360f8 sp=0xc0208360c8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836128 sp=0xc0208360f8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836158 sp=0xc020836128 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836188 sp=0xc020836158 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208361b8 sp=0xc020836188 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208361e8 sp=0xc0208361b8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836218 sp=0xc0208361e8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836248 sp=0xc020836218 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836278 sp=0xc020836248 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208362a8 sp=0xc020836278 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208362d8 sp=0xc0208362a8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836308 sp=0xc0208362d8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836338 sp=0xc020836308 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836368 sp=0xc020836338 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836398 sp=0xc020836368 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208363c8 sp=0xc020836398 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208363f8 sp=0xc0208363c8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836428 sp=0xc0208363f8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836458 sp=0xc020836428 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836488 sp=0xc020836458 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208364b8 sp=0xc020836488 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208364e8 sp=0xc0208364b8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836518 sp=0xc0208364e8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836548 sp=0xc020836518 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836578 sp=0xc020836548 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208365a8 sp=0xc020836578 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208365d8 sp=0xc0208365a8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836608 sp=0xc0208365d8 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836638 sp=0xc020836608 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836668 sp=0xc020836638 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc020836698 sp=0xc020836668 pc=0xcd3e26
    fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00005db00)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:139 +0x66 fp=0xc0208366c8 sp=0xc020836698 pc=0xcd3e26
    ...additional frames elided...
    created by fyne.io/fyne/v2/app.newAppWithDriver
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/app.go:118 +0x1e9
    
    goroutine 1 [select, locked to thread]:
    fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc0000e0410)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:90 +0x147
    fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc0000e0410)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/driver.go:80 +0x3e
    fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0003a8000)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:449 +0x45
    main.main()
            C:/Users/lewis/projects/chess/main.go:52 +0x46d
    
    goroutine 19 [select]:
    fyne.io/fyne/v2/data/binding.makeInfiniteQueue.func1(0xc000086120, 0xc0000d80b0)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:36 +0x165
    created by fyne.io/fyne/v2/data/binding.makeInfiniteQueue
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:21 +0xb6
    
    goroutine 20 [chan receive]:
    fyne.io/fyne/v2/data/binding.processItems()
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:54 +0x4b
    created by fyne.io/fyne/v2/data/binding.init.0
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:15 +0x3c
    
    goroutine 21 [sleep]:
    time.Sleep(0x22ecb25c00)
            C:/Program Files/Go/src/runtime/time.go:193 +0xe5
    fyne.io/fyne/v2/internal/painter.svgCacheJanitor.func1()
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/painter/svg_cache.go:57 +0x11d
    sync.(*Once).doSlow(0x145e688, 0xc00009f390)
            C:/Program Files/Go/src/sync/once.go:68 +0xf7
    sync.(*Once).Do(0x145e688, 0xc00009f390)
            C:/Program Files/Go/src/sync/once.go:59 +0x4c
    created by fyne.io/fyne/v2/internal/painter.svgCacheJanitor
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/painter/svg_cache.go:55 +0xa5
    
    goroutine 22 [syscall, locked to thread]:
    syscall.Syscall6(0x7ffe4d175dd0, 0x5, 0x238, 0xc0002add80, 0xc0002add84, 0xc0002addd0, 0xffffffff, 0x0, 0x0, 0x0, ...)
            C:/Program Files/Go/src/runtime/syscall_windows.go:343 +0xf2
    syscall.GetQueuedCompletionStatus(0x238, 0xc0002add80, 0xc0002add84, 0xc0002addd0, 0xffffffff, 0x0, 0x0)
            C:/Program Files/Go/src/syscall/zsyscall_windows.go:826 +0xd5
    github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0000f4480)
            C:/Users/lewis/go/pkg/mod/github.com/fsnotify/[email protected]/windows.go:381 +0xa5
    created by github.com/fsnotify/fsnotify.NewWatcher
            C:/Users/lewis/go/pkg/mod/github.com/fsnotify/[email protected]/windows.go:46 +0x1f6
    
    goroutine 23 [chan receive]:
    fyne.io/fyne/v2/app.watchFile.func1(0xc0000f4480, 0xc0000a40f0, 0x43, 0xc00008bc00, 0xc00008bc10)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:42 +0x5f
    created by fyne.io/fyne/v2/app.watchFile
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:41 +0xf1
    
    goroutine 25 [syscall, locked to thread]:
    syscall.Syscall6(0x7ffe4d175dd0, 0x5, 0x264, 0xc0002c7d80, 0xc0002c7d84, 0xc0002c7dd0, 0xffffffff, 0x0, 0x0, 0x0, ...)
            C:/Program Files/Go/src/runtime/syscall_windows.go:343 +0xf2
    syscall.GetQueuedCompletionStatus(0x264, 0xc0002c7d80, 0xc0002c7d84, 0xc0002c7dd0, 0xffffffff, 0x0, 0x0)
            C:/Program Files/Go/src/syscall/zsyscall_windows.go:826 +0xd5
    github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0000f44c0)
            C:/Users/lewis/go/pkg/mod/github.com/fsnotify/[email protected]/windows.go:381 +0xa5
    created by github.com/fsnotify/fsnotify.NewWatcher
            C:/Users/lewis/go/pkg/mod/github.com/fsnotify/[email protected]/windows.go:46 +0x1f6
    
    goroutine 26 [chan receive]:
    fyne.io/fyne/v2/app.watchFile.func1(0xc0000f44c0, 0xc0000c7800, 0x31, 0xc00008bcc0, 0xc00008bcd0)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:42 +0x5f
    created by fyne.io/fyne/v2/app.watchFile
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:41 +0xf1
    
    goroutine 34 [select, locked to thread]:
    fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1(0xc0000e0410, 0xc0003a2000, 0xc000380050)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:186 +0xf6
    created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:182 +0xc8
    
    goroutine 35 [chan receive]:
    fyne.io/fyne/v2/internal/driver/glfw.(*window).runEventQueue(0xc0003a8000)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:1267 +0xbd
    created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:1292 +0x114
    
    goroutine 36 [chan receive]:
    fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).setupThemeListener.func1(0xc0003a2060, 0xc0003ac000)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/canvas.go:495 +0x4e
    created by fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).setupThemeListener
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/canvas.go:493 +0xb1
    
    goroutine 51 [chan receive]:
    fyne.io/fyne/v2/internal/painter.SvgCacheMonitorTheme.func1(0xc000420000)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/painter/svg_cache.go:109 +0x3b
    created by fyne.io/fyne/v2/internal/painter.SvgCacheMonitorTheme
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/internal/painter/svg_cache.go:107 +0xa7
    
    goroutine 114 [chan send]:
    fyne.io/fyne/v2/app.(*settings).apply.func1(0xc0000863c0, 0xc000280090)
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings.go:109 +0x52
    created by fyne.io/fyne/v2/app.(*settings).apply
            C:/Users/lewis/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings.go:109 +0x111
    exit status 2
    

    Go 1.16 main branch at 763a46de3204c4e876641164bc9060d4a764fc20 Windows 10 64-bit

  • Choose opponent

    Choose opponent

    Extensive refactoring Ability to choose opponent (human or engine)

    Issues:

    • Sometimes weird display behavior when playing engine vs. engine
    • Storing to preferences had to be disabled, as this blocks everything, occasionally.
  • Choose opponent

    Choose opponent

    • Code refactoring: separated chess playing "agents" (humans, UCI, random, the future CPU player etc.) from the UI and established an abstraction to be able to exchange them with each other (this will also be beneficial for future multiplayer mode).

    • Choose type of opponent (human, engine/random) and store the type of opponent in preferences.

    • Choose White or Black (or to let the engines play each other) and store this in preferences.

Chesscode - Chesscode: a way of encoding messages using a chess board and the starting set of chess pieces
Chesscode - Chesscode: a way of encoding messages using a chess board and the starting set of chess pieces

chesscode Are you a spy that needs to leave an urgent top secret message for an

Jan 1, 2022
Play chess with Go, HTML5, WebSockets and random strangers!

ChessBuddy Play chess with Go, HTML5, WebSockets and random strangers! Demo: http://chess.tux21b.org:8000/ Hint: Open the page in two different tabs,

Nov 10, 2022
♛♔ Play chess against UCI engines in your terminal.
♛♔ Play chess against UCI engines in your terminal.

uchess ♛♔ Play chess in your terminal. Introduction uchess is an interactive terminal chess client designed to allow gameplay and move analysis in con

Nov 17, 2022
A chess engine written in golang
A chess engine written in golang

Weasel Art graciously provided by Alex Table of Contents: About Installing and Compiling from Source Contributing License About Weasel is an 0x88 and

Dec 30, 2022
Currently in beta testing. A chess engine written in golang
Currently in beta testing. A chess engine written in golang

Weasel Art graciously provided by Alex Table of Contents: About Installing and Compiling from Source Contributing License About Weasel is an 0x88 and

Dec 30, 2022
chess package for go
chess package for go

chess Introduction chess is a set of go packages which provide common chess utilities such as move generation, turn management, checkmate detection, P

Dec 26, 2022
Blunder is an open-source UCI compatible chess engine.

A UCI compatible chess engine written in Golang

Dec 30, 2022
Play chess in your terminal
Play chess in your terminal

Gambit Chess board in your terminal. Warning gambit does not have many features at the moment. I plan on adding a chess engine, mouse support, timers,

Dec 21, 2022
A small go program that solves the Queen's Gambit chess puzzle.

Queen's Gambit Solver This program attempts to solve the Queen's Gambit each time it is run. The Queen's Gambit is a chess-based puzzle where eight qu

Jun 27, 2022
A cli to play chess against an an UCI engine of your choice, written in go
A cli to play chess against an an UCI engine of your choice, written in go

chess-cli chess-cli is a cli for playing chess against an UCI compatible engine written in go Note: Chess pieces are in unicode, so the color may seem

Mar 1, 2022