版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一:项目计划、分析和设计实验日期2010年6月8日实验目的初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、项目计划表、设计文档。本程序实现的主要技巧在二维数组的应用上。目的是通过游戏程序增加编程的兴趣,提高编程水平。实验内容根据编写贪吃蛇程序,掌握软件工程思想及要领,进一步巩固编程思想和掌握画图函数底层,依据项目可行卜t研究的结果,进行需求分析和设计,编写简要的需求规格说明书,绘制程序流程图。实验原理和步骤当前的建模方法主要有传统的结构化分析、设计方法(SA/D和面向对象分析、设计方法(OOA/D两种,以下只对SA/D进行说明。分析阶段:结构化分析(SA是
2、一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。结构化分析方法的实质是采用一组分层数据流图及相应的数据字典作为系统的模型,从总体来看是一种强烈依赖数据流图的自顶向下的建模方法。由事件列表、数据流图、实体关系图、数据流定义、数据字典、结构化英语、状态转换图等最终构成系统的分析模型。分析阶段的重要文档有可行性研究报告、项目计划和需求规格说明。设计阶段:分总体设计和详细设计两阶段。总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务
3、主要是设计每个模块的处理过程。总体设计又称为概要设计或初步设计,它的基本目的就是回答概括地说,系统应该如何实现?”这个问题。总体设计通常由系统设计和结构设计两个阶段组成。系统设计阶段确定一个合理的、具体的实现方案;结构设计阶段确定软件的结构,即确定系统由哪些模块组成,以及这些模块之间的相互关系。常用的结构化设计(SD方法有面向数据流分析(DFA的设计方法和面向数据的设计方法【如Jackson方法(JSD和逻辑构造程序方法(LCP(一般用于详细设计】。DFA方法以数据流图为基础,它定义了把DFD(变换型数据流,事务型数据流及混合型变换成软件结构图(SC的不同映射方法。DFA设计技术实施的通用步骤
4、(1复查并精化DFD;(2确定DFD类型;(3把DFD映射到系统模块结构,设计出模块结构的上层;(4基于DFD逐步分解高层模块,设计出下层模块初步结构;(5根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6模块接口描述;(7修改和补充数据词典;(8制定测试计划。详细设计阶段的任务主要是确定每个模块的处理过程,包括(1确定每个模块的算法。(2确定每一个模块的数据组织。(3为每个模块设计一组测试用例。(4编写详细设计说明书。详细设计阶段采用的方法是结构化程序设计(SP,与SA,SD方法衔接。目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。具体步骤是:准备项目计划表、代码复查检查
5、表、时间记录日志、缺陷记录日志等表格;程序功能陈述,完成需求文档;填写项目计划表;完成设计文档,填写时间记录日志。实验报告要求一、需求规格说明书1、引言1.1 编写目的为明确软件需求、安排项目规划与进度、组织软件开发与测试,进一步定制软件开发的细节问题撰写此文档,以使本软件开发更为具体,明确,使开发人员更为方便也便于以后软件的维护。本文档面向的读者主要是委托单位的管理人员、项目经理以及开发人员和维护人员。1.2 背景待开发的系统软件是一款名叫贪吃蛇的小游戏,这款游戏是你叫简单、大家比较喜爱的小游戏,该软件的实现对运行的环境较为宽松,该游戏的提出者与实现者为李东,面向对象为广大玩家。1.3 定义
6、SA/D:结构化分析设计方法OOA/D:面向对象分析设计方法SA:结构化分析SD:结构化设计DFA:面向数据流分析DFD:变换型数据流,事务型数据流及混合型SC软件结构图SP结构化程序设计贪吃蛇程序:贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。1.4 参考资料个体软件过程、软件设计文档国家标准2任务概述2.1 目标本程序实现的主要技巧在二维
7、数组的应用上。目的是通过游戏程序增加编程的兴趣,提高编程水平。通过对游戏的编写以及对游戏的实际操作,提高大家对编程的兴趣与欲望,让大家在玩的过程中领悟编程思想。2.2 用户特点该小游戏适合各年龄阶层,可以说是老少皆宜,但要求有一定的C语言基础,一边在玩的时候,领悟其中的编程思想。2.3 假定和约束本程序开发期限为2010/6/5,开发经费基本为零。IPO图输入处理输出口令文件11取得输入2 口令确认3请求确认权限文件4更新处理h I请求记录权限记录状态报告/响应/、详细设计说明书1、引言,进一步定制软1.1 编写目的为明确软件需求、安排项目规划与进度、组织软件开发与测试件开发的细节问题撰写此文
8、档,以使本软件开发更为具体,明确,使开发人员更为方便,也便于以后软件的维护。本文档面向的读者主要是委托单位的管理人员、项目经理以及开发人员和维护人员。1.2 目乐待开发的系统软件是一款名叫贪吃蛇的小游戏,这款游戏是你叫简单、大家比较喜爱的小游戏,该软件的实现对运行的环境较为宽松,该游戏的提出者与实现者为李东,面向对象为广大玩家。1.3 定义贪吃蛇程序:贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动
9、过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。1.4 参考资料个体软件过程、软件设计文档国家标准2、设计思路这个程序的关键点是表示蛇的图形以及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动图形的实现是从蛇头的新位置开始画出蛇,这时,由于没有清屏的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会
10、多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。为了便于理解,定义了两个结构体:食物和蛇。2.1. 数据结构表示食物和蛇的矩形块都设计为10X0个像素单位,食物的基本数据域为它所出现的位置,用x和y坐标表示,则矩形块用函数rectangle(x,y,x+10,y+10或rectangle(x,y,x+l0,y-10可以画出。由于每次只出现一个食物,而食物被吃掉后,才出现下一个食物,所以设定yes表示是否要出现食物的变量。蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标x和yo身体是不断增长的,所以用数组存放每一节的坐标,最大设定为N=200,nod
11、e表示当前节数。另外还需要保存蛇移动方向的变量direction和表示生命的变量程序功能的实现就是数组的操作。#defineN200structFoodintx;/*食物的横坐标*/inty;/*食物的纵坐标*/intyes;/*判断是否要出现食物的变量structSnakeintxN;/*蛇的横坐标*/intyN;/*蛇的纵坐标*/intnode;/*蛇的节数*/intdirection;/*蛇的移动方向*/intlife;/*蛇的生命,0活着,1死亡*/snake;2.2. main(主函数life,一旦life为1,则蛇死,游戏结束。所以*/ food;/*食物的结构体*/主函数是程序的
12、主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK(画出开始画面,调用函数GamePlay(,即玩游戏的具体过程,游戏结束后调用Close(关闭图形系统,结束程序。2.3. 画界面函数DrawK(主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置为淡青颜色,用函数setlinestyle(SOLID_LINE,0,THICK_WIDTH设置线型宽度为3个像素。设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,如果不想这种
13、情况出现,则将线型宽度设置为1个像素。2.4. 游戏具体过程函数GamePlay(这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到倒数第二节(因蛇头为两节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可,因为新位置0到n-l节还是要出现在画面上的。然后蛇头按照方向键来更改位置。另外,食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的,这样的话就可以让蛇吃到,蛇吃到食物的判断是蛇头的坐标和食物的坐标相等。其算法过程为:(1设置初始值。为防止食物总出现在一个位置上,要设置随机数发生器,真正
14、产生随机数。初始时,蛇只有蛇头,设定一个开始的方向。2循环执行,直到按Esc键退出。1没有按键的情况下,循环执行。如果没有食物,随机出现食物;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃了自己,如果出现这两种情况之一,则蛇死,调用游戏结束函数GameOver(结束本次游戏,重新开始。如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。在新位置画出蛇2如果有按键,则识别键值。如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变代表蛇方向的变量direction的值,要考虑相反方向键无效。2.5.
15、游戏结束函数GameOver(游戏结束清除屏幕,输出分数,显示游戏结束信息。2.6. PrScore输出分数在指定位置利用sprintf(将整数转换为字符串,用outtextxy(输出,bar(函数的应用是为了覆盖原来的值。2.7. Close(ffl形结束3、流程图程序开始初始化(调用init()开始画面(调用DrawK()开始游戏(调用GamePlay()是判断是否出现死亡否输出成绩(调用PrScore()是是否继续游戏否退出游戏(调用Close()贪吃蛇流程图本系统分为:初始化即图形驱动函数init(模块、图形界面设计Drawk(模块、游戏GamePlay()模块、输出成绩PrScore馍块、退出游戏Close模块、在游戏模块中通过3个控制语句判断游戏中的蛇是否死亡(3中死亡方式),不出现死亡在游戏结束时候打出成绩,如果出现死亡则跳出循环并打出成绩并进行初始化设定,如果不玩游戏按ESC则退出游戏。主程序模块初始化(init()模块游戏界面设计(DrawK()模块游戏进行模块(G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孵化器市场发展预测和趋势分析
- 小学科学《拧螺丝钉的学问》说课稿
- 标志设计学习通超星期末考试答案章节答案2024年
- 口腔修复学(第二期)学习通超星期末考试答案章节答案2024年
- 大型工业企业售电代理服务方案
- 布卡罩袍产业深度调研及未来发展现状趋势
- 供热管网工程施工质量控制方案
- 课外阅读资源整合方案
- 国开(内蒙古)2024年《矿井测量#》形考答案
- 医疗物联网(IoMT)行业相关项目经营管理报告
- 《解决问题的策略》(教学设计)-2024-2025学年四年级上册数学苏教版
- 银行保安服务外包采购项目投标方案技术方案(技术方案)
- 社会工作方法 个案工作 个案所需表格
- 小学生家长会课件
- 2024届中国一汽全球校园招聘高频500题难、易错点模拟试题附带答案详解
- 2024新教材高中政治 第二单元 经济发展与社会进步 第三课 我国的经济发展 3.1 坚持新发展理念教学设计 部编版必修2
- 2024至2030年中国大米市场调查及发展趋势研究报告
- 3.1列代数式表示数量关系(第2课时 列代数式) 课件 2024-2025学年七年级数学上册 (人教版2024)
- 土壤污染重点监管单位隐患排查技术指南第4部分:医药制造业
- 变压器二手买卖合同范本2024年
- 期刊编辑的学术期刊编辑规范考核试卷
评论
0/150
提交评论