c语言前辈们,怎么用getch()巧妙代替kbhit()的功能?0
sammigo2014.10.26浏览18次分享举报
这是在能TC上运行的小球动态碰撞的程序,调用了图形函数graphics.h。如何用getch()能达到和用kbhit()一样的效果?#include#includeintmain(){inti,j,gdrive... 这是在能TC上运行的小球动态碰撞的程序,调用了图形函数graphics.h。如何用getch()能达到和用kbhit()一样的效果?
#include
#include
int main()
{
int i,j,gdriver,gmode,size;
void *buf;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"d:\\tc2\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
circle(31,200,30);
floodfill(31,200,12);
size=imagesize(0,169,62,231);
buf=malloc(size);
getimage(0,169,62,231,buf);
putimage(500,269,buf,COPY_PUT);
putimage(320,170,buf,COPY_PUT);
while(1)
{
for(j=0;j<4;j )
for(i=0;i<260;i )
{
if(kbhit()) {closegraph();exit(0);}
switch(j)
{
case 0:
putimage(i,170,buf,COPY_PUT);
break;
case 1:
putimage(321 i,170,buf,COPY_PUT);
break;
case 2:
putimage(581-i,170,buf,COPY_PUT);
break;
case 3:
putimage(260-i,170,buf,COPY_PUT);
break;
}
}
}
}
以上是一个小球动态碰撞的程序,一运行小球就开始永不停歇的运动,碰撞,反弹,再碰撞,如此循环,直到有键盘输入为止(这是kbhit()的作用)。怎么巧妙运用getch()能达到用kbhit()一样的效果?
如果把if(kbhit()){closegraph();exit(0);}直接换成if(getch()){exit(0);closegraph(0);},运行程序小球开始没有动,按任意键就动,而且动了后就停不了,也回不去tc的编辑页面了,非得退到桌面关掉整个tc。怎么用getch()能让小球随动随停?
小弟表示木有财富值了^_^|| 展开