コード例 #1
0
        public void DynamicTreeSplittingSearchTest_7()
        {
            // ARRANGE
            var sourceBoardStr = new[]
            {
                "_b_b_b",
                "______",
                "___w_b",
                "______",
                "______",
                "______"
            };
            var sourceBoard = new BoardMock(sourceBoardStr, 6, false);

            sourceBoard.SwitchPlayers();

            var root = new GameNode();

            root.IsMaxPlayer = false;

            var practiceBoard = sourceBoard.ToMinified();

            _search.Search(root, 3, sbyte.MinValue, sbyte.MaxValue, practiceBoard, _cts.Token);
            var bestMove = root.GetBestMove();

            root.Result.Should().Be(sbyte.MinValue);
            bestMove.Should().BeEquivalentTo(new Move(1, 0, 0, 1));
        }
コード例 #2
0
        public void DynamicTreeSplittingSearchTest_1()
        {
            var sourceBoardStr = new[]
            {
                "B___",
                "____",
                "__w_",
                "____"
            };
            var sourceBoard = new BoardMock(sourceBoardStr, 4, false);

            var root = new GameNode();

            var practiceBoard = sourceBoard.ToMinified();

            _search.Search(root, 2, sbyte.MinValue, sbyte.MaxValue, practiceBoard, _cts.Token);
            var bestMove = root.GetBestMove();

            bestMove.Should().BeEquivalentTo(new Move(2, 2, 3, 1));
        }
コード例 #3
0
        public void GameTreeSequentialSearch_3()
        {
            // ARRANGE
            var sourceBoardStr = new[]
            {
                "b_b_",
                "____",
                "____",
                "_w_w"
            };
            var sourceBoard = new BoardMock(sourceBoardStr, 4, false);

            var root = new GameNode();

            var practiceBoard = sourceBoard.ToMinified();

            _search.Search(root, 12, sbyte.MinValue, sbyte.MaxValue, practiceBoard, _cts.Token);
            var bestMove = root.GetBestMove();

            bestMove.Should().BeEquivalentTo(new Move(3, 3, 2, 2));
        }
コード例 #4
0
        public void GameTreeSequentialSearch_6()
        {
            // ARRANGE
            var sourceBoardStr = new[]
            {
                "______",
                "______",
                "______",
                "w_b___",
                "______",
                "w_w_w_"
            };
            var sourceBoard = new BoardMock(sourceBoardStr, 6, false);

            var root = new GameNode();

            var practiceBoard = sourceBoard.ToMinified();

            _search.Search(root, 3, sbyte.MinValue, sbyte.MaxValue, practiceBoard, _cts.Token);
            var bestMove = root.GetBestMove();

            root.Result.Should().Be(sbyte.MaxValue);
            bestMove.Should().BeEquivalentTo(new Move(2, 5, 3, 4));
        }