public SearchAlgorithm(Game game) : base(game) { BasicMoveFinder = new BasicMoveFinder(game); SwapMoveFinder = new SwapMoveFinder(game); SearchMoveFinder = new SearchMoveFinder(game); ScoreCalculator = new ScoreCalculator(game); }
public StudyAlgorithm(Game game) : base(game) { BasicMoveFinder = new BasicMoveFinder(game); SwapMoveFinder = new SwapMoveFinder(game); CompositeSinglePileMoveFinder = new CompositeSinglePileMoveFinder(game); ScoreCalculator = new ScoreCalculator(game); }
public CompositeSinglePileMoveFinder(Game game) : base(game) { UncoveringMoves = new MoveList(); OneRunPiles = new PileList(); Used = new PileList(); Roots = new PileList(); WorkingTableau = new Tableau(); HoldingStack = new HoldingStack(); SupplementaryMoves = new MoveList(); MoveStack = new FastList<Move>(); }
public SearchMoveFinder(Game game) : base(game) { UseDepthFirst = false; WorkingTableau = new Tableau(); TranspositionTable = new HashSet<int>(); MoveStack = new MoveList(); Moves = new MoveList(); MaxDepth = 20; MaxNodes = 10000; MoveAllocator = new ListAllocator<Move>(false); NodeAllocator = new ListAllocator<Node>(true); }
public ScoreCalculator(Game game) : base(game) { }
public Game(Game other, AlgorithmType algorithmType) : this() { AlgorithmType = algorithmType; FromGame(other); }
public Game(Game other) : this() { FromGame(other); }
public void FromGame(Game other) { Initialize(); TableauInputOutput.FromTableau(other.Tableau); Variation = Tableau.Variation; Algorithm.PrepareToPlay(); }
public static void PrintSideBySide(Game game1, Game game2) { Utils.PrintSideBySide(game1.Tableau, game2.Tableau); }
public static void Print(Game game) { if (game == null) { return; } Utils.ColorizeToConsole(game.ToString()); }
public static void Print(Game other) { Game.Print(other); }
public SwapMoveFinder(Game game) : base(game) { CardMap = new CardMap(); Used = new FastList<int>(); }