Exemplo n.º 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;
            }
            }
        }
Exemplo n.º 2
0
        public async Task DistributeEnergy(EnergySpreadType energyDistributionType)
        {
            await Task.Run(() => this.grid1.DistributeEnergy(energyDistributionType));

            EnergySpread = true;
            OverwriteGrid(grid1, grid2);
        }