Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        //================
        //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;
        }
Exemplo n.º 3
0
        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));
        }