贪吃蛇C程序及流程图和模块设计说明

上传人:新** 文档编号:398565558 上传时间:2023-02-28 格式:DOC 页数:9 大小:66.01KB
返回 下载 相关 举报
贪吃蛇C程序及流程图和模块设计说明_第1页
第1页 / 共9页
贪吃蛇C程序及流程图和模块设计说明_第2页
第2页 / 共9页
贪吃蛇C程序及流程图和模块设计说明_第3页
第3页 / 共9页
贪吃蛇C程序及流程图和模块设计说明_第4页
第4页 / 共9页
贪吃蛇C程序及流程图和模块设计说明_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《贪吃蛇C程序及流程图和模块设计说明》由会员分享,可在线阅读,更多相关《贪吃蛇C程序及流程图和模块设计说明(9页珍藏版)》请在金锄头文库上搜索。

1、#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 Snak

2、e 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();/*图形驱动*/

3、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=

4、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: sna

5、ke.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();/*本次游

6、戏结束*/ 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

7、+;/*蛇的身体长一节*/ 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, sn

8、ake.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.directio

9、n=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)

10、 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模块、在游戏模块中通过3个控制语句判断游戏中的蛇是否死亡(3中死亡方式),不出现死亡在游戏结束时候打出成绩,如果出现死亡则跳出循环并打出成绩并进行初始化设定,如果不玩游戏按ESC则退出游戏。、主程序模块初始化(init()模块游戏界面设计(DrawK()模块游戏进行模块(GamePlay()死亡判断模块成绩输出模块退出游戏模块贪吃蛇模块图

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号