《贪吃蛇游戏程序设计实验报告》由会员分享,可在线阅读,更多相关《贪吃蛇游戏程序设计实验报告(11页珍藏版)》请在人人文库网上搜索。

1、Windows编程大作业贪吃蛇设计与实现学 校:武汉轻工大学 院 系:班 级: 姓 名: 学 号: 2015 年12月16日目录1、 题目介绍2、 设计目的3、 详细设计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核心设计4、 功能测试5、 总结6、 参考文献一、题目介绍:编写一个基于MFC的小游戏。基本要求:1、实现一个小游戏2、实现基本游戏控制功能3、具有游戏数据保存功能4、界面布局合理、美观;2、 设计目的:通。

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);pD。

5、C-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);AfxMe。

6、ssageBox(已暂停游戏);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 F。

7、ALSE;/ 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 nati。

8、ve 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 a。

10、nd/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, nRe。

11、pCnt, 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=462|Snake0.y*20=462)KillTimer(1);AfxMessageBox(soure);/ s=0;/蛇身相撞判断if(。

13、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=Snak。

14、e0.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)Snake0.x+;pDC-SelectStockObject(BLACK_PEN);CBrush DrawBrush=(RGB(100,100,100);CBrush *Drawbrush=pDC-SelectObject(&DrawBrush);pDC-Rec。

15、tangle(Snake0.x*20,Snake0.y*20,(Snake0.x+1)*20,(Snake0.y+1)*20);pDC-SelectObject(DrawBrush);/判断吃食物的条件,撞到就吃if(Snake0.x*20=Food.x*20&Snake0.y*20=Food.y*20)Snake0.len+;Food.isfood=1;SnakeSnake0.len-1.x=SnakeSnake0.len-2.x;SnakeSnake0.len-1.y=SnakeSnake0.len-2.y;/如果食物被吃了 就生成if(Food.isfood=1)srand(unsign。

16、ed)time(NULL);dofor(int isfo=Snake0.len-1;isfo=0;isfo-)if(Snake0.x*20=Snakeisfo.x*20&Snake0.y*20=Snakeisfo.y*20)Food.x=rand()%25;Food.y=rand()%25;while(Food.x*20430|Food.y*20430);pDC-Rectangle(Food.x*20,Food.y*20,(Food.x+1)*20,(Food.y+1)*20);Food.isfood=0;CView:OnTimer(nIDEvent);4、 功能测试4.1游戏界面4.2游戏开。

17、始4.3游戏正在进行4.4游戏暂停4.5游戏退出4.6最后得分4.7关于SNAKE5、 总结随机数生成函数rand()的应用在贪吃蛇游戏中是一个关键步骤,通过不断的循环和调用,能保证游戏的持续进行和更新,其实不止是贪吃蛇,在大多数需要随机生成元素的游戏中,都可以用rand()函数生成随机数,再控制坐标等变量实现“随机生成”功能。通过这一次课程设计,我最大的收获就是分析问题解决问题能力的提高,发现问题,而后解决问题是生活的永续循环,这种能力会伴随我们一生;其次,程序的开发给了我很多经验,相信时间充裕的话,我能独立开发一个小游戏;最后,老师提出的对设计报告的种种要求也为我以后的各种报告的规范性做好了心理准备。 总的来说MFC程序使用了微软的基本类库,让程序设计变得简单,但是一定程度上造成了代码冗余,程序效率降低,MFC入门简单,但提升有一定难度。MFC只是C+的一部分,我并没有写了过多的C+代码,很多代码是很相似的,可能因为我是初学者的缘故,另外我比较喜欢对C+模板类或者可重用的类的设计,这更符合C+批量成产的风格。6、 参考文献维基百科百度知道Visual C+ 程序设计与应用教程Windows程序设计Windows API详解。

c语言设计贪吃蛇实验报告,贪吃蛇游戏程序设计实验报告相关推荐

  1. c语言实验转换字母顺序结构,实验1顺序结构的程序设计-实验报告.doc

    实验1顺序结构的程序设计-实验报告 实验1 顺序结构的程序设计 每人在D盘建立自己的文件夹(学号+姓名)如D:\00001王菲,所编写的程序文件和实验报告就放在这个文件夹里,成果提交时将文件夹压缩传到 ...

  2. 组数游戏c语言程序报告,c语言组数游戏程序设计实习报告.docx

    c语言组数游戏程序设计实习报告 C程序设计实习报告题目:组数游戏学院:机电学院专业:机械设计制造及自动化姓名:张庆远班级学号:20091002559指导教师:薛思清目录第一章:题目要求1.1:要求1. ...

  3. c语言猜拳游戏实训报告,Java猜拳小游戏程序设计实验报告.doc

    Java程序设计实验报告 班级: 学号: 姓名: 实验题目:猜拳小游戏 实验要求: 用java编写一个人机对战的猜拳小游戏.人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况.有简单的操作界面. 实验 ...

  4. 销售管理系统c语言实验报告,汽车销售信息管理系统程序设计实验报告.DOC

    汽车销售信息管理系统程序设计实验报告.DOC 汽车销售信息管理系统程序设计实验报告 姓名:宁蒙 班级:2009211128班 学号 班内序号:25 手机 邮箱:691342444@ 此次我们小学期需要 ...

  5. ## 计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验三 HTML网页设计

    .NET程序设计 实验三 HTML网页设计 一.实验目的: 1.熟练掌握HTML的基本语法. 2.掌握使用记事本进行简单网页编辑的方法. 3.熟练掌握使用Dreamweaver 8插入主要HTML元素 ...

  6. c语言在测绘工程中的作用,测绘C程序设计实习报告

    <测绘C程序设计实习报告>由会员分享,可在线阅读,更多相关<测绘C程序设计实习报告(28页珍藏版)>请在人人文库网上搜索. 1.测绘工程(c版)实习报告学位:名字:班级:专业: ...

  7. linux实验报告山东科技大学,-linux程序设计实验报告

    -linux程序设计实验报告 (31页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 实 验 报 告课程名称: Linux程序设计 学 院: ...

  8. python上机实验报告读取文件_Python程序设计实验报告:实验八 文件

    安徽工程大学 Python程序设计 实验报告 班级 物流192姓名陶俊 学号3190505235 成绩 日期 2020.6.3 指导老师修宇 实验八 文件 [实验目的] 掌握读写文本文件或 CSV 文 ...

  9. python上机实验报告读取文件_Python程序设计实验报告八 : 文件

    安徽工程大学 Python程序设计 实验报告 班级 物流192 姓名凌剑涛 学号 3190505233成绩 日期2020.6.3 指导老师 修宇 实验八 文件 [实验目的] 掌握读写文本文件或CSV文 ...

最新文章

  1. VS2010数据库项目不能正常工作解决方案
  2. python应该怎么自学-新手该如何学python怎么学好python?
  3. 5下载的demo在哪_归类专业能力水平评价练习盘!快来下载呀
  4. 2018年秋计算机基础在线作业,《计算机应用基础》2017年的秋学期在线作业三.doc...
  5. boost::biconnected_components用法的测试程序
  6. 一加3 CM13 12306 不能用
  7. C++虚继承(八) --- 虚继承与继承的差异
  8. 聊聊风口上的 eBPF
  9. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  10. A Simple Problem with Integers POJ - 3468(线段树+区间查询+区间修改+建树+懒惰标记模板)+(树状数组)
  11. 【CodeForces - 246D】Colorful Graph (暴力,图,存边,STL)
  12. Linux学习Vim使用及账号用户管理
  13. Centos6.4下zabbix的安装配置
  14. android 生命周期管理,Android Activity生命周期和堆栈管理的详解_Android_脚本之家...
  15. WCF 第二章 契约 系列文章
  16. 天然纤维复合材料行业调研报告 - 市场现状分析与发展前景预测
  17. 实现JPA的懒加载和无外键
  18. 电动车的蓄电池与锂电池
  19. linux 清屏函数
  20. tomcat 多webpp的设置和访问过滤

热门文章

  1. 工业相机的帧频和行频
  2. 转: angularjs学习总结(~~很详细的教程)
  3. 图书馆借阅代码Java_java图书馆管理系统源代码 图书借阅和归还管理
  4. MySQL(学生表、教师表、课程表、成绩表)多表查询
  5. Android实战简易教程-第五十枪(工具类的测试)
  6. 闲鱼架构专家,详解亿级C2C电商平台,商品体系架构如何搭建?
  7. DB2日期时间型数据类型介绍
  8. Python3的基本数据类型
  9. 《构建之法》第1、2、16章阅读与思考
  10. 英语知识点整理day07