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;*/ }
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); }
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); }