如果语句为for循环,我将如何压缩键盘输入?(射击子弹)



因此,我正在创建一个XNA游戏,该游戏由宇宙飞船组成,在附带"弦乐"的不同敌人飞船上射击子弹。本质上是一个拼写游戏,我必须通过正确的字母击中太空飞船来拼写这个词。

无论如何,我的问题是,我目前有两个" if"陈述,按照射击子弹,如果我为键盘上的25个字母键中的其余部分进行了一些可怕的编程。是的,我确实需要键盘上的每个"字母"键,因为这将是一个拼写游戏。这是我为子弹之一提供的代码的示例。

我本质上在这里要做的是"射击"布尔值是错误的,并且按下了适当的钥匙,我将矩形定位在枪支的位置,并将"射击"设置为真实,以使子弹松开。当时显然,每当它撞到屏幕顶部时,我都会按照重新加载概念将射击回到false。

 if (MyKeys.IsKeyDown(Keys.Q) && OldKeys.IsKeyUp(Keys.Q) && Fired[0] == false)
        {
            CurrentChar = "Q";
            Shot[0].X = SpaceStationGun.X;
            Shot[0].Y = SpaceStationGun.Y;
            Fired[0] = true;
        }
        if (Fired[0] == true)
        {
            Shot[0].Y -= SHOT_SPEED;
            if (Shot[0].Y < 0 - SHOT_HEIGHT)
            {
                Fired[0] = false;
            }
        }

现在的问题是,我该如何为键盘上的25个字母键的其余部分循环,并且仍然保持功能?

Keyboard.GetState().GetPressedKeys()为您提供了在其状态期间按下的Keys的集合。

我看不到您的MyKeysOldKeys如何更新,但我假设您可以使用以下

var keysPressed = MyKeys.GetPressedKeys()
    .Where(k => !OldKeys.GetPressedKeys().Contains(k));
foreach(var key in keysPressed)
{
    // Do your logic
}
OldKeys = MyKeys;
MyKeys = Keyboard.GetState();

最新更新