已结贴√

问题点数:1 回复次数:4

为什么程序最后总会显示有1个错误

总是会显示fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory

是不是程序出错了呢

刚刚初学不是很懂

#include

#include

#include

#define mDRAW     5

#define mLINE     6

#define mADOWN    7

#define mGEN      8

#define mLEFT     75

#define mRIGHT    77

#define mSPACE    57

#define mDOWN     80

#define mESC      1

#define TIMEINT   2

#define MAXX      9

#define MAXY   30

#define BACKCOLOR BLACK

#define WINX      50

#define WINY      470

#define GAP       6

#define AREAX     (WINX+GAP)

#define AREAY     (WINY-GAP)

#define BOXW      15

int oldarea[MAXY+1][MAXX];

int area[MAXY+1][MAXX];

int actW,actH,actX,actY;

int curX,curY,curColor,curW,curH;

int newX,newY,newColor,newW,newH;

int active;

int box[4][4];

int FORCOLOR;

int MESSAGE;

int BOX[7][4][4]={

{

{1,1,1,1},

{0,0,0,0},

{0,0,0,0},

{0,0,0,0}

},{

{1,1,1,0},

{1,0,0,0},

{0,0,0,0},

{0,0,0,0}

},{

{1,1,1,0},

{0,0,1,0},

{0,0,0,0},

{0,0,0,0}

},{

{1,1,1,0},

{0,1,0,0},

{0,0,0,0},

{0,0,0,0}

},{

{1,1,0,0},

{0,1,1,0},

{0,0,0,0},

{0,0,0,0}

},{

{0,1,1,0},

{1,1,0,0},

{0,0,0,0},

{0,0,0,0}

},{

{1,1,0,0},

{1,1,0,0},

{0,0,0,0},

{0,0,0,0}

}

};

void init();

void draw();

int genBox();

int getKey();

void lineFull();

int moveLeft();

int moveRight();

int moveDown();

int rotate();

int getW();

int getH();

void clearOldBox();

void putNewBox();

int collisionRotate(int box[][4]);

void getMessage();

void dispatchMessage();

int timeCome();

void fallDown();

int gameOver();

main()

{

int i;

init();

do

{

getMessage();

dispatchMessage();

}

while(!gameOver());

getch();

closegraph();

}

void getMessage()

{

if(MESSAGE) return;

if(timeCome())

{

MESSAGE=mADOWN;

return;

}

if(bioskey(1))

{

MESSAGE=bioskey(0)>>8;

return;

}

}

void dispatchMessage()

{

switch(MESSAGE)

{

case mLEFT:  moveLeft();break;

case mRIGHT: moveRight();break;

case mADOWN: moveDown();break;

case mSPACE: rotate();break;

case mDOWN:  fallDown(); break;

case mDRAW:  draw();break;

case mLINE:  lineFull();break;

case mGEN:   genBox();break;

case mESC:   closegraph(); exit(0);

default:     MESSAGE=0;

}

}

void fallDown()

{

while(active)

{

moveDown(); draw();

}

MESSAGE=mLINE;

}

int timeCome()

