我正在通过getch()循环播放键盘输入,一切都运行良好。但是,如果我向左按住并向上按,则左移动将停止,直到我再次按下它为止。我能想到解决这个问题的唯一方法就是要知道密钥是否被保留/何时被释放。我正在使用据说具有这种能力的ncurses,但是通过我的所有搜索,我都找不到任何有用的东西。
问题中的俄罗斯方块代码片段:
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();
}
答案 0 :(得分:0)
这个问题比你想象的要复杂得多。它被称为键盘重影。要确保同时按下多个键时,您可能需要一个专门的键盘来提供反重影功能,或者您可能需要按照本文重新映射键盘。 Read it here了解更详细的信息。