首页 > 解决方案 > 箭头键输入与专注于对象

问题描述

我目前正在用 C# 编写我自己的俄罗斯方块,并且使用 W、A、S、D 进行输入。我的问题是我不能使用箭头键,因为重点放在对象上(我的意思是当前对象上的蓝色突出显示)。我有一个可以随时结束游戏的按钮,因此,它不会将我的输入注册为当前俄罗斯方块块的控件,而是像这个按钮一样在启用的对象中导航。

以防万一我在阅读输入时做错了什么:

            bool bl = checkCollision();
            if (!bl && !blocked)
            {
                if (e.KeyCode == Keys.W || e.KeyCode == Keys.Up)
                {
                       //turning the block
                }
                if (e.KeyCode == Keys.S || e.KeyCode == Keys.Down)
                {
                         //speeding up the falling
                }
                if (e.KeyCode == Keys.A || e.KeyCode == Keys.Left)
                {                    
                        direction = 'l';
                        if (currentY > 0)
                        {
                            if (!blocked)
                            {
                                inpt = true;
                                currentY -= 1;
                                falling();
                            }      
                        }
                }
                if (e.KeyCode == Keys.D || e.KeyCode == Keys.Right)
                {     
                        direction = 'r';
                            if ((currentY + currentBlock.getSize()) < 10)
                            {
                               if (!blocked)
                               {
                                   inpt = true;
                                   currentY += 1;
                                   falling();
                               }                        
                            }
                }         
            } 

如果你想知道为什么我会检查 2 次如果阻塞是假的(如果下降方法当前处于活动状态,那么阻塞是真的,所以它不会例如同时向下和向左移动)。

有什么办法可以让我在有人玩游戏时关闭焦点?(因此,当有人按下“播放”时,我会简单地停用焦点,如果有人按下“停止”或输掉游戏,我会重新激活它。

在此先感谢您的帮助!

编辑:我的程序是 Windows Forms-App (.Net Framework)

标签: c#.netfocusarrow-keystetris

解决方案


推荐阅读