2

这是程序。

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--; 运行另一个循环,直到按下一个字符。这个想法更像是 Snake 游戏,其中蛇不断向某个方向移动,直到按下某个键。请帮忙!

4

1 回答 1

1

clrscr() 应该在 gotoxy 和 printf 之前

无论如何,我要做的是创建一个状态变量,只是为了指示蛇应该去的方向,即,如果用户按下“a”或“d”,则存储的东西。

而且我不会离开循环,只需使用 if(kbhit) 并获取字符。

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;
}
于 2014-03-08T14:30:10.387 回答