Exemple #1
0
        public void CurrentTetraminoRotate()
        {
            var position = _currentTetramino.GetCurrentPosition();
            var s        = new Point[4];
            var shape    = _currentTetramino.GetCurrentShape();
            var move     = true;

            shape.CopyTo(s, 0);
            CurrentTetraminoErase();
            for (var i = 0; i < s.Length; i++)
            {
                var x = s[i].X;
                s[i].X = s[i].Y * -1;
                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)
                {
                    move = false;
                }
                else if (((int)(s[i].X + position.X) + ((_cols / 2) - 1)) >= _rows)
                {
                    move = false;
                }
                else if (
                    !Equals(
                        _blockControls[((int)(s[i].X + position.X) + ((_cols / 2) - 1)), (int)(s[i].Y + position.Y) + 2]
                        .Background, NoBrush))
                {
                    move = false;
                }
            }

            if (move)
            {
                _currentTetramino.Rotate();
                CurrentTetraminoDraw();
            }
            else
            {
                CurrentTetraminoDraw();
            }
        }