Как я могу получить getch() только в некоторых случаях в C?

Я действительно не знаю, как напечатать заголовок, поэтому я придумал это. Так что в основном я пытаюсь сделать какую-то змейку на C. Но я не знаю, как сделать элементы управления. Допустим, вы нажали стрелку влево, и змея должна двигаться влево, пока не будет нажата другая клавиша, но я не могу придумать код для этого, она всегда останавливается и ждет, пока я нажму клавишу.

Я думал о чем-то вроде этого:

for ( i = 0; i < 10 ; i++ ) {
     if( next_move = getch() ) break;
     else Sleep(10);
}
if(!next_move)
    next_move = prev_move;
if( move ( next_move, bite_cord ) ) {
    prev_move = next_move;
    next_move = 0;
    Sleep(300);
    system("CLS");
    printf("You lost. ");
}

Моя идея состояла в том, чтобы подождать одну секунду, и если нет нажатой клавиши, чтобы продолжить предыдущую, но если она нажата, чтобы сохранить нажатую сейчас.

У вас есть идеи, как это сделать?


person Boris Mutafov    schedule 25.01.2016    source источник
comment
Возможный дубликат неблокирующего ввода с клавиатуры C   -  person Eugene Sh.    schedule 26.01.2016
comment
@ЕвгенийШ. Ответ в дубликате для UNIX. Похоже, OP спрашивает о DOS.   -  person fuz    schedule 26.01.2016
comment
Если это для Windows, то возможный дубликат stackoverflow.com/questions/21294713/   -  person Derlin    schedule 26.01.2016
comment
Обратите внимание, что в ОС Windows клавиши со стрелками возвращают два кода из getch, см. предыдущий ответ. Используйте kbhit для обнаружения нажатия клавиши перед фиксацией getch.   -  person Weather Vane    schedule 26.01.2016


Ответы (1)


Вы можете использовать kbhit() Код будет выглядеть примерно так

if (kbhit())
    input = getch(); //Or something like that
person user2505282    schedule 19.02.2016