欢迎来到天天文库
浏览记录
ID:33116917
大小:611.00 KB
页数:8页
时间:2019-02-20
《c++课程设计:贪吃蛇3》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:面向对象程序设计C++设计题目:贪吃蛇专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015年12月24日1.系统需求分析1.1、选题接到课程设计任务后,我对老师发布的几款游戏进行分析,选了最经典的贪吃蛇游戏,使用MFC类库可以完成贪吃蛇游戏的编译,我希望我能通过简单的贪吃蛇的游戏能够对MFC类的使用和复杂的算法充分的了解。1.2、功能使用MFC编译,预计实现游戏的开始暂停继续,以及随着时间的增加游戏难度的提升。2.总体设计2.1、设计思路最数据结构上,用数组存储蛇以及蛇的运
2、动区域。在数组中,每个元素都有四个运动方向,左、右、上、下()。在没有蛇身的区域,数组的元素值为0.在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向,通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动,到达多少格则加速。在设计界面时。在visualstudioc++6.0的环境下,建立基于对话框的工程,在工程下设计游戏界面,实现贪吃蛇的运行算法。在对话框中画出一个矩形,在矩形中用小方块表示每个蛇的节点,当数值不为0时,在矩形中画出相应的蛇的节点矩形。并在蛇每移动一小格
3、的时候,重绘每个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断舌头是否到达失误所在位置,若是食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不在食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束。3.详细设计3.1、分析与设计3.1.1游戏处理流程如图1所示:进入游戏画面点击开始菜单,游戏开始,蛇开始移动咬到自己尾巴或者碰到墙壁游戏中途欲退出单击游戏界面x按钮游戏结束图1游戏流程设计3.2、函数
4、说明AppWizard创造了这条蛇给你。这个应用程序不仅展示了使用微软基础类的基本知识但也编写应用程序的起点。这个文件包含的总结你会发现在每一个文件贪吃蛇的应用程序。snake.dsp这个文件(项目文件)包含在项目水平和信息用于构建单个项目或子项目。其他用户可以共享项目(.dsp)文件,但他们应该在本地出口makefile。snake.h这是主要为应用程序头文件。它包括其他项目(包括Resource.h)和声明了特定的headerCSnakeApp应用程序类。snake.cpp这是主应用程序源文件,其
5、中包含应用程序类CSnakeApp。snake.rc这是一个清单的MicrosoftWindows资源程序使用。它包括图标,位图,游标存储在RES目录。这个文件可以直接编辑在微软Visualc++。Snake.clw这个文件包含ClassWizard用来编辑现有的信息类或添加新类ClassWizard也使用这个文件来存储信息需要创建和编辑对话框消息映射和数据地图和创建原型成员函数。ressnake.ico这是一个图标文件,用作应用程序的图标。这snake.rc图标由主要包源文件。ressnake.
6、rc2这个文件包含资源被微软无法编辑Visualc++。你不应该把所有资可编辑的资源编辑器在这个文件中。3.2、主框架窗口:MainFrm.h,MainFrm.cpp这些文件包含CMainFrame框架类,这是来自CFrameWnd和控制所有SDI框架功能resToolbar.bmp这个使用位图文件创建平铺的图片工具栏。最初的工具栏和状态栏CMainFrame构造类。使用资源编辑器编辑这个工具栏位图,工具栏更新IDR_MAINFRAME数组在snake。rc添加工具栏按钮。AppWizard创建一个
7、文档类型和一个视图:CsnakeDoc。h,snakeDoc。cpp-文档这些文件包含CSnakeDoc类。编辑这些文件添加特殊的文档数据和实现文件保存和加载(通过CSnakeDoc:序列化)。snakeView。h,snakeView。cpp文档的视图这些文件包含CSnakeView类。CSnakeView对象是用于查看CSnakeDoc对象。其他标准文件:StdAfx.h,StdAfx.cpp这些文件是用来建立一个预编译头文件(PCH)叫snake。名叫StdAfx.objpch和预编译类型文件。
8、Resource.h这是标准的头文件,它定义了新的资源id。3.系统调试4.1界面调试4。2怎么解决贪吃蛇食物与蛇身重合的问题?如果你是吃到食物就产生一个新食物,会有一个小问题。当蛇身特长时,产生一个食物就很困难,因为随机产生的,有极大可能食物又在蛇身上。这样会造成游戏顿卡。如何解决这个问题?把这个顿卡的时间分散到蛇的每个动作,然后停顿时间减小。不知你是怎么做的,一般都会使用一个二维数组,然后对二维数组操作。我的解决方法是在维持一个二维数组的同时维持一个
此文档下载收益归作者所有