コード例 #1
0
        public int  едуцироватьФундамент()
        {
            var редуцированныеРяды = 0;

            var связанныйСписокРядов = КешированныйСписокДляРедукции;

            связанныйСписокРядов.Clear();
            foreach (var ряд in  яды)
            {
                if (ряд.All(x => x == 1))
                {
                    ++редуцированныеРяды;
                    for (int x = 0; x < Ширина; ++x)
                    {
                        ряд[x] = 0;
                    }
                    связанныйСписокРядов.AddFirst(ряд);
                }
                else
                {
                    связанныйСписокРядов.AddLast(ряд);
                }
            }

            var индекс = 0;

            foreach (var ряд in связанныйСписокРядов)
            {
                яды[индекс++] = ряд;
            }

            ПолеИзменилось?.Invoke(this, EventArgs.Empty);
            return(редуцированныеРяды);
        }
コード例 #2
0
 public void Очистить()
 {
     for (int y = 0; y < яды.Length; ++y)
     {
         яды[y] = new int[Ширина];
     }
     ПолеИзменилось?.Invoke(this, EventArgs.Empty);
 }
コード例 #3
0
        void Учесть(Фигура фигура, ТипМодификации типМодификации)
        {
            if (фигура == null)
            {
                return;
            }
            var модификатор = (int)типМодификации;

            foreach (var точка in фигура.ПолучитьТочки())
            {
                if (Cодержит(точка))
                {
                    яды[точка.Y][точка.X] += модификатор;
                }
            }

            ПолеИзменилось?.Invoke(this, EventArgs.Empty);
        }