我有这个代码:
if (ks.IsKeyDown(Keys.F11))
{
if (rndKey == 11)
{
rightButton();
}
else
{
wrongButton();
}
pressed = true;
}
现在的问题是:每个键我都需要这个。我可以用 Keys.Blabla 以某种方式循环这个吗?我是 C# 和 XNA 的新手,所以......是的。
上面的答案将遍历所有奇怪的键,如果你只想要功能键可能是这样的:
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();
}
}
}
没有编译器,所以可能需要一些调整。
我想你可以这样做:
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;
}
}
这应该足以满足您的需求。不需要循环或其他任何东西,因为无论如何你都会生成一个随机密钥:
ArrayList keys = new ArrayList(Enum.GetValues(typeof(Keys)));
Keys randomKey = (Keys)keys[new Random().Next(keys.Count)];
if (ks.IsKeyDown(randomKey))
{
rightButton();
}
else { wrongButton(); }