Пример #1
0
        public static void DistributeEnergy(this Grid grid, EnergySpreadType energySpreadType)
        {
            switch (energySpreadType)
            {
            case EnergySpreadType.Homogeniczna:
            {
                for (int i = 0; i < grid.Width; i++)
                {
                    for (int j = 0; j < grid.Height; j++)
                    {
                        grid.Energy[i, j] = 5;
                    }
                }

                break;
            }

            case EnergySpreadType.Heterogoniczna:
            {
                var borderCellsHelper = new BorderCellsHelpers();
                var borderCells       = borderCellsHelper.GetBorderCells(grid);

                Parallel.ForEach(borderCells, (cell) => { grid.Energy[cell.X, cell.Y] = 7; });
                Parallel.ForEach(grid.CellsWhereBorderId, (cell) => {
                        if (grid.Energy[cell.X, cell.Y] != 7)
                        {
                            grid.Energy[cell.X, cell.Y] = 2;
                        }
                    });

                break;
            }
            }
        }
Пример #2
0
        public static void DistributeEnergy(this Matrix matrix, EnergyDistributionType energyDistributionType)
        {
            switch (energyDistributionType)
            {
            case EnergyDistributionType.Homogenous:
            {
                for (int i = 0; i < matrix.Width; i++)
                {
                    for (int j = 0; j < matrix.Height; j++)
                    {
                        matrix.Energy[i, j] = 5;
                    }
                }

                break;
            }

            case EnergyDistributionType.Heterogenous:
            {
                var borderCellsHelper = new BorderCellsHelpers();
                var borderCells       = borderCellsHelper.GetBorderCells(matrix);

                Parallel.ForEach(borderCells, (cell) => { matrix.Energy[cell.X, cell.Y] = 7; });
                Parallel.ForEach(matrix.CellsWOId, (cell) => {
                        if (matrix.Energy[cell.X, cell.Y] != 7)
                        {
                            matrix.Energy[cell.X, cell.Y] = 2;
                        }
                    });

                break;
            }
            }
        }
Пример #3
0
        public static void AddInclusions(this Grid grid, int amount, int size, Inclusions type)
        {
            var borderCellsHelper = new BorderCellsHelpers();
            var inclusionsHelper  = new InclusionsHelper();
            var borderCells       = borderCellsHelper.GetBorderCells(grid);

            inclusionsHelper.AddInclusions(grid, amount, size, type, borderCells);
        }