private MinefieldCellCollection CreateMinefieldCellCollection()
        {
            var minefieldCells   = _fieldFactory.CreateNewMinefield(MinefieldSize, MinefieldSize);
            var minefieldCellVms = ToViewModels(minefieldCells, MinefieldSize);
            var cellCollection   = new MinefieldCellCollection(minefieldCellVms, MinefieldSize);

            return(cellCollection);
        }
        private void UpdateMinefield(MinefieldCellCollection newMinefield)
        {
            for (var row = 0; row < MinefieldSize; row++)
            {
                for (var col = 0; col < MinefieldSize; col++)
                {
                    Minefields[row, col].Row               = newMinefield[row, col].Row;
                    Minefields[row, col].Column            = newMinefield[row, col].Column;
                    Minefields[row, col].HasMine           = newMinefield[row, col].HasMine;
                    Minefields[row, col].State             = newMinefield[row, col].State;
                    Minefields[row, col].NeibourMinesCount = newMinefield[row, col].NeibourMinesCount;
                }
            }

            Status = GameStatus.Begin;
        }
Example #3
0
 private static bool IsVictoryReached(MinefieldCellCollection @this) =>
 @this
 .All(cell => cell.State != MinefieldCellState.Closed) && @this.Where(cell => cell.HasMine)
 .All(cell => cell.State == MinefieldCellState.Marked);
Example #4
0
 private void OnMinefieldCellsChanged(MinefieldCellCollection oldCells, MinefieldCellCollection newCells)
 => RaiseEvent(
     new RoutedPropertyChangedEventArgs <MinefieldCellCollection>(oldCells, newCells)
 {
     RoutedEvent = NewGameEvent
 });