// перемещение влево private bool MoveLeft() { lock (Tank) { // проверка TetrisFigure Figure = (TetrisFigure)CurrentFigure.Clone(); Figure.MoveLeft(); if (!TryCurrentFigure(Figure)) { return(false); } // перемещение HideCurrentFigure(); CurrentFigure.MoveLeft(); ShowCurrentFigure(); return(true); } }
// проверка подобия фигур public bool IsSimilar(TetrisFigure other) { if (Blocks.Count() != other.Blocks.Count()) { return(false); } TetrisFigure Figure = (TetrisFigure)other.Clone(); bool CompareBlocks() { return(Blocks.Count() == Figure.Blocks.Count() && Blocks.All(p1 => Figure.Blocks.Any(p2 => p1.X == p2.X && p1.Y == p2.Y))); } // совпадение if (CompareBlocks()) { return(true); } // совпадение после поворота на 90 Figure.MoveRotate(); if (CompareBlocks()) { return(true); } // совпадение после поворота на 180 Figure.MoveRotate(); if (CompareBlocks()) { return(true); } // совпадение после поворота на 270 Figure.MoveRotate(); if (CompareBlocks()) { return(true); } // не совпало return(false); }