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(редуцированныеРяды); }
public void Очистить() { for (int y = 0; y < яды.Length; ++y) { яды[y] = new int[Ширина]; } ПолеИзменилось?.Invoke(this, EventArgs.Empty); }
void Учесть(Фигура фигура, ТипМодификации типМодификации) { if (фигура == null) { return; } var модификатор = (int)типМодификации; foreach (var точка in фигура.ПолучитьТочки()) { if (Cодержит(точка)) { яды[точка.Y][точка.X] += модификатор; } } ПолеИзменилось?.Invoke(this, EventArgs.Empty); }