現在、getch() while ループを介してキーボード入力をリッスンしており、すべてがうまく機能しています。ただし、左を押しながら上に押すと、もう一度押すまで左の動きが停止します。これを解決する唯一の方法は、キーが保持されているかどうか、またはキーがいつ解放されたかを知ることです。おそらくこの機能を備えていると思われる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();
}