0

我有这个代码:

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

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

4

3 回答 3

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

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

于 2012-07-02T21:41:06.700 回答
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;
    }
}
于 2012-07-02T21:44:05.663 回答
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(); }
于 2012-07-02T22:06:30.013 回答