// Метод, отвечающий за поворот фигуры по часовой стрелке. public static void RotateRight(ITetramino currentFigure, bool[,] buildingArea) { int nextState = currentFigure.State; if (currentFigure.State + 1 > currentFigure.CountState) { nextState = 1; } else { nextState++; } ITetramino nextStateCurFig = (ITetramino)currentFigure.Clone(); nextStateCurFig.Body = currentFigure.FigureState[nextState]; if (RotateCheck(nextStateCurFig, buildingArea)) { currentFigure.State = nextState; currentFigure.Body = nextStateCurFig.Body; } }
// Метод, отвечающий за поворот фигуры против часовой стрелке. public static void RotateLeft(ITetramino currentFigure, bool[,] buildingArea) { int nextState = currentFigure.State; //Запоминаем номер текущего положения фигуры во временную переменную. if (currentFigure.State - 1 < 1) //Делаем проверку на выход из массива положений фигуры. { nextState = currentFigure.CountState; //Изменяем номер текущего положения на -1 (выполняем поворот против часовой стрелки). } else { nextState--; //Изменяем номер текущего положения на -1 (выполняем поворот против часовой стрелки). } ITetramino nextStateCurFig = (ITetramino)currentFigure.Clone(); //Создаем копию текущей фигуры. nextStateCurFig.Body = currentFigure.FigureState[nextState]; //Приводим новую фигуру в соответствии с измененным номером положения (уже повернутая). if (RotateCheck(nextStateCurFig, buildingArea)) //Проверяем не будет ли ошибок, если фигуру повернуть. { currentFigure.State = nextState; //Если ошибок нет, то выполняем поворот для изначальной фигуры. currentFigure.Body = nextStateCurFig.Body; //(записываем номер положения временной фигуры и приводим саму фигуру в соответствии с номером). } }