Пример #1
0
        // Метод, отвечающий за поворот фигуры по часовой стрелке.
        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;
            }
        }
Пример #2
0
        // Метод, отвечающий за поворот фигуры против часовой стрелке.
        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;                         //(записываем номер положения временной фигуры и приводим саму фигуру в соответствии с номером).
            }
        }