Пример #1
0
        /// <summary>
        ///     The Engine of the Game.
        /// </summary>
        internal void Engine()
        {
            this.board        = new Board(MAX_ROWS, MAX_COLUMNS, MAX_MINES);
            this.boardScanner = new BoardScanner(this.board);
            this.boardManager = new BoardManager(this.board, this.boardScanner);
            this.board.Accept(new MineSetter(new RandomGenerator()));
            this.GameData.Renderer.PrintGameBoard(this.board);

            while (true)
            {
                this.GameData.Renderer.Write(
                    "\nChoose and press Enter:\n" + "'" + PlayerCommand.ReturnKey + "'"
                    + " to return to the menu or\nEnter row and column separated by a space: \n");

                // getting player input as object
                var command = new PlayerCommand(Console.ReadLine());

                if (command.IsBadInput)
                {
                    this.GameData.Renderer.Write(command.Message);
                }
                else
                {
                    if (command.IsReturnKey || this.IsGameOver(command.Row, command.Col))
                    {
                        this.Run();
                    }
                }
            }
        }
Пример #2
0
 public GameViewModel(IEventAggregator events, IGameBoard gameBoard, IBoardScanner scanner)
 {
     _events    = events;
     _gameBoard = gameBoard;
     _scanner   = scanner;
     events.SubscribeOnPublishedThread(this);
     Fields     = new BindableCollection <FieldModel>();
     _stopwatch = new Stopwatch();
 }
Пример #3
0
 public BoardManager(IBoard board, IBoardScanner scanner)
 {
     this.board        = board;
     this.boardScanner = scanner;
 }
Пример #4
0
        public void PrintAllFields(IBoard board, IBoardScanner boardScanner)
        {
            var areAllFieldsOpened = true;

            this.PrintGameMatrix(board, areAllFieldsOpened);
        }