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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

测试C课程设计贪吃蛇.docx

1、测试C课程设计贪吃蛇【关键字】测试迷宫贪吃蛇用户签名: 开发成员: 开发时间: 1.引言(3)2.工作计划(3)1.1 主要任务阶段划分(3)1.2 工作任务分工(3)3.需求分析(4)2.1 概述(4)2.2 用户分析(4)2.3 约束条件(4)2.4 功能需求(4) 2.5 用户界面需求(5)4.设计与实现 (5)3.1 概述 (5) 3.2 详细设计(5)类的抽象与设计(5) 3.3 主要程序文件(6) 3.4开发环境以及部署环境要求 (8) 3.5主要源码 (8)5.尝试(12)4.1 概述(12)4.2 尝试环境(12)4.3 尝试计划(12)4.4尝试项目及结果 (12)6.工作总

2、结(13)5.1 工作成果(13)5.2 过程分析(13)5.3 经验教训及其分析(13)0引言由于传统的贪吃蛇只是在一个宽阔的用户区进行游戏。对于蛇只是在区域四周有障碍墙壁,这样也许在一开始不会有太大的难度和成就感。又由于人们曾经也钟爱一种迷宫游戏,它主要是考察玩家的观察力,看能否在最短的时间里走出迷宫。基于以上两个游戏,我们准备利用本学期学到的windows界面程序设计方法将两个游戏有机结合起来,使用户既能体验贪吃蛇中看着蛇身不断加长而绕出各种折线的成就感,又能感受到在迷宫中找寻出路的紧张心情,而且迷宫的出现使蛇遇到的障碍遍布游戏区,这样用户就更能展示一下自己操作的高水平。1 工作计划1.

3、1主要工作阶段划分项目名称时间安排需求分析2009.12.72009.12.8设计与实现2009.12.82009.12.10测试与维护2009.12.102009.12.121.2工作任务分工阶段名称任务名称任务描述负责人协助人 需求分析现有游戏的分析对现有的贪吃蛇游戏进行分析趣味性分析对游戏的趣味性、休闲性分析功能需求对游戏的功能、方式进行分析设计与实现系统结构设计游戏的功能、结构分析界面设计用户与游戏交互的设计编码实现具体的编程实现测试与维护功能测试对游戏的功能进行测试性能测试对游戏的性能进行测试2需求分析2.1概述本人进行了对现有游戏代码的分析,借鉴了其中的部分实现思想,进而在组内进行

4、讨论,根据我们的需求参与了程序中两个主要类的设计及类中接口的功能定义。并实现了CTable类的代码;实现了对游戏界面框架的部分搭建,诸如对话框的实现等均有本人根据自己的现有知识,再加上网上查些信息、查看MSDN进行编写,而实现的接口则预留出来等待后期的具体核心代码来调用;对游戏进行了测试,发现了问题并通过老师的帮助进行了解决。2.2用户分析1.该游戏至少支持贪吃蛇的基本玩法,创新可以有,但贪吃蛇游戏的经典玩法是不能少的;2.该游戏对键盘输入要有较快的反应速度;3.该游戏界面要漂亮一些;4.该游戏要支持速度选择;5.该游戏运行要比较稳定。2.3 约束条件1.该游戏比较简单,要求在一周进行进行完从

5、分析到设计到编码再到测试;2.提交游戏要有相应的文档。2.4功能需求1.贪吃蛇的基本玩法:即可以用上、下、左、右键控制游戏区蛇的运动方向,使之向着食物方向运动,并吞吃食物使身体增长;2.调节蛇的运动速度:即用户可以调节蛇的运动速度来选择不同的难度;3.选择关卡功能:即游戏分多个难度级别(关卡),用户可以选择不同的难度级别进行游戏;4.背景颜色变换功能:即用户可以选择一种自己喜欢的颜色作为游戏区的背景色,避免对一种颜色产生视觉疲劳。2.5用户界面需求1.选择速度和关卡最好不用人手工输入,只是用鼠标点一点2.界面的有些东西最好可变,不要总是一种界面,让用户自己选择也可以。3设计与实现3.1概述1.

6、界面的设计只是体力活和个人审美的问题,没有什么深奥的问题。虽说本游戏比较简单,但也是有其核心思想的。2.本游戏的核心代码即处理蛇的运动吃食的思路是:把游戏区纵横分成许多小方格,每一个小方格的属性可以是蛇身、食物、空白、墙壁几个属性之一。蛇运动时用一个数组结构记录蛇的各个蛇身所处的小方格坐标,通过对坐标的处理使蛇的位置不断变化,反应在游戏区中即蛇在不断运动。3.2详细设计基于需求的分析,该游戏主要由两个类构成:蛇类用于处理蛇的运动等操作;桌子类用于对桌面上的墙、蛇、食物进行控制。class CSnakeprivate: int m_length; /蛇的长度 SPoint* m_pOldPos;

