public AllAlternatigJumpsTreeCollection(IJumpNodeTreeWithFactory parent, IAlphaBetaOptions alphaBetaOptions, ISearchNodeVisitor <JumpNode> afterMoveVisitor) { _alphaBetaOptions = alphaBetaOptions; _afterMoveVisitor = afterMoveVisitor; Parent = parent; _parentJumpNode = Parent.Node; }
public AlternatingJumpsMovesTree( JumpNode jumpNode, Func <IJumpNodeTreeWithFactory, IEnumerable <IJumpNodeTreeWithFactory> > childFactory) { Node = jumpNode; ChildFactory = childFactory; _children = childFactory(this); }
public AlternatingJumpsMovesTree( JumpNode jumpNode, Func<IJumpNodeTreeWithFactory, IEnumerable<IJumpNodeTreeWithFactory>> childFactory) { Node = jumpNode; ChildFactory = childFactory; _children = childFactory(this); }
public PlaceBlackStonesForPlayer( IJumpNodeTreeWithFactory parent, IPlayersState playersState, Func <IPlaceBlackStone> blackStonePlacer) { _parent = parent; _playersState = playersState; _blackStonePlacer = blackStonePlacer; _parentJumpNode = _parent.Node; _placersFactory = new PlayerBlackStonePlacer(_parentJumpNode.ActualGraph, _playersState); }
public IMoveFindingStartegy SmartAlphaBetaJumpOrStay() { var playersStateCopy = _playersStateCopy(); var alphaBetaOptions = _phutballOptions.AlphaBeta.AllowNoMoveToBeTaken().HalfDepth(); return(new AlphaBetaMoveFindingStrategy( playersStateCopy, alphaBetaOptions, (graph) => new AlternatingJumpsMovesTree(JumpNode.Empty(graph), (parent) => new JumpCollectWhiteStonePlacesThenPutBlack(parent, alphaBetaOptions, playersStateCopy)) )); }
public IMoveFindingStartegy AlphaBeta() { var playersStateCopy = _playersStateCopy(); var alphaBetaOptions = _phutballOptions.AlphaBeta; return(new AlphaBetaMoveFindingStrategy( playersStateCopy, alphaBetaOptions, (graph) => new AlternatingJumpsMovesTree(JumpNode.Empty(graph), (parent) => new FirstJumpThenPlaceStones(parent, alphaBetaOptions, playersStateCopy)) )); }
public IMoveFindingStartegy AlphaBetaJumpsOrStay() { var playersStateCopy = _playersStateCopy(); var options = _phutballOptions.AlphaBeta.AllowNoMoveToBeTaken(); return(new AlphaBetaMoveFindingStrategy(playersStateCopy, options, (graph) => new AlternatingJumpsMovesTree(JumpNode.Empty(graph), (parent) => new AllAlternatigJumpsTreeCollection(parent, options)) )); }