예제 #1
0
        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;
            }
        }
예제 #2
0
 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);
 }
예제 #3
0
        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);
        }
예제 #4
0
파일: Program.cs 프로젝트: adh2050/Chess
        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();
        }
예제 #5
0
 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);
 }
예제 #6
0
        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));
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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);
        }
예제 #11
0
        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);
            }
        }
예제 #12
0
 private void CreateDefaultBook()
 {
     Book = new OpeningBook(Translate("trv_DefaultBook"));
     LoadBook(Book);
 }