我目前正在通過getch()while循環聽取鍵盤輸入,並且所有工作都很好。但是,如果我按住左側並向上按,則左側移動將停止,直到再次按下它爲止。我能想到解決這個問題的唯一方法就是要知道一個鍵是否被保留/何時被釋放。我使用的ncurses據說有這個能力,但通過我所有的搜索我沒有發現任何有用的東西。C++差異化按鍵與鍵釋放
俄羅斯方塊代碼段在問:
int ch = getch();
while(ch != 'x') {
// Handle arrow keys first
if (ch == '\033') {
getch(); // Get rid of slash
switch (getch()) {
case 'A': rotate(); redraw(); break; // Up
case 'B': move(DOWN); redraw(); break; // Down
case 'C': move(RIGHT); redraw(); break; // Right
case 'D': move(LEFT); redraw(); break; // Left
}
} else {
switch(ch) {
// Stuff not relevant to this question
}
}
ch = getch();
}
你確定他面臨這個問題嗎?我認爲他問的是keyListener –
是的,我很確定,問題是按鍵信號沒有到達硬件。前幾天我有類似的問題,我在SDL上工作,我做了一個RPG遊戲,我必須在8個方向上移動我的角色。頂部+左邊,頂部+右邊,底部+左邊,底部+右邊等問題是,當頂部按鍵被按下,並且稍後按下左鍵時。角色停止移動頂部。我確定SDL_EnableKeyRepeat()已打開,問題仍然存在。所以我讀了這篇文章,並改變了控制。現在它工作正常。這是一個硬件問題。相當可以理解。 – kotAPI
@OMerObaid,也不是keyListener一個java的東西?我認爲這是一個C++問題。 – kotAPI