看板 C_and_CPP 關於我們 聯絡資訊
我用C++寫一個函式 if(kbhit()){ char key=getch(); if(key=='a'){ //案A鍵 往左移動 } if(key=='s'){ //案S鍵 往右移動 } } 這樣移動會像打字一樣非常的不順 例如按住A會先往左移一格,過一下後才連續往左移動 但是我想要平滑的移動 用kbhit()跟getch()只能知道KeyDown 有哪個函式或什麼方法可以知道使用者KeyUp哪個按鍵(或是KeyPress) p.s 開發平台是Dev-C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.26.178
LPH66:getch() 並不是抓 KeyDown... 02/16 16:23
suhorng:Windows 的話 用 Windows API ? 02/16 16:27
xxxx9659:但是kbhit()加getch()卻可以模擬KeyDown的效用 @@ 02/16 16:27
suhorng:Try google: GetAsyncKeyState msdn 02/16 16:29
xxxx9659:GetAsyncKeyState OK了 感謝!! 02/16 16:41
QQ29:可以問一下 什麼時機要呼叫這API呢? 02/16 16:56
QQ29:這函式是決定up還是down但是我怎麼知道該call@@? 02/16 16:56
suhorng:嗯... 樓上可以耐下心來仔細看一下 MSDN 喔 02/16 17:14
suhorng:如果用這個函式 我會選擇用一個迴圈 固定一段時間去檢查 02/16 17:14
suhorng:哪些我好奇的鍵是被 pressed 的還是沒有被 pressed 的 02/16 17:15
suhorng:然後檢查完後去跑一小段遊戲的邏輯之類的 02/16 17:15
QQ29:可是如果用迴圈怎麼固定時間去檢查?? 02/16 17:18
QQ29:看他傳入vkey@@是要指定說我要看哪個鍵被按還是沒被按嗎 02/16 17:20
QQ29:這樣如果我要偵測很多按鈕是不是要if很多個? 02/16 17:20
suhorng:不就迴圈檢查完 邏輯跑玩之後 Sleep 一下再繼續檢查... 02/16 17:48
suhorng:MSDN 看仔細點 T口T 明明這個函式的用途上面寫很清楚 02/16 17:49
suhorng:檢查很多很多按鍵還有 GetKeyboardState 可以用 02/16 17:52
suhorng:但是 GetKeyboardState 依賴於 windows message 02/16 17:52
suhorng:這跟 GetAsyncKeyState 不同 02/16 17:52
coscell:正確答案:hook 02/16 19:02