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]); }