首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while循环中使用kbhit()

在while循环中使用kbhit()
EN

Stack Overflow用户
提问于 2014-03-08 14:04:45
回答 1查看 7.9K关注 0票数 2

这是节目。

代码语言:javascript
复制
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--;,并运行另一个循环,直到按下一个字符。这个想法更像蛇游戏,在游戏中,蛇一直沿着一个特定的方向移动,直到按下一个键。救命啊!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 14:30:10

clrscr()应该出现在gotoxy和printf之前。

无论如何,我要做的是创建一个状态变量,仅仅是为了指示蛇应该走的方向,也就是说,当用户按'a‘或'd’时存储的东西。

我不会离开循环,只使用if(kbhit)并得到char。

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22270310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档