From bf8c1f372882abdd4fe588ba6a3b556646aeb2b1 Mon Sep 17 00:00:00 2001 From: "0x90.space" Date: Sat, 28 Aug 2021 20:25:10 +0100 Subject: [PATCH] comment game with lichess method --- .gitignore | 2 ++ blunderboard.go | 45 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 76482f2..d3f3408 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.*.swp + # Binaries for programs and plugins *.exe *.exe~ diff --git a/blunderboard.go b/blunderboard.go index 60eee17..d637844 100644 --- a/blunderboard.go +++ b/blunderboard.go @@ -25,26 +25,49 @@ func main() { } game := chess.NewGame() + prevprev_winning_chance := 0.0 + prev_winning_chance := 0.0 for game.Outcome() == chess.NoOutcome { if err := engine.Run(uci.CmdPosition{Position: game.Position()}, uci.CmdGo{Depth: 12}); err != nil { panic(err) } search_results := engine.SearchResults() - fmt.Println("Best Move: ", search_results.BestMove) cp := search_results.Info.Score.CP - fmt.Println("Score (centipawns): ", cp) winning_chance := WinningChance(cp) - fmt.Println("Winning chance: ", winning_chance) - fmt.Println(game.Position().Board().Draw()) - for { - var move string - fmt.Print("Move: ") - fmt.Scanln(&move) - if err := game.MoveStr(move); err == nil { - break + num_of_moves := len(game.Moves()) + if (num_of_moves > 0) { + delta := prevprev_winning_chance - winning_chance + if (num_of_moves % 2 == 0) { + delta *= -1; } - fmt.Println("Illegal move!") + if delta > 0.3 { + fmt.Print("B-b-b-blunder!!") + } else if delta > 0.2 { + fmt.Print("That was a mistake.") + } else if delta > 0.1 { + fmt.Print("Meh...") + } else { + fmt.Print("Ok") + } + fmt.Printf(" (%0.2f)\n", -delta) } + prevprev_winning_chance = prev_winning_chance + prev_winning_chance = winning_chance + fmt.Println(game.Position().Board().Draw()) + fmt.Println("Score (centipawns):", cp, "Winning chance:", winning_chance, "Best Move: ", search_results.BestMove) + fmt.Println("Move: ", search_results.BestMove) + if err := game.Move(search_results.BestMove); err != nil { + panic(err) + } +// for { +// var move string +// fmt.Print("Move: ") +// fmt.Scanln(&move) +// if err := game.MoveStr(move); err == nil { +// break +// } +// fmt.Println("Illegal move!") +// } } fmt.Println(game.Outcome()) fmt.Println(game.Position().Board().Draw())