2012-03-30 65 views
0

我在C#中制作游戏(这是一款pong游戏),我已经完成了一个“AI”,因此您可以玩一个玩家,而且我也已经完成了多人游戏版本,但,每当有人击中某个键(向上或向下),其他玩家的动作停止,等等。C#多重按键输入不重叠

所以基本上你不能打2个球员,因为它会打断其他球员的移动。我不确定我需要做什么(多线程?)或其他类型的东西,以便您可以有流畅的播放而不会与其他播放器按键重叠。

我真的不能搜索(尽管我有),因为我不知道要搜索什么。 :)

反正,希望有办法嘿嘿。

C#表单应用程序(与tutorila游戏引擎/库)。

+0

您需要张贴一些代码。你知道什么阻止了其他玩家? – Msonic 2012-03-30 19:24:59

+0

很抱歉,如果不够清楚,当发生新的击键时会发生阻塞。我会发布我的方法和一些代码。 – Nicholas 2012-03-30 19:26:36

回答

5

当您按住键盘控制器时,您正在重复按键。是的,当你按另一个键时,它停止工作。

标准的游戏循环的方法是使用KeyDown事件来设置一个键是向下的标志和使用KeyUp事件重置。然后在您的游戏循环中,您检查该标志并在标志设置时移动桨。你也可以调用GetAsyncKeyState()。

0

我假设你在同一台PC上玩。

当一个按键被按下你需要在一个单独的线程中执行这些操作,否则其他玩家按键将由线程,直到它完成执行被阻止。

我认为正在发生的事情是什么:

玩家1:按住< -

玩家2:按住一个

玩家1:< - 没有被注册了

您需要能够确定何时按下按键以及何时按下按键。按下它应该告诉你的应用程序“这个键被按下”= true。当被释放时,它现在是错误的。这样您就不会映射到键盘本身,而是映射到应用程序中的对象,并且按下/关闭按键的事件会更改这些设置。

这样做可以让您按住< - ,然后按住 - >,释放< - 然后让您的 - >通过向右移动采取行动。

+0

这不起作用,因为即使它的正确/错误的改变,似乎阻止了桨的移动。 – Nicholas 2012-03-31 20:58:04