private void LoadBook(OpeningBook book) { TrvRepertoires.Nodes.Clear(); var bookNode = new TreeNode(book.Name) { Tag = book }; TrvRepertoires.Nodes.Add(bookNode); _whiteRepertoireNode = new TreeNode(Translate("trv_WhiteRepertoire")) { Tag = book.WhiteRepertoire }; bookNode.Nodes.Add(_whiteRepertoireNode); LoadOpenings(_whiteRepertoireNode, book.WhiteRepertoire.Moves); _whiteRepertoireNode.Expand(); _blackRepertoireNode = new TreeNode(Translate("trv_BlackRepertoire")) { Tag = book.BlackRepertoire }; bookNode.Nodes.Add(_blackRepertoireNode); LoadOpenings(_blackRepertoireNode, book.BlackRepertoire.Moves); _blackRepertoireNode.Expand(); bookNode.Expand(); SaveAsToolStripMenuItem.Enabled = true; if (!string.IsNullOrWhiteSpace(this.Book.Filename)) { SaveToolStripMenuItem.Enabled = true; } }
public ArtemisEngine(GameState gameState, IEngineConfig config, OpeningBook openingBook) { this.gameState = gameState; transpositionTable = new TranspositionTable(config); evConfig = new EvaluationConfig(); evaluator = new PositionEvaluator(gameState, evConfig); Config = config; this.openingBook = openingBook; threadMaster = new ThreadMaster(this, gameState, transpositionTable, config); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { if (File.Exists(BookLocation)) { File.Move(BookLocation, BookLocation + DateTime.Now.ToString("yyyyMMddhhmmss") + ".bak."); } var bookGenerator = new OpeningBook(BookLocation); bookGenerator.OnStatusUpdate += BookGenerator_OnStatusUpdate; bookGenerator.Generate(7, (int)e.Argument); }
public static void Main(string[] args) { string input = @"C:\Users\Valdemar\Desktop\Chess\PGN\_CCRL-4040.[439277].pgn"; string output = @"c:\book.txt"; FileStream file; StreamWriter writer; try { file = File.Open(output, FileMode.CreateNew); writer = new StreamWriter(file); writer.AutoFlush = false; } catch (Exception e) { Console.WriteLine("Unable to open output file: " + e.Message); return; } int total = 0; Action <string, string> handler = (f, enc) => { total++; if (total % 100 == 0) { Console.WriteLine("Processed {0} Games", total); } }; Action <string, PGNParserError> error = (f, x) => { Console.WriteLine("Error parsing game {0} in file {1}", x.GameNumber, f); Console.WriteLine(x.ToString()); Console.WriteLine(""); }; var lines = OpeningBook.CompileBook(new List <string>() { input }, 20, 5, handler, error); lines.ForEach(x => writer.WriteLine(x)); writer.Flush(); writer.Close(); Console.WriteLine("Process Complete"); Console.ReadLine(); }
public GameManager(Canvas boardCanvas, MovesHistory movesHistory, ISettings settings) { this.boardCanvas = boardCanvas; this.movesHistory = movesHistory; this.settings = settings; engineConfig = settings; boardCanvas.Background = new ImageBrush { ImageSource = GetImage("board.png") }; lastMoveHighlight = new LastMoveHighlight(this, boardCanvas); gameState = new GameState(pregeneratedAttacks, zobristHashUtils); openingBook = new OpeningBook(pregeneratedAttacks, zobristHashUtils); engine = new ArtemisEngine(gameState, engineConfig, openingBook); }
public void TestGenerate() { var files = new List <string>() { "..\\..\\..\\TestData\\annotatedsetone.pgn", "..\\..\\..\\TestData\\BobbyFischer.pgn", "..\\..\\..\\TestData\\HumansVsComputers.pgn", "..\\..\\..\\TestData\\perle.pgn" }; // just a smoke test var lines = OpeningBook.CompileBook(files, 30); Book = lines; Assert.IsTrue(lines.Count > 10); Assert.IsTrue(lines.All(x => x.Length >= 50 && x.Length <= 70)); }
public void TestReadBigBook() { var data = File.ReadAllLines("..\\..\\..\\TestData\\book.txt").Where(x => !String.IsNullOrWhiteSpace(x)).ToList(); var book = new OpeningBook(data); var moves = book.GetAvailableMoves("Lb+t"); var move = book.SelectMove(moves, Color.White, new OpeningBookFilter() { ImportanceOfGameCount = 1, ImportantOfWinPercentage = 3, MaxBlackWinPercent = 60, MaxWhiteWinPercent = 60, MinBlackWinPercent = 30, MinNumberOfGames = 20, MinWhiteWinPercent = 37 }); Assert.IsNotNull(move); }
public void TestReadBook() { TestGenerate(); var book = new OpeningBook(Book); var moves = book.GetAvailableMoves("Lb"); var move = book.SelectMove(moves, Color.Black, new OpeningBookFilter() { ImportanceOfGameCount = 10, ImportantOfWinPercentage = 0, MaxBlackWinPercent = 100, MaxWhiteWinPercent = 100, MinBlackWinPercent = 0, MinNumberOfGames = 1, MinWhiteWinPercent = 0 }); Assert.IsNotNull(move); }
private void LoadBook() { try { var loadFile = new OpenFileDialog(); loadFile.Filter = "Opening Books|*.coc|All Files|*.*"; if (!string.IsNullOrWhiteSpace(this.Book.Filename)) { loadFile.FileName = this.Book.Filename; } if (loadFile.ShowDialog() == DialogResult.OK) { this.Book = OpeningBook.LoadFromFile(loadFile.FileName); LoadBook(this.Book); SaveToolStripMenuItem.Enabled = true; QuitToolStripMenuItem.Enabled = true; } } catch (Exception ex) { ShowError(ex); } }
private void CreateDefaultBook() { Book = new OpeningBook(Translate("trv_DefaultBook")); LoadBook(Book); }