做一个贪吃蛇小游戏,可双人,
长按方向键则加速,
但是在双人的时候不能获取两个同时长按的键,
例如:
玩家1长按了W,玩家2在玩家1放起W前按一下其他键玩家1则不加速了,
玩家2如果是长按的话玩家2能加速总之就是不能获取两个同时长按的键,有什么办法可以解决?
长按方向键则加速,
但是在双人的时候不能获取两个同时长按的键,
例如:
玩家1长按了W,玩家2在玩家1放起W前按一下其他键玩家1则不加速了,
玩家2如果是长按的话玩家2能加速总之就是不能获取两个同时长按的键,有什么办法可以解决?
KeyDown
KeyUp
KeyPress
PreviewKeyDown
这些事件再加上一些状态变量,足够判断两个人的按键操作,但要注意,最好是一个人用ASCII码键,一个人用扩展功能键,我试了下没问题,只是逻辑关系比较复杂,没写出完整的代码
private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyValue)
{
case 'A':
if (key1down == false)
MessageBox.Show("A down");
key1down = true; // 键"A"按下未放开此标志一直为true
break;
case 'B':
if (key2down == false)
MessageBox.Show("B down");
key2down = true; // 键"B"按下未放开此标志一直为true
break;
case 'C':
if (key3down == false)
MessageBox.Show("C down");
key3down = true; // 键"C"按下未放开此标志一直为true
break;
}
}按键放开检测: private void Form1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyValue)
{
case 'A':
MessageBox.Show("A up");
key1down = false; // 键"A"放开,此标志为false
break;
case 'B':
MessageBox.Show("B up");
key2down = false; // 键"B"放开,此标志为false
break;
case 'C':
MessageBox.Show("C up");
key3down = false; // 键"C"放开,此标志为false
break;
}
}