Использование kbhit() с циклом while
Вот программа.
void main( )
{
int h, v;
h = 1; v = 10;
while ( !kbhit( ) || h <= 80 )
{
gotoxy( h, v );
printf( "<--->" );
delay( 200 );
clrscr( );
h = h + 1;
}
getch( );
}
Я делаю программу на C, в которой я использовал kbhit()
запустить цикл, пока не будет нажата клавиша. так вот стрелка "<--->"
будет продолжать двигаться вперед до тех пор, пока не будет нажата клавиша или пока она не достигнет последнего пикселя экрана.
Я хочу, чтобы программа каждый раз увеличивала h на 1 'd'
нажимается и уменьшается на 1 каждый раз 'a'
нажата. т.е. h++;
а также h--;
и запустить еще один цикл, пока символ не будет нажата. Идея больше похожа на игру "Змея", в которой змея продолжает двигаться в определенном направлении, пока не будет нажата клавиша. Помогите, пожалуйста!
1 ответ
clrscr() должен предшествовать gotoxy и printf
В любом случае, я бы создал переменную состояния, просто чтобы указать направление, в котором должна двигаться змея, то есть что-то, что хранит, если пользователь нажал "a" или "d".
И я бы не стал выходить из цикла, просто использовал if(kbhit) и получил бы char.
int direction = 1; char control;
while (1)
{
if(kbhit()){
control = getch();
switch (control){
case 'a': direction = -1; break;
case 'd': direction = +1; break;
default: break;
}
}
clrscr( );
gotoxy( h, v );
printf( "<--->" );
delay( 200 );
h = h + direction;
}