notnil / chess

chess package for go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Chess960 support?

jusahah opened this issue · comments

First of all, great work with the library!

One issue (or a missing feature) I encountered: it does not handle Chess960 castling correctly.

E.g.

package main

import (
	"fmt"

	"github.com/notnil/chess"
)

func main() {
	fen, _ := chess.FEN("bnqbnrkr/pppppppp/8/8/8/8/PPPPPPPP/BNQBNRKR w KQkq - 0 1")
	game := chess.NewGame(chess.UseNotation(chess.UCINotation{}), fen)

	game.MoveStr("b1a3")
	game.MoveStr("f7f6")
	game.MoveStr("f2f4")
	game.MoveStr("f6f5")
	game.MoveStr("f1f3")
	game.MoveStr("g7g6")
	game.MoveStr("g1g1") // King-side castling

	// print outcome and game PGN
	fmt.Println(game.Position().Board().Draw())
	fmt.Printf("Game completed. %s by %s.\n", game.Outcome(), game.Method())
	fmt.Println(game.String())
}

The PGN does not have the castling move present: 1. b1a3 f7f6 2. f2f4 f6f5 3. f1f3 g7g6 *

Same with the printed board.

Using X-FEN (here bnqbnrkr/pppppppp/8/8/8/8/PPPPPPPP/BNQBNRKR w HFhf - 0 1) to encode the starting position does not help.

Are there any plans to support Chess960?

This framework does not recognize the characters here, which is a bug
Just change
bnqbnrkr/pppppppp/8/8/8/8/PPPPPPPP/BNQBNRKR w KQkq - 0 1
to
bnqbnrkr/pppppppp/8/8/8/8/PPPPPPPP/BNQBNRKR w - 0 1
Hey, man, you have a bad habit. The err here should not be hidden