public IEnumerable <GameTreeAction <AiAction> > GetNextActions(GameTreeNodeColor nodeColor) { var actions = new List <GameTreeAction <AiAction> >(); var color = nodeColor.IsRed ? PieceColor.Red : PieceColor.Black; foreach (var record in Board.GetChessRecords(color)) { if (Board.MovePieceIsOK(record, color)) { var aiAction = new AiAction(record); // TODO score 计算 var score = ValueRule.GetValueOfRecord(record); var action = new GameTreeAction <AiAction>(aiAction, score); actions.Add(action); } } actions.Sort((x, y) => { return(y.score.CompareTo(x.score)); }); return(actions); }
public GameTreeNode(GameTreeNodeData <D, A> data, GameTreeNodeColor color) { nodeData = data; nodeColor = color; }
public GameTree(GameTreeNodeData <D, A> rootData, GameTreeNodeColor rootColor) { this.rootData = rootData; this.rootColor = rootColor; }