贪吃蛇C程序及流程图和模块设计说明.doc_第1页
贪吃蛇C程序及流程图和模块设计说明.doc_第2页
贪吃蛇C程序及流程图和模块设计说明.doc_第3页
贪吃蛇C程序及流程图和模块设计说明.doc_第4页
贪吃蛇C程序及流程图和模块设计说明.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#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 score=0;/*得分*/ int gamespeed=50000;/*游戏速度自己调整*/ struct food int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ food;/*食物的结构体*/ struct snake int xn; int yn; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ snake; void init(void);/*图形驱动*/ void close(void);/*图形结束*/ void drawk(void);/*开始画面*/ void gameover(void);/*结束游戏*/ void gameplay(void);/*玩游戏具体过程*/ void prscore(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(lightgreen);*/ 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;i0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*以蛇头的移动开始让整个身子移动,后一位补上前一位的位置坐标*/ /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; /*第二部分:死亡设定模块*/ for(i=3;isnake.node;i+)/*死亡条件一:从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ if(snake.xi=snake.x0&snake.yi=snake.y0) gameover();/*显示失败*/ snake.life=1; break; if(snake.x0595|snake.y0455)/*死亡条件二:蛇是否撞到墙壁*/ gameover();/*本次游戏结束*/ snake.life=1; /*蛇死*/ if(snake.life=1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; /*第三部分:食物设定模块*/if(snake.x0=food.x&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node+;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10; prscore();/*输出新得分*/ /*第四部分:死亡后返回初始设定(或是退出开始新游戏)*/setcolor(4);/*画出蛇*/ for(i=0;isnake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle(snake.xsnake.node-1,snake.ysnake.node-1, snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key=esc)/*按esc键退出*/ break; /*判断是否往相反的方向移动(向相反方向移动会死亡)第三类死亡条件*/ else if(key=up&snake.direction!=4) snake.direction=3; else if(key=right&snake.direction!=2) snake.direction=1; else if(key=left&snake.direction!=1) snake.direction=2; else if(key=down&snake.direction!=3) snake.direction=4; /*endwhile(1)*/ /*第五部分:游戏结束*/ void gameover(void) cleardevice(); prscore(); setcolor(red); settextstyle(0,0,4); outtextxy(200,200,game over); getch(); /*第六部分:输出成绩*/ void prscore(void) char str10; setfillstyle(solid_fill,yellow); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,score:%d,score); outtextxy(55,20,str); /*第七部分:结束图形*/ void close(void) getch(); closegraph(); 程序开始初始化(调用init()开始画面(调用drawk()开始游戏(调用gameplay()判断是否出现死亡否输出成绩(调用prscore()是否继续游戏退出游戏(调用close()否是是贪吃蛇流程图本系统分为:初始化即图形驱动函数init()模块、图形界面设计drawk()模块、游戏gameplay()模块、输出成绩prscore()模块、退出游戏close模块、在游戏模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论