public Game(IRules rulesProvider, IBoardBuilder boardBuilder, IGameStatistics gameStatistics) { _rulesProvider = rulesProvider; _boardBuilder = boardBuilder; _history = new LinkedList <History>(); _gameStatistics = gameStatistics; UndoMove = new UndoGameMove(this); RedoMove = new RedoGameMove(this); StopMove = new StopGameMove(this); _board = _boardBuilder.Build(); }
//================ //TODO: re-implement this using Commands or even Reactive approach //================ public MainWindow() { _rules = new EnglishDraughtsRules(); _boardBuilder = new DraughtsBoardBuilder(); //_boardBuilder = new PresetBoardBuilder(); _boardScoring = new TrivialBoardScoring(); _gameStatistics = new GameStatistics(); _game = new Game(_rules, _boardBuilder, _gameStatistics); _userPlayer = this; _waitHandler = new AutoResetEvent(false); WalkMoves = new Dictionary <Figure, WalkGameMove[]>(); AvailableMoves = new ObservableCollection <MovesModel>(); Cells = new ObservableCollection <Cell>(); InitializeComponent(); LayoutRoot.DataContext = this; ChessBoard.ItemsSource = Cells; }
private Game GetSubject(IRules rules = default, IBoardBuilder boardBuilder = default, IGameStatistics gameStatistics = default) { if (rules == default) { rules = new EnglishDraughtsRules(); } if (boardBuilder == default) { boardBuilder = new DraughtsBoardBuilder(); } if (gameStatistics == default) { gameStatistics = new GameStatistics(); } return(new Game(rules, boardBuilder, gameStatistics)); }