gpt4 book ai didi

c# - 响应多个 KeyDown 事件

转载 作者:行者123 更新时间:2023-11-30 16:17:48 25 4
gpt4 key购买 nike

我正在制作一个简单的 WinForm 赛车游戏。我有两个对象——汽车,它们在按下键时在窗体上移动 (Form1KeyDown_Event)。

唯一的问题是,当一个玩家按下一个键时,另一个玩家无法按下他的键(没有任何反应)。但是当第一个玩家释放 key 时,第二个玩家可以按下他的 key 并正常控制他的车。

如何同时监听两个播放器键?我应该使用线程并让每辆车都在自己的线程上吗?

最佳答案

这是一个简单的示例,说明您可以使用 keyup 和 keydown 事件同时收听多个按键。

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WinFormTest {
public partial class Form1 : Form {
private readonly IDictionary<Keys, bool> downState;

public Form1() {
InitializeComponent();
downState = new Dictionary<Keys, bool>();
downState.Add(Keys.W, false);
downState.Add(Keys.D, false);

KeyDown += remember;
KeyUp += forget;
}

protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
Timer timer = new Timer() { Interval = 100 };
timer.Tick += updateGUI;
timer.Start();
}

private void remember(object sender, KeyEventArgs e) {
downState[e.KeyCode] = true;
}

private void forget(object sender, KeyEventArgs e) {
downState[e.KeyCode] = false;
}

private void updateGUI(object sender, EventArgs e) {
label1.Text = downState[Keys.W] ? "Forward" : "-";
label2.Text = downState[Keys.D] ? "Right" : "-";
}
}
}

关于c# - 响应多个 KeyDown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16745313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com