我有这段代码:
if (ks.IsKeyDown(Keys.F11))
{
if (rndKey == 11)
{
rightButton();
}
else
{
wrongButton();
}
pressed = true;
}
现在的问题是:我需要为每个键都需要这个。我可以用Keys.Blabla以某种方式为所有东西循环吗?我是C#和XNA的新手所以...是的。
答案 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(); }