コード例 #1
0
        public void PerformBeatingCheckTest()
        {
            var controller = GameFactory.CreateGameController();
            var context = controller.GameContext;

            Assert.AreEqual(false, PositionController.MakeMove(context, 0));
        }
コード例 #2
0
        public void PerformBeatingCheckTest2()
        {
            var controller = GameFactory.CreateGameController();
            var context = controller.GameContext;

            PositionController.MakeMove(context, 0);
            PositionController.MakeMove(context, 1);
            PositionController.MakeMove(context, 100);

            Assert.AreEqual(true, PositionController.MakeMove(context, 19));
        }
コード例 #3
0
        public void PerformBeatingCheckTest6()
        {
            var controller = GameFactory.CreateGameController();
            var context = controller.GameContext;

            PositionController.MakeMove(context, 1);
            PositionController.MakeMove(context, 2);
            PositionController.MakeMove(context, 21);
            PositionController.MakeMove(context, 19);
            PositionController.MakeMove(context, 101);
            PositionController.MakeMove(context, 20);
            PositionController.MakeMove(context, 105);

            Assert.AreEqual(false, PositionController.MakeMove(context, 40));
        }
コード例 #4
0
        private MoveCandidate analyze(int depth, int field, PositionContext position)
        {
            ConsoleLogger.LogDepth(depth);
            ConsoleLogger.LogMove(position);
            if (depth == Settings.MaxDepth)
            {
                MoveCandidate candidate = new MoveCandidate(field, position);
                PositionController.MakeMove(position, field);
                candidate.Evaluation = evaluate(position);
                ConsoleLogger.Log(candidate.Evaluation.ToString());
                computedVariation++;
                return(candidate);
            }

            States move = position.Move;

            List <int> candidates = FindCandidates(position);

            if (candidates.Count == 0)
            {
                ConsoleLogger.Log("! nie znaleziono ruchow kandydatow!");
            }

            ConsoleLogger.Log("Ilość kandydatów: " + candidates.Count);

            List <MoveCandidate> moveCandidates = new List <MoveCandidate>();

            foreach (var i in candidates)
            {
                PositionContext newPosition = PositionContextFactory.CreatePositionContext(position);
                PositionController.MakeMove(newPosition, i);
                MoveCandidate candidate = analyze(depth + 1, i, newPosition);
                moveCandidates.Add(candidate);
            }

            var bestCandidate = getBest(moveCandidates, move);

            ConsoleLogger.Log("Z " + candidates.Count + " wariantow wybrano: " + bestCandidate.Evaluation.ToString());
            return(bestCandidate);
        }