在VC++中运行出现error C2065: 'kbhit' : undeclared identifier,什么意思?怎么调试?
#defineN200#include<graphics.h>#include<stdlib.h>#include<dos.h>#defineLEFT0x4b00#def...
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#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<car.node;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();
} 展开
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#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<car.node;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();
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询