使用带有while循环的kbhit()

这是该计划。

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()来运行循环,直到按下一个键。 所以这里箭头""将继续向前移动直到按下一个键或直到它到达屏幕的最后一个像素。

我想要的是程序应该在每次按下'd'将h递增1并且每按一次'a'递减1。 即h++;h--; 并运行另一个循环,直到按下一个字符。 这个想法更像是蛇游戏,其中蛇一直向某个方向移动,直到按下一个键。 请帮忙!

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; }