0

私はこのコードを持っています:

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

ここで問題は次のとおりです。すべてのキーにこれが必要です。Keys.Blablaを使用して、これをすべてループすることはできますか?私はC#とXNAの初心者なので...ええ。

4

3 に答える 3

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 に答える
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 に答える
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 に答える