所以我正在努力開發一個平臺風格的遊戲,用C編寫,並使用GTK作爲我的圖形工具包。現在我有一個程序,在屏幕上放置三個塊。其中兩個是平臺,第三個可以通過按左/右箭頭鍵橫向移動。 (我還沒有畫出任何精靈,所以現在我的遊戲中的英雄是一個藍色的矩形)。我也通過按'z'鍵實現了跳躍,並且您可以跳躍並登陸平臺。GDK/GTK可以同時按下兩個按鍵嗎?
然而,橫向移動而跳躍是相當困難的。我相信這是因爲我的程序無法識別兩個按鍵同時按下,因此您必須釋放左側或右側箭頭,按z,然後釋放z並再次按右側或左側箭頭以在空中橫向移動。我想能夠左手或右手並同時按z鍵讓英雄橫向跳躍。
GDK reference manual將GDK密鑰代碼列表中的'gdk/gdkkeysyms.h'(在我的系統上位於/usr/include/gtk-3.0/gdk/gdkkeysyms.h)中,但不包含給出有關同時使用兩個鍵的任何指導。 GTK/GDK能認出其中兩個鍵同時按下事件(GDK,GTK爲準,我得到其中兩個之間的界限是模糊的,但我想這是一個話題另一個問題)?你會如何運用它? (對於單個密鑰,您可以通過執行類似
key = event->keyval;
但我真的不知道這對於兩個密鑰會是什麼樣子)。
感謝您的幫助!
感謝。我會嘗試設置一個測試用例,看看能否識別出兩個按鍵。這聽起來像你說的是,如果一個按鍵被按住,然後按下另一個按鍵,則會爲第二按鍵生成另一個按鍵事件信號,我認爲這是真的,但我沒有真正想過。所以,也許我可以嘗試通過使用單獨的變量跟蹤每個鍵的按下/釋放狀態來使其工作。在我剛喂入程序之前,使用一個名爲'key'的變量按下每個按鍵事件的下一個按鍵。所以也許我需要'keyleft','keyright'和'keyz'變量... – user2281387 2013-04-22 05:22:17
更新:是的,就是這樣。我創建了變量來分別跟蹤每個鍵,現在它工作得很好。謝謝! – user2281387 2013-04-22 06:00:06