Beispiel #1
0
 /// <summary>Смещает фигуру влево.</summary>
 /// <returns>true в случае успеха и false - в случае неудачи.</returns>
 public bool MoveLeft()
 {
     if (Current == GameShape.Zero)
     {
         return(false);
     }
     if (!MoveLeft(Current))
     {
         return(false);
     }
     Current = Current.MoveLeft();
     return(true);
 }
Beispiel #2
0
        /// <summary>Передвигает совокупность клеток вправо.</summary>
        /// <param name="shape">Фигура - совокупность клеток</param>
        /// <returns>Возвращается истина - если возможен дальнейший сдвиг вправо, ложь - если сдвиг не возможен</returns>
        protected bool MoveLeft(GameShape shape)
        {
            GameShape moved = shape.MoveLeft();

            shape.Type = CellType.Empty;
            SetFigure(shape, true);
            if (IsEmpty(moved))
            {
                SetFigure(moved, false);
                return(true);
            }
            shape.Type = moved.Type;
            SetFigure(shape, false);
            return(false);
        }
Beispiel #3
0
        /// <summary>Поворот фигуры на 90 градусов по часовой стрелке.</summary>
        /// <param name="shape">Фигура, которую нужно повернуть.</param>
        /// <returns>Возвращается повернутая фигура.</returns>
        protected GameShape RotateFigure(GameShape shape)
        {
            GameShape rotated = shape.Rotate();

            shape.Type = CellType.Empty;
            SetFigure(shape, true);
            shape.Type = rotated.Type;

            if (IsEmpty(rotated))
            {
                SetFigure(rotated, false);
                return(rotated);
            }
            // Если неудача, фигура наткнулась на препятствие,то нужно сместить её вниз
            GameShape rotated2 = rotated.MoveDown();

            if (IsEmpty(rotated2))
            {
                SetFigure(rotated2, false);
                return(rotated2);
            }
            // Вправо
            rotated2 = rotated.MoveRight();
            if (IsEmpty(rotated2))
            {
                SetFigure(rotated2, false);
                return(rotated2);
            }
            // Влево
            rotated2 = rotated.MoveLeft();
            if (IsEmpty(rotated2))
            {
                SetFigure(rotated2, false);
                return(rotated2);
            }
            // Ничего не удалось сделать
            SetFigure(shape, false);
            return(GameShape.Zero);
        }