Exemplo n.º 1
0
        protected bool MoveDown(Figure f)
        {
            Figure lower = f.MoveDown();

            f.Type = TileType.Empty;
            SetFigure(f, true);

            if (IsEmpty(lower))
            {
                // свободно, двигаем вниз
                SetFigure(lower, false);
                return(true);
            }
            else
            {
                f.Type = lower.Type;
                SetFigure(f, false);
                return(false);
            }


            /*bool able=CanMoveDown(f);
             * if(able)
             * {
             *      MoveDown(f.YC, f.XC); MoveDown(f.Y1, f.X1);
             *      MoveDown(f.Y2, f.X2); MoveDown(f.Y3, f.X3);
             *      able=CanMoveDown(f.MoveDown());
             * }
             * return able;*/
        }
Exemplo n.º 2
0
        protected bool CanMoveDown(Figure f)
        {
            Figure lower = f.MoveDown();

            f.Type = TileType.Empty;
            SetFigure(f, true);

            bool able = IsEmpty(lower);

            f.Type = lower.Type;
            SetFigure(f, false);

            return(able);
        }
Exemplo n.º 3
0
        protected Figure RotateFigure(Figure f)
        {
            Figure rotated = f.Rotate(), rotated2;

            f.Type = TileType.Empty;
            SetFigure(f, true);
            f.Type = rotated.Type;

            if (IsEmpty(rotated))
            {
                SetFigure(rotated, false);
                return(rotated);
            }
            //неудача, фигура наткнулась на препятствие, нужно сместить её
            //вниз
            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(f, false);
            return(Figure.Zero);
        }