Пример #1
0
        /// <summary>
        /// テトリミノを回転させた時の処理
        /// </summary>
        public void CurrentTetriminoMoveRotate()
        {
            Point position = _currentTetrimino.GetCurrentPosition();

            Point[] s     = new Point[4];
            Point[] Shape = _currentTetrimino.GetCurrentShape();
            bool    move  = true;

            Shape.CopyTo(s, 0);
            CurrentTetriminoErase();
            for (int i = 0; i < s.Length; i++)
            {
                double x = s[i].X;
                s[i].X = s[i].Y;
                s[i].Y = x;
                if (((int)((s[i].Y + position.Y) + 2)) >= Rows)
                {
                    move = false;
                }
                else if (((int)((s[i].X + position.X) + (Cols / 2) - 1)) < 0)
                {
                }
                else if (((int)((s[i].X + position.X) + (Cols / 2) - 1)) >= Rows)
                {
                }
                else if (BlockControls[(int)(s[i].X + position.X) + ((Cols / 2) - 1),
                                       (int)(s[i].Y + position.Y + 2)].Background != NoBrush)
                {
                    move = false;
                }
            }
            if (move)
            {
                _currentTetrimino.MovRotate();
                CurrentTetriminoDraw();
            }
            else
            {
                CurrentTetriminoDraw();
            }
        }