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(); } }