2012-03-30 102 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