Пример #1
0
        public MCTSNode(MoveNode moveList, CheckerColor nextMover, MCTSNode parent = null, byte move = 255)
        {
            _nextMover = nextMover;
            _parent    = parent;

            // First move, so no prior
            if (move == 255)
            {
                return;
            }

            // Everything below is to set _result
            ConnectFour tester = MCTSAgent.ConnectFour.Clear();

            _moveList = new MoveNode(move, moveList);

            MoveNode curr = _moveList;

            byte[] moves      = MCTSAgent.Byte42;
            byte   moveLength = 0;

            for (; moveLength < 42; moveLength++)
            {
                moves[moveLength] = curr.Move;
                curr = curr.Next;
                if (curr == null)
                {
                    break;
                }
            }

            // moveLength is actually one short after the above
            for (int i = moveLength; i > 0; i--)
            {
                tester.Simulate(moves[i]);
            }
            _result = tester.Simulate(moves[0]);
        }