ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:380.50KB ,
资源ID:395385      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/395385.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇游戏程序设计实验报告.doc)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇游戏程序设计实验报告.doc

1、Windows编程大作业贪吃蛇设计与实现 学 校:武汉轻工大学 院 系:班 级: 姓 名: 学 号: 2015 年12月16日目录一、 题目介绍二、 设计目的三、 详细设计3.1贪吃蛇本体设计3.2贪吃蛇食物设计3.3游戏界面设计3.3.1游戏初始化3.3.2游戏开始3.3.3游戏暂停3.3.4游戏退出3.3.5游戏总界面3.3.6游戏区域与背景3.3.7关于SNAKE3.4玩法规则设计3.5核心设计四、 功能测试五、 总结六、 参考文献一、题目介绍:编写一个基于MFC的小游戏。基本要求:1、实现一个小游戏2、实现基本游戏控制功能3、具有游戏数据保存功能4、界面布局合理、美观;二、 设计目的:

2、通过使用vc+6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。三、详细设计3.1贪吃蛇的本体设计贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下:struct Snakeint x,y;int len;int direct;Snake50;3.2贪吃蛇食物设计贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示

3、食物还没被吃,为1时,表示被吃。struct Foodint x;int y;int isfood;Food;3.3游戏界面设计3.3.1游戏初始化游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;void CSNAKEView:OnInitialUpdate() CView:OnInitialUpdate();Snake0.x=10;Snake0.y=10;Snake1.x=11;Snake1.y=10;Snake2.x=12;Snake2.y=10;Snake0.direct=3;Snake0.len=3;Food.isfood=1;/初始化

4、贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为 1无0有/ TODO: Add your specialized code here and/or call the base classvoid CSNAKEView:oninit()CDC *pDC=GetDC();CBrush DrawBrush=(RGB(100,100,100);CBrush *Drawbrush=pDC-SelectObject(&DrawBrush);for(int i=0;iRectangle(Snakei.x*20,Snakei.y*20,(Snakei.x+1)*20,(Snakei.y+1)*20);p

5、DC-SelectObject(DrawBrush);3.3.2游戏开始点击游戏开始菜单后,出现一个对话框,提示一秒后,将开始游戏。void CSNAKEView:OnStart() / TODO: Add your command handler code hereSetTimer(1,1000,NULL);AfxMessageBox(1秒后开始游戏!);3.3.3游戏暂停点击游戏暂停菜单后,出现显示“已暂停游戏”的对话框。void CSNAKEView:OnPause() / TODO: Add your command handler code hereKillTimer(1);AfxM

6、essageBox(已暂停游戏);3.3.4游戏退出点击游戏退出菜单,显示“退出游戏”的对话框,随后关闭游戏界面。void CSNAKEView:OnExit() / TODO: Add your command handler code hereAfxMessageBox(退出游戏.);exit (0);3.3.5游戏总界面大小设计使用CMainFrame的PreCreateWindow函数对总界面进行初始化。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return

7、FALSE;/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT cscs.style &= WS_OVERLAPPED;cs.cy = 615;cs.cx = 530;return TRUE;3.3.6操作游戏界面大小及背景色设计将背景色设置为黑色,并将游戏区域显示出来。void CSNAKEView:OnDraw(CDC* pDC)CSNAKEDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for nat

8、ive data hereCBrush backBrush(RGB(0,0,0);/设置画刷为希望的背景色CBrush* pOldBrush = pDC-SelectObject(&backBrush);/保存旧画刷CRect rect;pDC-GetClipBox(&rect);/擦除需要的区域pDC-PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),PATCOPY);/用创建的画刷绘制背景区域pDC-SelectObject(pOldBrush);pDC-Rectangle(19,19,501,501);/设置需要区域的起始坐标

9、和长宽。oninit();3.3.7版权所有点击帮助中的关于SNAKE,或者点击,会显示对话框-版权归刘坤炜所有。3.4玩法规则设计当按键盘上的“上”“下”“左”“右”键时,蛇体方向的改变。按“上”时,如果蛇的方向不是朝下的,就将direct方向置为1,使其向上运动,当然如果本身就是向上运动的,那么蛇的运动方向没有变化;如果蛇的方向朝下,按上,则不能改变它的方向。其他按法与上类似。void CSNAKEView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here

10、and/or call defaultswitch(nChar)case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;break;/按上时,只要不是朝下,都将方向置为上(1) case VK_DOWN:if(Snake0.direct!=1)Snake0.direct=2;break;case VK_LEFT:if(Snake0.direct!=4)Snake0.direct=3;break; case VK_RIGHT:if(Snake0.direct!=3)Snake0.direct=4;break;CView:OnKeyDown(nChar, nR

11、epCnt, nFlags);3.5游戏核心设计当碰到白色区域的任何一边或者自己撞到自己的身体时,游戏结束,并输出自己所得分数。根据蛇的运动方向来改变蛇的一个个身体部分坐标。根据蛇头的坐标来判断是否吃到了食物,若吃到,将蛇的长度加1,食物的标志置为1,表示被吃,并且当食物标志为1时,随机生成下一个食物的坐标,此坐标必须要在游戏区域内,不在就循环生成,直到满足条件,并将标志置为0。void CSNAKEView:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultCDC *pDC

12、=GetDC();CString soure;if(Snake0.len=2)SetTimer(1,370,NULL);if(Snake0.len=3)SetTimer(1,270,NULL);if(Snake0.len=6)SetTimer(1,200,NULL);if(Snake0.len=9)SetTimer(1,100,NULL);soure.Format(得分:%d!,(Snake0.len-3)*10); /撞界判断if(Snake0.x*20=37|Snake0.y*20=462|Snake0.y*20=462)KillTimer(1);AfxMessageBox(soure);

13、/ s=0;/蛇身相撞判断if(Snake0.len3)for(int sn=Snake0.len-1;sn0;sn-)if(Snake0.x*20=Snakesn.x*20&Snake0.y*20=Snakesn.y*20)KillTimer(1);AfxMessageBox(soure);/ s=0;/pDC-SelectStockObject(WHITE_PEN);pDC-Rectangle(SnakeSnake0.len-1.x*20,SnakeSnake0.len-1.y*20,(SnakeSnake0.len-1.x+1)*20,(SnakeSnake0.len-1.y+1)*20);for(int i=Snake0.len-1;i0;i-)Snakei.x=Snakei-1.x;Snakei.y=Snakei-1.y;/运动方向判断if(Snake0.direct=1)Snake0.y-;if(Snake0.direct=2)Snake0.y+;if(Snake0.direct=3)Snake0.x-;if(Snake0.direct=4)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1