文档库 最新最全的文档下载
当前位置:文档库 › 贪吃蛇游戏设计报告

贪吃蛇游戏设计报告

贪吃蛇游戏设计报告
贪吃蛇游戏设计报告

青岛理工大学琴岛学院

设计报告

课题名称:贪吃蛇游戏设计

学院:青岛理工大学琴岛学院专业班级:计算机网络技术091 学号:0017

学生:王三鹏指导教师:张秀国、宋传磊

青岛理工大学琴岛学院教务处

2010 年12 月29 日

目录

需求分析

、设计说明........................ 4?…

1.设计思路...................... … ....

2.程序框图……………………………………5 ………

3.主要函数……………………………………7 ………

三、代码实现..................... 6 .....

1.构造函数............................................. (6)

2.放置食物............................................. (6)

3.碰撞检测............................................. (7)

四、问题解决.................... 9 ......

五、总结展望.................... 10 .....

六、参考文献

10

一、需求分析

1.选题

接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,

然后发现使用MFC 类库都可以完成这些游戏的编译,但是我们刚刚学习,还不能完全掌握MFC 类的使用和复杂的算法,但是我们相信通过一个简单的贪吃蛇游戏可以让我们对MFC得到充分的锻炼。

2.功能

使用MFC编译的游戏,我们预计实现游戏的开始、暂停、继续、等级的提升、难度的增加。

3.重要的MFC

1)CWnd:窗口,它是大多数看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图

CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮

CButton,etc; —个例外是菜单(CMenu)不是从窗口派生的。

2)CDocument 文档,负责内存数据与磁盘的交互。最重要的是

On Ope nDocume nt(读入),0n SaveDocume nt (写盘)‘Serialize (读写)

3)CView 视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),

通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。

4)CDialog 对话框

5)CPen 笔,画线

6)CBrush 刷子,填充

7)CBitmap 位图

8)CRgn区域,指定一块区域可以用于做特殊处理。

9)CString字符串。封装了C中的字符数组,非常实用。

10)CPoint 点,就是(x,y)对

11)CRect 矩形,就是( left,top,right,bottom ) 二、总体设计说明

1.设计思路在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感动方向,分别为RIGHT丄EFT,UP,DOW在没有蛇身的区域,数组的元素值为0。在蛇

身的每个节点,用一个数组元素存储当前蛇节点的运动方向。通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。

在设计界面时。在Visual Studio C++勺环境下,建立基于对话框的工程,在工程下设计游戏界面,实现贪食蛇运行算法。在对话框中画出一个矩形,在大矩形中,用

20x20的像素单位表示每一个蛇的节点。当数组节点的值不为0的时候,在大矩形中画出相应的蛇的节点矩形。并在蛇每移动一小格的时候,重绘整个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。

在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不在食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束。

2.程序框图

操作控制:如图 1 所示

游戏控^1]模块

游戏控制:如图2所示

FM HTTI tn IF

图2

3?主要函数和变量:如表1表2所示

表主要函数和变量

三、代码实现

1.构造函数:

通过定义构造函数CSnakeView::CSnakeView()调用IniGame()实现游戏界

面的初始化,为开始游戏做好准备,所以在开始进行游戏之前,游戏界面

就已经显示完整。

CSn akeView::CS nakeView()

{

In iGame();

相关文档