资源描述:
《贪吃蛇计算机实习报告 北京邮电大学》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2012年计算机实习报告计算机实习报告姓名:xxx班级:xxx学号:xxx小班序号:xxx指导老师:xxx题目:MFC简易贪吃蛇程序邮箱:xxx92012年9月9日2012年计算机实习报告MFC简易贪吃蛇程序实验报告一.功能说明1.1总体功能说明主要功能为实现MFC简易贪吃蛇游戏的运行。具体功能:1、能够实现游戏的开始、暂停、继续和结束;2、能够显示游戏成绩;3、在贪吃蛇蛇身的加长过程中,通过改变蛇爬行的速度来改变游戏难度。4、游戏结束可重新开始游戏;5、能够显示贪吃蛇和食物所处的坐标。主要特色为运用MFC编程,游戏界面友好,简洁、操作简单易懂,快捷键操作使游戏的暂停和继续更
2、为方便,使得玩家在操作过程中感到轻松愉快。1.2用户界面游戏运行时:游戏结束时:92012年9月9日2012年计算机实习报告显示鼠标处坐标:游戏主界面如上图。实现游戏的所有功能:游戏的开始、运行、暂停、继续和退出。显示鼠标点击处坐标1.3使用方法单击“开始游戏”,弹出对话框“3秒之后开始游戏”,点按确定之后蛇开始移动。通过键盘的“↑”“↓”“←”“→”可控制蛇的移动,每吃一个食物增加一节蛇身长度。游戏过程中可通过“游戏”下拉菜单中选择“暂停”暂停游戏并继续游戏。若撞到边界或撞到蛇身游戏结束,弹出对话框提示得分情况,游戏结束。可通过点击“开始游戏”重新开始游戏。游戏难度通过控制
3、蛇的移动速度来实现,随蛇身长度的增加而增加。蛇身长度每增加三节到五节,速度增加一次。二.程序设计说明具体模块划分:92012年9月9日2012年计算机实习报告1 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇头的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。2 用数组初始化长度为3的贪吃蛇,并且默认食物未出现3 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等
4、,其中还包括根据蛇的长度来进行游戏难度的改变。5 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。添加、设计控件设计游戏主体定义蛇类和食物类对函数添加代码对控件添加代码蛇身的移动、转向蛇身的增长、变速食物的判断及产生2.2关键算法描述//根据蛇的长度设计游戏难度92012年9月9日2012年计算机实习报告CStringsoure;if(Snake[0].len==3)SetTimer(1,300,NULL);if(Snake[0].len==8)SetTimer(1,250,NULL);if(Snake[0
5、].len==13)SetTimer(1,200,NULL);if(Snake[0].len==18)SetTimer(1,150,NULL);if(Snake[0].len==23)SetTimer(1,100,NULL);if(Snake[0].len==28)SetTimer(1,95,NULL);if(Snake[0].len==33)SetTimer(1,90,NULL);if(Snake[0].len==38)SetTimer(1,80,NULL);if(Snake[0].len==45)SetTimer(1,60,NULL);if(Snake[0].len==5
6、0)SetTimer(1,55,NULL);if(Snake[0].len==55)SetTimer(1,50,NULL);if(Snake[0].len==60)SetTimer(1,45,NULL);if(Snake[0].len==65)SetTimer(1,40,NULL);if(Snake[0].len==75)SetTimer(1,35,NULL);if(Snake[0].len==100)SetTimer(1,25,NULL);if(Snake[0].len==400)SetTimer(1,10,NULL);soure.Format("Gameover得分:%d
7、!",(Snake[0].len-3)*10);//游戏结束时输出文本//撞界判断if(Snake[0].x*20<=45
8、
9、Snake[0].y*20<=45
10、
11、Snake[0].x*20>=630
12、
13、Snake[0].y*20>=630){KillTimer(1);AfxMessageBox(soure);}//蛇身相撞判断if(Snake[0].len>3)for(intsn=Snake[0].len-1;sn>0;sn--){if(Snake[0].x*20==Snake[sn].x*20&&S