{

static long tm, old;

tm=biostime(0,tm);

if(tm-old

else

{

old=tm; return 1;

}

}

void init()

{

int i,j,x1,y1,x2,y2;

int driver=DETECT, mode=0;

randomize();

registerbgidriver(EGAVGA_driver);

initgraph(&driver,&mode,"");

cleardevice();

setfillstyle(SOLID_FILL,BLUE);

bar(0,0,639,479);

x1=AREAX;

y1=AREAY-BOXW*MAXY;

x2=AREAX+MAXX*BOXW;

y2=AREAY;

rectangle(--x1,--y1,++x2,++y2);

setfillstyle(SOLID_FILL,BLACK);

bar(++x1,++y1,--x2,--y2);

y1=AREAY-MAXY*BOXW; y2=AREAY;

setcolor(DARKGRAY);

for(i=0;i

{

x1=AREAX+i*BOXW;

line(x1,y1,x1,y2);

}

x1=AREAX; x2=x1+MAXX*BOXW;

for(j=0;j

{

y1=AREAY-j*BOXW;

line(x1,y1,x2,y1);

}

for(j=0;j

for(i=0;i

area[j][i]=oldarea[j][i]=0;

actX=0; actY=0; actW=MAXX-1; actH=MAXY-1;

draw();

MESSAGE=mGEN;

}

int genBox()

{

int i,j,boxidx;

boxidx=random(7); FORCOLOR=random(7)+1;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=BOX[boxidx][j][i];

curW=getW(); curH=getH();

curX=(MAXX+curW)/2;

if(curX+curW>=MAXX)curX=MAXX-1-curW;

curY=MAXY-1-curH;

newX=curX; newY=curY; actX=curX;actY=curY;

actW=newW=curW; actH=newH=curH;

active=1;

if(collision(box)) return 0;

putNewBox();

draw(); MESSAGE=0;

return 1;

}

void lineFull()

{

int row,col, rowEnd,full,i,j;

rowEnd=newY+newH;

if(rowEnd>=MAXY-1) rowEnd=MAXY-2;

for(row=newY; row<=rowEnd;)

{

full=1;

for(col=0;col

if(!area[row][col]){full=0; break;}

if(!full){++row; continue;}

for(j=row; j

for(i=0;i

area[j][i]=area[j+1][i];

actX=0;actY=row; actW=MAXX-1; actH=MAXY-1-row;

draw(); rowEnd--;

}

MESSAGE=mGEN;

}

void draw()

{

int row,col,x1,y1,x2,y2;

for(row=actY;row<=actY+actH;row++)

for(col=actX;col<=actX+actW;col++)

if(area[row][col]!=oldarea[row][col])

{

if(area[row][col]==0)

setfillstyle(SOLID_FILL,BACKCOLOR);

else

setfillstyle(SOLID_FILL,FORCOLOR);

x1=AREAX+col*BOXW; x2=x1+BOXW;

y1=AREAY-(row+1)*BOXW; y2=y1+BOXW;

bar(++x1,++y1,--x2,--y2);

oldarea[row][col]=area[row][col];

}

MESSAGE=0;

}

int moveLeft()

{

newX=curX-1; clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return 0;

}

putNewBox();

actW=curW+1; actX=curX=newX;

MESSAGE=mDRAW;

return 1;

}

int moveRight()

{

newX=curX+1; clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return 0;

}

putNewBox();

actW=curW+1; actX=curX; curX=newX;

MESSAGE=mDRAW;

return 1;

}

int moveDown()

{

int i,j;

newY=curY-1;

clearOldBox();

if(collision(box))

{

newY=curY;

putNewBox();

active=0;

MESSAGE=mLINE;

return 0;

}

putNewBox();

actH=curH+1; actY=newY; curY=newY;

MESSAGE=mDRAW;

return 1;

}

int rotate()

{

int newBox[4][4];

int i,j;

clearOldBox();

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[j][i]=0;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[curW-i][j]=box[j][i];

newW=curH; newH=curW;

if(collisionRotate(newBox))

{

newW=curW; newH=curH; newX=curX; newY=curY;

putNewBox();

MESSAGE=0;

return 0;

}

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=newBox[j][i];

putNewBox();

actH=newH>curH? newH:curH;

actW=curX+actH-newX;

actX=newX; actY=newY; curX=newX;

curY=newY; curW=newW; curH=newH;

MESSAGE=mDRAW;

return 1;

}

int getW()

{

int i,j;

for(i=3;i>0;i--)

for(j=0;j<4;j++)

if(box[j][i]) return i;

return 0;

}

int getH()

{

int i,j;

for(j=3;j>0;j--)

for(i=0;i<4;i++)

if(box[j][i]) return j;

return 0;

}

void clearOldBox()

{

int i,j;

for(j=0;j<=curH; j++)

for(i=0;i<=curW; i++)

if(box[j][i])

area[curY+j][curX+i]=0;

}

void putNewBox()

{

int i,j;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(box[j][i])

area[newY+j][newX+i]=FORCOLOR;

}

int collision(int cbox[][4])

{

int i,j;

if(newX<0) return 1;

if(newX+newW>=MAXX) return 1;

if(newY<0) return 1;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(area[newY+j][newX+i]&&cbox[j][i]) return 1;

return 0;

}

int collisionRotate(int cbox[][4])

{

int i,j;

if(newX+newW>=MAXX) newX=MAXX-1-newW;

if(newY+newH>=MAXY) newY=MAXY-1-newH;

if(collision(cbox)) return 1;

for(i=0;i<=newW;i++)

for(j=0;j<=newH;j++)

if(area[newY+j][newX+i])

{

newX-=newW-i+1; goto L;

}

L: return collision(cbox);

}

int gameOver()

{

if(!active &&(curY+curH>MAXY-3)) return 1;

else return 0;

}

搜索更多相关主题的帖子:

总会

为什么编c语言总有一个错误,为什么程序最后总会显示有1个错误相关推荐

  1. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  2. 恶作剧c语言程序,自己用C语言编写的一个恶作剧小程序代码

    自己用C语言编写的一个恶作剧小程序代码 #include #include #include #define MAX 100 void hebingString(char s1[],char s2[] ...

  3. C语言实现的一个交互小程序(一)

    关于C语言如何有效正确的学习,我写了一个专栏:你可以这样学习C语言,有兴趣的小伙伴可以来看看哦,希望能对你有收获!本文例子需要源码的可以关注我后私信我. 这几天我用C语言自己写了一个交互小程序.这个交 ...

  4. html中怎么显示错误信息,在html中显示为内嵌错误的文本

    我正在尝试在某个图片旁边的div工具栏中放置标题.问题在于我的文本放置不当,应该至少位于工具栏的顶部,而是位于底部并且不移动. 我希望它在左边的垂直中间靠近图片.在html中显示为内嵌错误的文本 和画 ...

  5. 用c语言写出一个榜单程序,C语言依然位居榜单前列,依然值得程序员学习

    原标题:C语言依然位居榜单前列,依然值得程序员学习 关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C ...

  6. c语言编辑密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

  7. c语言用数组写密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

  8. c语言一个循环重新输入密码,想程序高手求助--用C语言来编辑一个输入密码的程序...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

  9. c语言密码程序返回,想程序高手求助--用C语言来编辑一个输入密码的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

  10. c语言编程请输入密码,想程序高手求助--用C语言来编辑一个输入密码的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

最新文章

  1. cass坡度土方计算案例_南方CASS方格网土方计算心得
  2. Mozilla与Ubisoft结盟一同开发AI替浏览器除错
  3. android studio小案例代码,AndroidStudio开发小相册实例
  4. nltk英文词性标注
  5. Orchard之生成新模板
  6. 在wp中,使用NavigationService.Navigate导航页面出现错误
  7. linux grep命令 例子,14个grep命令使用例子
  8. GitHub标星6000+!Python带你实践机器学习圣经PRML
  9. percona-distribution-mysql-pxc
  10. linux换源_Win10子系统(linux)安装及迁移
  11. springboot+aop切点记录请求和响应信息
  12. mysql text字段导出_用命令创建MySQL数据库
  13. win7 微软语音服务器,win7 TTS修复工具(微软tts语音引擎修复)
  14. CString, BSTR, LPCTSTR 概念
  15. soapui脚本链接mysql_SOAPUI中文教程---脚本和脚本库
  16. GitHub十大热门Python项目,过程很有趣
  17. teredo 服务器无响应,teredo 服务器能ping通但就是连不上
  18. Windows脚本 同网段ip检测与持续ping包测试
  19. 联想开机启动项按哪个_联想台式电脑设置第一启动的快捷键是什么
  20. 【Windows】CVE-2017-11882漏洞利用

热门文章

  1. matlab 绘制有向图、无向图、有权有向图、有权无向图以及查找最短路径
  2. 企业管理信息系统成功实施的四个阶段
  3. 蜂鸣器演奏《两只老虎》
  4. ACdream 1430 SETI 后缀自动机
  5. 新猿木子李:0基础学python培训教程 Python操作Redis之有序集合类型
  6. malloc与calloc
  7. 2023年天津中德应用技术大学专升本机械电子工程专业考试大纲
  8. 微信公众号开发之网页授权获取用户基本信息
  9. keras求两向量间的余弦值
  10. 腾讯课堂老师可以看到学生本人吗?