Ejemplo n.º 1
0
        /// <summary>
        /// Handles user controls
        /// </summary>
        /// <param name="k">Pressed key</param>
        public void KeyPressing(Key k)
        {
            if (Running)
            {
                switch (k)
                {
                case Key.Down:
                    Step();
                    break;

                case Key.Left:
                    if (PositionX > 0 && CanPosition(CurrentBlock, PositionX - 1, PositionY))
                    {
                        PositionX--;
                    }
                    break;

                case Key.Right:
                    if (PositionX < Container.GetUpperBound(0) - CurrentBlock.GetUpperBound(0) && CanPosition(CurrentBlock, PositionX + 1, PositionY))
                    {
                        PositionX++;
                    }
                    break;

                case Key.Up:
                    var temp = Block.Rotate(CurrentBlock);
                    if (CanPosition(temp, PositionX, PositionY))
                    {
                        CurrentBlock = Block.Rotate(CurrentBlock);
                    }
                    break;

                case Key.Space:
                    while (CanPosition(CurrentBlock, PositionX, PositionY + 1))
                    {
                        Step();
                    }
                    Step();
                    break;
                }
            }
        }