首页 贪吃蛇课程设计报告

贪吃蛇课程设计报告

举报
开通vip

贪吃蛇课程设计报告目录TOC\o"1-5"\h\z课程设计目的3课程设计任务与要求32.1课程设计内容32.2课程设计要求32.3课程设计环境3课程设计方案33.1方案论证33.2程序整体设计说明33.3设计思路43.4设计总体流程图4HYPERLINK\l"bookmark6"\o"CurrentDocument"3.5设计的具体实现5程序测试84.1测试内容与结果84.2程序运行效果图9HYPERLINK\l"bookmark20"\o"CurrentDocument"课程设计总结101116.参考文献附录源程...

贪吃蛇课程设计报告
目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 TOC\o"1-5"\h\z课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 目的3课程设计任务与要求32.1课程设计内容32.2课程设计要求32.3课程设计环境3课程 设计方案 关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案 33.1 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证33.2程序整体设计说明33.3设计思路43.4设计总体流程图4HYPERLINK\l"bookmark6"\o"CurrentDocument"3.5设计的具体实现5程序测试84.1测试内容与结果84.2程序运行效果图9HYPERLINK\l"bookmark20"\o"CurrentDocument"课程设计总结101116.参考文献附录源程序课程设计目的:复习、巩固才C、C++的基础知识,进一步加深对VC技术的理解和掌握;课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。培养学生在项目开发中团队合作精神、创新意识及能力课程设计任务与要求课程设计内容贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着很多人,它的制作 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 对于很多同学而言都是很神秘的。所以我们希望通过这学期所学知识把它剖析开来,真真正正的了解它的本质和精髓。在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此决定选择这个题目作为VC的课程设计。最后一部分就是游戏的模块划分,根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏设置(蛇的颜色、食物的颜色操作说明等)与积分。课程设计要求对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;说明书、流程图要清楚;记录设计情况(备查,也为编写设计说明书作好准备);2.3课程设计环境Windows7操作系统,VC6.0开发环境。课程设计方案3.1方案论证方案一:基于MFC设计该方案的好处是系统自动生成软件框架,设计者只需填充编写的代码即可,程序设计比较复杂,对于编程能力不强的同学来说难度较大。方案二:基于easyX设计该方案的好处是设计者只需编写程序文件,完成后编译即可生成可执行文件,编程前需要先安装easyX图形库。由于编程能力不强,方案二设计简单,易于调试,故选择方案二。3.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。游戏界面:1)开始游戏(加载并开始)2)暂停游戏(从当前进度结束)3)重新开始(在某一时刻暂停后可以继续接着玩)游戏设置:1)蛇的颜色(红色)2)游戏帮助(游戏控制说明)3)积分(每次吃掉一个食物增加10分,并显示出来)3.3设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。3.4设计总体流程图1)食物类structFood{in";inty;intaddFood;};3.5设计的具体实现/*食物的结构体定义*//*食物的横坐标*//*食物的纵坐标*//*判断是否要出现食物的变量*/2)蛇块类把蛇分成一块一块,一个蛇相当于有若干个块,蛇块类就是用来描述每块的信息。/*蛇的结构体定义*//*保存蛇身每一节位于屏幕上的列坐标*//*保存蛇身每一节位于屏幕上的行坐标*//*蛇的节数*//*蛇移动方向*//*蛇的生命,0活着,1死亡*/structSnake{intx[MAX_JOINTS];inty[MAX_JOINTS];intjoint;intdirection;intlife;};初始化游戏游戏开始界面的初始化:voidInitGraph(){cleardevice();setbkcolor(BLUE);/*设置背景颜色*/setcolor(WHITE);/*设置前景颜色*/cleardevice();setfont(25,0,_T("微软雅黑"));outtextxy(170,150,"GreedySnake");/*在坐标(170,150)处输出字符串*/outtextxy(219,254,"Ready?");getch();setbkcolor(0);cleardevice();}绘制游戏场景setlinestyle(PS_SOLID,5)用于绘制实心的宽度为5个像素的线型,bar(i,40,i+7,47);为画一个左上角为(i,40),右下角为(i+7,47)的矩形条,rectangle(i,40,i+10,49)也用于画矩形。voidDrawFence(){inti;setbkcolor(LIGHTGREEN);setlinestyle(PS_SOLID,5);//画围墙setfillstyle(LIGHTBLUE);for(i=50;i<=591;i+=10){//rectangle(i,40,i+10,49);//上边bar(i,40,i+7,47);bar(i,551,i+7,558);//下边}for(i=40;i<=550;i+=10){bar(50,i,57,i+7);//左边bar(591,i,598,i+7);//右边}}结束游戏PrScore(score)用于输出分数。voidGameOver(intscore){cleardevice();PrScore(score);setcolor(RED);setfont(80,0,_T("微软雅黑"));outtextxy(100,200,"GAMEOVER");mciSendString("closemo.mp3",NULL,0,NULL);//关闭音乐getch();exit(0);}判断是否需要出现食物if(food.addFood==1)//需要出现新食物food.x=rand()%400+60;food.y=rand()%350+60;//食物出现后必须在整格内才能让蛇吃到while(food.x%10!=0){food.x++;}while(food.y%10!=0){food.y++;}food.addFood=0;//画面上有食物}if(food.addFood==0)//画面上有食物,则显示{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}在没有按键的情况下,蛇自己移动身体for(i=snake.joint-1;i>0;i--)//蛇的每个节往前移动{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}//1,2,3,4表示右,左,上,下四个方向,来决定蛇头的移动switch(snake.direction)caseMV_UP:snake.y[0]-=10;break;caseMV_DOWN:snake.y[0]+=10;break;{caseMV_RIGHT:snake.x[0]+=10;break;caseMV_LEFT:snake.x[0]-=10;break;}a.从蛇的第四节开始判断是否撞到自己,因为蛇头为两节,第三节不可能拐过来for(i=3;i595||snake.y[0]<55||snake.y[0]>455){GameOver(score);//本次游戏结束snake.life=1;//蛇死}判断是否撞到障碍物for(intobs_i=0;obs_i#include#include#include#include#include#include#include#definerandom(a,b)(rand()%((b)-(a)))+(a)#pragmacomment(lib,"Winmm.lib")//加入背景音乐时使用usingnamespacestd;TOC\o"1-5"\h\z#defineMAX_JOINTS200#defineMV_RIGHT1#defineMV_LEFT2#defineMV_UP3#defineMV_DOWN4intrnd1,rnd2;vectorvox;vectorvoy;voidInitGraph(void);voidDrawFence(void);voidGameOver(intscore);voidGamePlay(void);voidPrScore(intscore);voidfun_pause();voidfun_reset();voidfun_obstacle();/*图形界面初始化函数*//*绘制游戏场景*//*结束游戏*//*玩游戏具体过程*//*显示分数*//*暂停游戏*//*重置游戏*//*设置障碍物*/structFood{intx;inty;intaddFood;};/*食物的结构体定义*//*食物的横坐标*//*食物的纵坐标*//*判断是否要出现食物的变量*/structSnake{intx[MAX_JOINTS];inty[MAX_JOINTS];intjoint;intdirection;intlife;};/*蛇的结构体定义*//*保存蛇身每一节位于屏幕上/*保存蛇身每一节位于屏幕上/*蛇的节数*//*蛇移动方向*//*蛇的生命,0活着,1死亡*/的列坐标*/的行坐标*/voidplay()initgraph(800,600);InitGraph();DrawFence();GamePlay();getch();}//播放音乐intmain(){mciSendString("playmo.mp3",NULL,0,NULL);play();return0;}//初始化voidInitGraph(){cleardevice();setbkcolor(BLUE);setcolor(WHITE);cleardevice();setfont(25,0,_T("微软雅黑"));outtextxy(170,150,"GreedySnake");outtextxy(219,254,"Ready?");getch();setbkcolor(0);cleardevice();}//绘制游戏场景voidDrawFence(){inti;setbkcolor(LIGHTGREEN);setlinestyle(PS_SOLID,5);//画围墙setfillstyle(LIGHTBLUE);for(i=50;i<=591;i+=10){//rectangle(i,40,i+10,49);//上边bar(i,40,i+7,47);bar(i,551,i+7,558);//下边}for(i=40;i<=550;i+=10){bar(50,i,57,i+7);//左边bar(591,i,598,i+7);//右边}}//结束游戏voidGameOver(intscore){cleardevice();PrScore(score);setcolor(RED);//关闭音乐setfont(80,0,_T("微软雅黑"));outtextxy(100,200,"GAMEOVER");mciSendString("closemo.mp3",NULL,0,NULL);getch();exit(0);}//输出成绩voidPrScore(intscore){charstr_score[10];//setfillstyle(YELLOW);//bar(50,15,220,35);//setcolor(6);//setfont(25,0,_T("微软雅黑"));//setfillstyle(BLACK);setbkmode(TRANSPARENT);//---new---BeginBatchDraw();setfillstyle(BLACK);bar(601,0,800,600);setfont(60,0,_T("微软雅黑"));setcolor(YELLOW);outtextxy(625,30,_T("贪吃蛇"));setfont(30,0,_T("微软雅黑"));setcolor(LIGHTGREEN);outtextxy(625,140,_T("制作:莫新存"));outtextxy(625,170,_T("班级:24041001"));outtextxy(625,200,_T("学号:19"));setfont(25,0,_T("微软雅黑"));setcolor(CYAN);outtextxy(625,380,_T("上:W"));outtextxy(625,400,_T("下:S"));outtextxy(625,420,_T("左:A"));outtextxy(625,440,_T("右:D"));outtextxy(625,460,_T("分数:"));outtextxy(625,490,_T("暂停(P键)"));outtextxy(625,520,_T("重新游戏(R键)"));setcolor(LIGHTBLUE);sprintf(str_score,"%i",score);outtextxy(680,460,str_score);EndBatchDraw();if(score>0&&score%50==0)fun_obstacle();}voidGamePlay(){//控制游戏速度*//记录游戏得分//食物结构体变量//蛇结构体变量inti,key;intgamespeed=200;intscore=0;structFoodfood;structSnakesnake;//置蛇的生命状态为活着//置蛇头方向往右//置蛇头初始位置//置蛇的初始节数为2//显示游戏得分food.addFood=1;//1表示需要出现新食物,0表示已经存在食物snake.life=0;snake.direction=MV_RIGHT;snake.x[0]=100;snake.y[0]=100;snake.x[1]=110;snake.y[1]=100;snake.joint=2;PrScore(score);//重复玩游戏,直到按Esc键结束srand(time(NULL));while(1){while(!kbhit()){mciSendString("playmo.mp3",NULL,0,NULL);//播放音乐if(food.addFood==1){//需要出现新食物food.x=rand()%400+60;food.y=rand()%350+60;//食物出现后必须在整格内才能让蛇吃到while(food.x%10!=0){food.x++;}while(food.y%10!=0){food.y++;}food.addFood=0;//画面上有食物}if(food.addFood==0){//画面上有食物,则显示setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}//在没有按键的情况下,蛇自己移动身体for(i=snake.joint-1;i>0;i--){//蛇的每个节往前移动snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}//1,2,3,4表示右,左,上,下四个方向,来决定蛇头的移动switch(snake.direction){caseMV_RIGHT:caseMV_LEFT:caseMV_UP:caseMV_DOWN:snake.x[0]+=10;break;snake.x[0]-=10;break;snake.y[0]-=10;break;snake.y[0]+=10;break;过来}//从蛇的第四节开始判断是否撞到自己,因为蛇头为两节,第三节不可能拐for(i=3;i595||snake.y[0]<55||snake.y[0]>455){GameOver(score);//本次游戏结束snake.life=1;//蛇死}//判断是否撞到障碍物for(intobs_i=0;obs_i
本文档为【贪吃蛇课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
sunliren
暂无简介~
格式:doc
大小:143KB
软件:Word
页数:16
分类:
上传时间:2022-02-25
浏览量:0