c语言编译kbhit出现问题,在VC++中运行出现error C2065: 'kbhit' : undeclared identifier,什么意思?怎么调试?...

在VC++中运行出现error C2065: 'kbhit' : undeclared identifier,什么意思?怎么调试?0

dcebd7a0de6265b6ccae5ead692f1eab.pngyareate2013.04.08浏览493次分享举报

#define N 200

#include

#include

#include

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int gamespeed=60000;/*游戏速度自己调整*/

struct car

{

int x[N];

int y[N];

int node;/*小车的节数*/

int direction;/*小车移动方向*/

}car;

void Init(void);/*图形驱动*/

void Close(void);/*图形结束*/

void DrawK(void);/*开始画面*/

void GameOver(void);/*结束*/

void GamePlay(void);/*具体过程*/

/*主函数*/

void main(void)

{

Init();/*图形驱动*/

DrawK();/*开始画面*/

GamePlay();/*具体过程*/

Close();/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,"c:\\tc");

cleardevice();

}

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

void DrawK(void)

{

setbkcolor(BLUE);

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

for(i=50;i<=600;i+=10)/*画围墙*/

{

rectangle(i,40,i+10,49); /*上边*/

rectangle(i,451,i+10,460);/*下边*/

}

for(i=40;i<=450;i+=10)

{

rectangle(50,i,59,i+10); /*左边*/

rectangle(601,i,610,i+10);/*右边*/

}

}

void GamePlay(void)

{

car.direction=1;/*方向往右*/

car.x[0]=100;car.y[0]=100;/*车头*/

car.x[1]=110;car.y[1]=100;

car.node=4;/*节数*/

while(1){

while(!kbhit())/*在没有按键的情况下,小车自己移动身体*/

{for(i=car.node-1;i>0;i--)/*小车的每个环节往前移动,也就是小车运行的关键算法*/

{car.x[i]= car.x[i-1];

car.y[i]=car.y[i-1];}

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动车头*/

switch(car.direction)

{

case 1:car.x[0]+=20;break;

case 2: car.x[0]-=20;break;

case 3: car.y[0]-=20;break;

case 4: car.y[0]+=20;break;

}

if(car.x[0]<55||car.x[0]>595||car.y[0]<65||

car.y[0]>455)/*小车是否撞到墙壁*/

{GameOver();/*本次演示结束*/

getch();}

setcolor(4);/*画出小车*/

for(i=0;i

rectangle(car.x[i],car.y[i],car.x[i]+20,

car.y[i]-20);

delay(gamespeed);

setcolor(BLUE);/*用背景色去除车的的最后一节*/

rectangle(car.x[car.node-1],car.y[car.node-1],

car.x[car.node-1]+20,car.y[car.node-1]-20);

/*endwhile(!kbhit)*/

}

key=bioskey(0);/*接收按键*/

if(key==ESC)/*按ESC键退出*/

GameOver();

else

if(key==UP&&car.direction!=4)

/*判断是否往相反的方向移动*/

car.direction=3;

else

if(key==RIGHT&&car.direction!=2)

car.direction=1;

else

if(key==LEFT&&car.direction!=1)

car.direction=2;

else

if(key==DOWN&&car.direction!=3)

car.direction=4;

}/*endwhile(1)*/

}

void GameOver(void)

{ cleardevice();

setcolor(RED);

settextstyle(0,0,4);

outtextxy(200,200,"GAME OVER");

Close();

}

/*图形结束*/

void Close(void)

{

getch();

closegraph();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值