每个键循环?

时间:2012-07-02 21:32:16

标签: c# xna

我有这段代码:

if (ks.IsKeyDown(Keys.F11))
{
    if (rndKey == 11)
    {
        rightButton();
    }
    else
    {
    wrongButton();
    }
pressed = true;
}

现在的问题是:我需要为每个键都需要这个。我可以用Keys.Blabla以某种方式为所有东西循环吗?我是C#和XNA的新手所以...是的。

3 个答案:

答案 0 :(得分:1)

如果您只想要功能键,上面的答案将遍历所有奇怪的键:

for(int i = 1; i <= 12; ++i)
{
     string key = "F" + i.toString();
     Key k = Enum.Parse(typeof(Key), key);

     if(ks.isKeyDown(k))
     {
         if (rndKey == i)
         {
               rightButton();
         }
         else
         {
               wrongButton();
         }
     }
}

没有编译器,所以可能需要一些调整。

答案 1 :(得分:1)

我猜你可以这样做:

foreach (Keys k in Keyboard.GetState(PlayerIndex.One).GetPressedKeys()) {   
    switch (k) {
        case Keys.F11:
            if (rndKey == 11) { rightbutton(); } else { wrongbutton(); }
            break;
        case Keys.F12:
            if (rndKey == 12) { rightbutton(); } else { wrongbutton(); }
            break;
        default:
            wrongbutton();
            break;
    }
}

答案 2 :(得分:0)

这应该足以满足您的需求。 没有循环或任何其他需要,因为你无论如何都会生成一个随机密钥:

ArrayList keys  = new ArrayList(Enum.GetValues(typeof(Keys)));
Keys randomKey = (Keys)keys[new Random().Next(keys.Count)];

if (ks.IsKeyDown(randomKey))
{
    rightButton();
}
else { wrongButton(); }