7、 /移动前的位置 SPoint* m_pNewPos; /移动后的位置 MoveState m_oldHeadDir; /蛇头旧的运动方向 MoveState m_newHeadDir; /蛇头新的运动方向 bool m_bSnakeDied; /蛇是否还存活 int m_oldLength; /蛇的上一状态长度 public: Object Move(); /蛇的运动函数 void ChangeDirect(MoveState Direction); /改变蛇的运动方向 int GetLength(); /得到蛇当前长度 SPoint* GetOldPos(); /得到蛇上一状态坐标数组 S

8、Point* GetNewPos(); /得到蛇新状态坐标数组 MoveState GetHeadDir(); /得到蛇头方向 void SetDied(bool died); /设置蛇的生死 void InitSnake(); /初始化蛇 int GetOldLength(); /得到蛇上一状态长度 void IsAddBody(); /判断是否增加蛇身长度 CSnake(); /构造函数 CSnake(); /析构函数;class CTableprivate: int m_width; /桌子宽 int m_height; /桌子高 CSnake m_snake; /桌子上的蛇 int*

9、m_board; /桌子各位块状态public: CTable(); /构造函数 CTable(); /析构函数 void InitTable(); /初始化桌子 bool AddFood(); /随机增加食物 bool Clear(); /清除桌子 void SnakeMove(); /蛇移动 void ChangeSnakeDir(MoveState dir); /改变蛇运动方向 bool IsSnakeDied(); /判断蛇是否死亡 void SnakeDied(HWND hwnd); /蛇死亡 CSnake* GetSnake(); /得到蛇坐标数组 int* GetBoard();

10、 /得到桌子数组;3.3 主要程序文件头文件有Map.h,其中只是保存游戏区二维数组中各个位置的属性信息,如果要更改地图布局,只需更改数组中的数字即可,数字的含义在全局变量中都有定义:enum ObjectEMPTY, FOOD, WALL, SNAKE; /标识物体头文件SnakeGame.h中主要定义了来两个主要的类CSnake、CTable;实现文件SnakeGame.cpp中对了类中定义的函数以及一些全局的处理函数进行了实现。主要类只有两个,即CSnake类和CTable类,其全部成员变量即成员函数已在上面一一列举,在这里针对一些主要的数据结构和处理方法进行说明:struct SPoi

11、nt int x; int y; /蛇的一个结点的坐标位置结构,该类型变量用于记录蛇的一节身体在一个二维数组中的下标值,即蛇身在桌子上的格子的横向和纵向的位置class CSnakeprivate:SPoint* m_pOldPos; /移动前的位置,该变量为一个数组的指针,数组在蛇的初始化函数中/分配 SPoint* m_pNewPos; /移动后的位置,同上。这两个变量是用于在更新蛇的坐标时将用旧的 /蛇身坐标来计算新的蛇身坐标用的 MoveState m_oldHeadDir; /蛇头旧的运动方向 MoveState m_newHeadDir; /蛇头新的运动方向,这两个变量的作用是用于

12、判断新的蛇头运动方 /向是否与旧的运动方向相反的,相反是不允许的 public: Object Move(); /蛇的运动函数 /*说明:该函数用于在定时器到达时对蛇的身体各段进行变化处理,处理过程为将未更新前蛇的各点坐标保存在旧态中,根据移动方向改变蛇头坐标值,然后判断新的蛇头所在方格的属性并返回给CTable类处理*/ void ChangeDirect(MoveState Direction); /改变蛇的运动方向 /*说明:根据传进来的方向值改变蛇头方向,但不能跟当前蛇头方向相反*/ void InitSnake(); /初始化蛇 /*说明:用于在游戏中再次初始化蛇,只需设置蛇的初始两

13、个身体坐标,初始运动方向,设置游戏开始即可*/ void IsAddBody(); /判断是否增加蛇身长度 /*说明:用于在分配给蛇身坐标数组填充满时再一次性多分配若干个长度的空间*/;class CTableprivate: int* m_board; /桌子各位块状态,这是一个二维数组,其中用于填充桌子各方格的属性public: void InitTable(); /初始化桌子,针对不同的游戏难度级别从Map.h中调入不同的地图 bool AddFood(); /在桌子上空白区域随机增加一个食物 bool Clear(); /清除桌子上除了墙以外的其他方格的属性 void SnakeMove(); /蛇移动,只要调用CSnake的相应函数就可以了,根据返回的蛇头位置属性 /信息对蛇的坐标进行变换 ;3.4开发环境以及部署环境

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

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