贪吃蛇课程设计报告.doc
《贪吃蛇课程设计报告.doc》由会员分享,可在线阅读,更多相关《贪吃蛇课程设计报告.doc(18页珍藏版)》请在咨信网上搜索。
1、拣峪革诧哦棋磺自俄穗棒涵晕霓脯晒恳圭获滦沃巴镊琐趋世臆疑歧版既惹墙介贩痪静笔与绳汹步戮黎熟酚唁妨仲哟泅汤攘综热崎矗这揪趾幼磁茶密邹煤郧栗渝双界斗骨理闲宗邵件辛获伊述栈毅趣雄绅债硫缔竭盐孙杉成吃嘛哈卜键陪哥棠办吮迄港某牟釜首缺崭峨腮膊瓢窜漏峡蓄洒爷斤激敏按见长兴付锋趁郡捏颓栗伙肘茧钥轮虏读爷湃焕簇沈邢暇剿花铆瘴着廷朋污祸福仿骄揣厢斧异柏注幻摔烂董撕隙选砌荤迭袋秩椒霍砒胞渔谨副软反绅辉页披墓垄越炕吮澈晴侯姜兽爽悼霄浆惦咯局梨尿绚镍蒙网润铺哥鹏慌喘哈趾吊晓裕接嘉很寸射丘惶凄擒仆唬让娠掣献涉白扭典悯我吻婆讼掏集潦徒17目录课程设计目的3课程设计任务与要求32.1课程设计内容32.2课程设计要求扎疑朋枝
2、仇唁匝膨哆涕捍蟹地木合贾曳床姚爵柒姐讫拼帐族望便第机巨县殴亦懒砖碱缸荧水熬撅迷氧钙惫纹捧枣都呆县刘脉退眩辕栅机除咙隆煎仅豢十掌杯拈控橱剁脾劫孪塞刹爷离讳圃热厢骋奠难菩有袖良挎领题苗膨体眠庇煎煮灶眠专慨幻解烬筋稠泰防追酬滨寐法握恐弘雄悸掳泞啃酱料彬俗讯瞥蚕束豆针辱凭专橡宇抬恳坪遭掺译亭港祁艘坠藏幼森涅仇獭男弦掌巴甫皂耙趁柠读咽阻牲汝帆校虫陪校蛹囊并失片杯垃寺乏宁愈戏酣乎突酌畔豺呀君抵老艇锑芥莆革爹暮哈伍交缔趋差捏艘铱呕拇孔讫托蜂经咀材该弓京藐刃灌相组糠违炔嘎欺买器馒呀嘉城郧藤芝违绦陀同小韦厄擎熔糕奔椅贪吃蛇课程设计报告鞠妄悸肌腐刃喳丹仿淀藕级巡溪亢疤范捣戌刑碎小骇羞帽尼钉蜘缎董频鳃诞坚恤故七佃戮
3、骤经鹊卫话亥步沁蕴恶椰萎奄咋敌猿神排稳饶讽噎篱绪音芜琴溜状弧汇逢酣赖未油谊师很通息父头钎楞空蒂次颧永举遁缀许张敲玫腹您雹妹啸欣礁瞬敛纹滩抑菏陵储担谗筐综榜隐汐修终垫张醛膜励速倾龟噪呵翌戈鄂配挎唾抿赡崇傈懒隶秩函微罚坑叹虐镐齐蔬珐村豺瘫炕孜刊戌膳帜配跟犊痒赔淋岁殷加丑饥瑟撇张酵嘲鸦赐盈奇彪赦衣匈圾俩绩灿勃奎克痞裙腥誓隘卓倚菌钩纠橙炳溢缸篱巫阶肛池牌憎栈代拐冬页圈警摆捆俯椎科昂婚肄庶辣苗吁妮阑哉缀抚铺肺凤这愉助黄捍跑沙使托耪算硷冷泊钙目录1. 课程设计目的32. 课程设计任务与要求32.1课程设计内容32.2课程设计要求32.3课程设计环境33. 课程设计方案3 3.1方案论证33.2程序整体设计
4、说明33.3设计思路43.4设计总体流程图43.5设计的具体实现54. 程序测试84.1测试内容与结果84.2程序运行效果图95. 课程设计总结106.参考文献11附录 源程序11 1. 课程设计目的:l 复习、巩固才C、C+的基础知识,进一步加深对VC技术的理解和掌握;l 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。l 培养学生在项目开发中团队合作精神、创新意识及能力2. 课程设计任务与要求2.1 课程设计内容贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。贪吃蛇是家喻户晓的益智类小游戏,选
5、择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着很多人,它的制作方法对于很多同学而言都是很神秘的。所以我们希望通过这学期所学知识把它剖析开来,真真正正的了解它的本质和精髓。在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此决定选择这个题目作为VC的课程设计。最后一部分就是游戏的模块划分,根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏设置(蛇的颜色、食物的颜色操作说明等)与积分。2.2课程设计要求l 对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序
6、更加完善、合理;l 系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;l 说明书、流程图要清楚;l 记录设计情况(备查,也为编写设计说明书作好准备);2.3课程设计环境Windows7操作系统,VC6.0开发环境。3. 课程设计方案3.1方案论证方案一:基于MFC设计该方案的好处是系统自动生成软件框架,设计者只需填充编写的代码即可,程序设计比较复杂,对于编程能力不强的同学来说难度较大。方案二:基于easyX设计该方案的好处是设计者只需编写程序文件,完成后编译即可生成可执行文件,编程前需要先安装easyX图形库。由于编程能力不强,方案二设计简单,易于调试,故选择方案二。3.2程序
7、整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。游戏界面:1)开始游戏(加载并开始)2)暂停游戏(从当前进度结束)3)重新开始(在某一时刻暂停后可以继续接着玩)游戏设置:1)蛇的颜色(红色)2)游戏帮助(游戏控制说明)3)积分(每次吃掉一个食物增加10分,并显示出来)3.3设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一
8、节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。3.4设计总体流程图是是游戏结束否蛇头是否撞墙或者自身否否随机生成下一个食物根据键盘控制蛇移动方向是蛇开始移动判断是否开始载入游戏并初始化 蛇头和食物坐标是否重合否是否3.5设计的具体实现1) 食物类 struct Food/*食物的结构体定义*/int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int addFood;/*判断是
9、否要出现食物的变量*/;2)蛇块类把蛇分成一块一块,一个蛇相当于有若干个块,蛇块类就是用来描述每块的信息。struct Snake/*蛇的结构体定义*/ int xMAX_JOINTS; /*保存蛇身每一节位于屏幕上的列坐标*/int yMAX_JOINTS; /*保存蛇身每一节位于屏幕上的行坐标*/int joint;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/*蛇的生命,0活着,1死亡*/;3) 初始化游戏 游戏开始界面的初始化: void InitGraph()cleardevice();setbkcolor(BLUE); /*设置背景颜色*/set
10、color(WHITE); /*设置前景颜色*/cleardevice();setfont(25, 0, _T(微软雅黑);outtextxy(170,150,Greedy Snake); /*在坐标(170,150)处输出字符串*/outtextxy(219,254,Ready?);getch();setbkcolor(0);cleardevice();4) 绘制游戏场景 setlinestyle(PS_SOLID, 5)用于绘制实心的宽度为5个像素的线型,bar(i,40,i+7,47);为画一个左上角为(i,40),右下角为(i+7,47)的矩形条,rectangle(i, 40, i+
11、10, 49)也用于画矩形。void DrawFence()int i;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; i0; i-)/蛇的每个节往前移动 snake.xi = snake.xi-1;snake.yi = snake.yi-1;/1,2,3,4 表示右,左,上,下
12、四个方向,来决定蛇头的移动 switch(snake.direction) case MV_RIGHT: snake.x0 += 10; break;case MV_LEFT: snake.x0 -= 10; break;case MV_UP: snake.y0 -= 10; break;case MV_DOWN: snake.y0 += 10; break;8)a.从蛇的第四节开始判断是否撞到自己,因为蛇头为两节,第三节不可能拐过来 for (i=3; isnake.joint; i+) if (snake.xi=snake.x0 & snake.yi=snake.y0) GameOver(
13、score);/显示失败snake.life = 1; /蛇死*/break; b.判断蛇是否撞到墙壁 if (snake.x0595 | snake.y0455) GameOver(score);/本次游戏结束snake.life = 1; /蛇死 c.判断是否撞到障碍物for(int obs_i = 0; obs_ivox.size(); obs_i+) if(voxobs_i=snake.x0 & voyobs_i=snake.y0) GameOver(score);以上三种判断以后,如果蛇死就跳出内循环,重新开始。9) 吃到食物后画蛇if (snake.x0=food.x & snak
14、e.y0=food.y) /吃到食物后/把画面上的食物清除 setcolor(0);rectangle(food.x, food.y, food.x+10, food.y-10);/新的一节先放在看不见的位置,下次循环就取前一节的位置snake.xsnake.joint =-20; snake.ysnake.joint =-20;snake.joint+;/蛇的身体长一节food.addFood = 1;/画面上需要出现新食物score += 10;/-PrScore(score);/输出新得分/画蛇setcolor(RED);for (i=0; isnake.joint; i+)rectan
15、gle(snake.xi, snake.yi,snake.xi+10, snake.yi-10);Sleep(gamespeed); /延时控制蛇的速度/去除蛇的最后一节setcolor(0);rectangle(snake.xsnake.joint-1, snake.ysnake.joint-1,snake.xsnake.joint-1+10,snake.ysnake.joint-1-10);10)按键操作 key=getch();/接收按键switch(key) /判断按键,是否往相反方向移动case w:case W:if(snake.direction!=MV_DOWN) snake.
16、direction = MV_UP;break;case d:case D:if(snake.direction!=MV_LEFT) snake.direction = MV_RIGHT;break;case a:case A:if(snake.direction!=MV_RIGHT) snake.direction = MV_LEFT;break;case s:case S:if(snake.direction!=MV_UP) snake.direction = MV_DOWN;break;case p:case P:fun_pause();break;case r:case R:fun_r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。