《关于雷电游戏的软件工程设计报告.docx》由会员分享,可在线阅读,更多相关《关于雷电游戏的软件工程设计报告.docx(36页珍藏版)》请在三一办公上搜索。
1、 软件工程设计文档报告 题目:雷电游戏 班级:信息管理与信息系统 学号:10130218 姓名:白金龙内容摘要在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。雷电是个老少皆宜的小游戏,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作。论文描述了游戏的历史,开发此
2、游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、总体设计、详细设计,最后对软件进行了测试。此次设计在Microsoft Windows 7系统下,以JAVA为开发语言,在JDK6.0开发平台上进行游戏设计与实践。关键词:雷电,JDK6.0 目 录一、绪论11.1设计背景.21.2设计目的.21.3设计要求.31.4设计目标.3二、综述42.1国内外研究现状42.2研究可行性42.3 支持的技术5三、方案设计与论证83.1功能分析图.9 3.2 功能需求定义. 103.3功能性需求113.4用例分析123.5 系统E-R图133.6关键技术及难点
3、14四、设计与实现154.1输入输出要求.164.2系统流程图.174.3 数据流图. 174.4界面概览.18五、结果与评价195.1 测试.205.2心得体会 .205.3参考文献.21沈阳化工学院学士学位论文参考文献一、 绪论在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。雷电是个老少皆宜的小游戏,它实现
4、由一款战机飞行战斗,计算机根据环境变化以及众多的敌人,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作。论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、总体设计、详细设计,最后对软件进行了测试。此次设计在Microsoft Windows 7系统下,以JAVA为开发语言,在JDK6.0开发平台上进行游戏设计与实践。1.1 设计背景背景游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在
5、摸索电脑的人很少没玩过电脑游戏的,喜欢游戏的人也很少不玩电脑的。雷电是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。雷电最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。随着计算机的发展而发展,雷电不断推陈出新,深爱广大玩家喜爱。这个游戏有的简单,有的复杂,但其根本原理是一样的都是对运动的方块进行组合,来训练玩家的反应能力。因此开发此游戏软件可满足人们的一些娱乐的需求。此雷电游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的雷电游戏。1.2 设计目的通过本游戏的设计,综合自己在校期间所学的理论知识,设
6、计开发俄罗斯广场游戏,使自己熟应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。1.3 设计要求本游戏开发的总体任务是实现游戏的可操作性,以及界面的美观性。整个开发过程遵循软件工程规范,采用JAVA GUI编程实现界面以及事件的控制。用户根据键盘的四个方向键控制翻转、向左、向右、和向下操作,通过菜单栏中的相应菜单选项实现游戏的开始、结束、变换方向、积分以及等级的功能。1.4设计目标通过本游戏的开发,主要实现游戏的可操作性及美观性,同时使自己对JAVA语言的了
7、解更进一层,为将来的实际工作打 下坚实的基础。 二综述2.1 国内外研究现状针对国内外对游戏软件的巨大需求和基本要求,一个好的游戏软件,必须要功能齐全,操作简便,向用户展示美观的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。一个游戏,不管是哪个年龄段的玩家都能轻松上手,操作简单易懂,容易普及。本游戏系统主要实现对游戏的操作以及评分系统。2.2 研究可行性信息社会的不断发展,生活节奏的不断加快使人们的生活压力日趋增大,为了满足众多奋战在PC屏幕前的工作人员适当的放松的愿望,我们决定开发一款在工作之余可以方便大众的简单的娱乐游戏,甚至可以通过WIFI等无线网络进行联机评分。传统
8、的PC软件开发模式具有很大的弊端,如厂商固化硬件、程序不易增加、删除、更新、修改等。而JAVA技术在网络应用方面却有着非常明显的优势:1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。2. Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI);3. Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。2.3支持的技术JDK6.0支持以下技术,并已与下列应用服务器测试。支持的技术:Java EE 6, Java EE 5 and J2EE 1.4Java ME SDK 3.
9、0Java Card 3 SDKStruts 1.3.8Spring 3.0, 2.5Hibernate 3.2.5Java API for RESTful Web Services (JAX-RS) 1.1Java Wireless Toolkit 2.5.2 for CLDCIssue TrackingBugzilla 3.4 或早期版本Jira 3.4 或早期版本C/C+/FortranPHP 5.3, 5.2, 5.1Groovy 1.6.4Grails 1.1Apache Ant 1.8.1Apache Maven 2.2.1 或后期版本VCSCVS: 1.11.x, 1.12.xS
10、ubversion: 1.5.x, 1.6.xMercurial: 1.5ClearCase V7.0Git 1.7. 三. 方案设计与论证3.1功能分析图3.2功能需求定义用户分类功能玩家登陆界面继续未完的游戏创建新游戏声音游戏排名帮助退出游戏游戏过程中暂停游戏继续游戏放大招玩家吃生命宝物玩家吃放大招宝物玩家吃子弹强度宝物吃子弹变换宝物吃无敌状态宝物游戏帮助声音设置玩家保存游戏玩家返回游戏直接退出游戏 3.3功能性需求登陆界面:3.3.1 继续未完的游戏 用例名称:继续未完的游戏用例编号01优先级必须实现触发器菜单选项前提用户在游戏中有存档基本路径1 用户打开游戏 ;2 进入游戏读取画面;3
11、 选择“继续游戏”选项。可选路径N/A后置条件系统读取用户存档异常路径其他用户没有存档,提示无存档参考TAB1.1-1TAB1.1-23.3.2 创建新游戏用例名称:创建新游戏用例编号02优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 用户打开游戏;2. 进入游戏读取画面3. 选择“新游戏”选项。可选路径N/A后置条件开始新的游戏异常路径其他参考TAB1.1-1TAB1.1-33.3.3 声音用例名称:声音用例编号03优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 选择“菜单”,然后系统显示运行时菜单2. 选择“声音设置(开/关)”选项3. 选择“开”,游戏声音打开,选择“
12、关”,游戏声音关闭。可选路径N/A后置条件系统返回登陆界面异常路径其他参考TAB1.1-1TAB1.1-4 3.3.4 游戏排名用例名称:游戏排名用例编号04优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 选择“菜单”,然后系统显示运行时菜单;2. 选择“游戏排名”选项;3. 进入游戏排名,列出前三名的游戏分数及用户资料。可选路径N/A后置条件系统返回登陆界面异常路径其他参考TAB1.1-1TAB1.1-53.3.5 帮助用例名称:帮助用例编号05优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 用户选择“帮助”; 2. 进入帮助界面。可选路径N/A后置条件系统返回登陆界面异
13、常路径其他参考TAB1.1-1TAB1.1-63.3.6 退出游戏用例名称:退出游戏用例编号06优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 用户选择“退出游戏”,弹出提示对话框;2. 用户选择“确定”退出游戏;3. 完成存档;4. 游戏结束,退出游戏完成。可选路径N/A后置条件系统退出异常路径其他参考TAB1.1-1TAB1.1-7游戏过程中: 3.3.7 暂停游戏用例名称:暂停游戏用例编号07优先级必须实现触发器暂停按钮前提游戏正在进行中基本路径1 当在游戏中时,按“暂停”按钮后暂停游戏2 屏幕上显示游戏暂停,并显示“继续游戏”按钮可选路径N/A后置条件系统暂停游戏异常路径其他
14、参考TAB1.1-1TAB1.1-83.3.8 继续游戏用例名称:继续游戏用例编号08优先级必须实现触发器继续游戏按钮触发前提游戏已经暂停基本路径1 当玩家在游戏中请求暂停后,屏幕上显示有“继续游戏”按钮2 选择“继续游戏”按钮,游戏结束暂停状态,恢复游戏可选路径N/A后置条件系统继续游戏 异常路径其他参考TAB1.1-1TAB1.1-93.3.9 放大招用例名称:放大招用例编号09优先级必须实现触发器按下PCFIRE键前提大招可用数0基本路径1. 玩家按下FIRE号键后,在当前屏幕中的Plane,子弹,炮塔都死亡可用数-1,初始化有两个大招;2. 玩家吃到放大招礼物后,可用数+13. 屏幕又
15、下角显示可用数;可选路径N/A后置条件系统继续游戏异常路径其他参考TAB1.1-1TAB1.1-103.3.10 玩家吃生命宝物用例名称:玩家吃生命宝物用例编号10优先级必须实现触发器玩家控制飞机与宝物接触前提玩家处于正常的游戏运行中基本路径玩家处于正常的游戏运行中,飞机与宝物发生接触可选路径N/A后置条件玩家的剩余生命数量加一,显示的剩余生命数值也加一异常路径其他参考TAB1.1-1TAB1.1-113.3.11 玩家吃子弹强度宝物用例名称:玩家吃子弹强度宝物用例编号11优先级必须实现触发器玩家控制飞机与宝物接触前提玩家处于正常的游戏运行中基本路径玩家处于正常的游戏运行中,飞机与宝物发生接触
16、可选路径N/A后置条件玩家控制的飞机所发射的子弹若已经为加强的子弹,则保持当前子弹状态不变,若为一般强度的状态,则将子弹的状态变成加强的,同时玩家所控制的飞机发出的子弹束加粗异常路径其他参考TAB1.1-1TAB1.1-123.3.12 吃放大招宝物用例名称:吃放大招宝物用例编号12优先级必须实现触发器用户飞机与放大招宝物碰撞前提用户已经开始游戏基本路径1. 用户飞机与放大招宝物碰撞2. 游戏界面右下角出现相应宝物图标,如果以前已经出现了图标,则数量增加一个。可选路径N/A后置条件用户出发按键,放大招,背景上出现的敌方小飞机以及炮塔全被消失。如果敌方boss在背景上,敌方boss也会有一定受伤
17、。异常路径其他参考TAB1.1-1TAB1.1-133.3.13 吃子弹变换宝物用例名称:吃子弹变换宝物用例编号13优先级必须实现触发器用户飞机与子弹变换宝物碰撞前提用户已经开始游戏基本路径1. 用户飞机与子弹变换宝物碰撞2. 用户飞机的子弹立即变换为宝物相应的子弹类型。可选路径N/A后置条件用户飞机的子弹发射的子弹类型为宝物相应的子弹类型异常路径其他参考TAB1.1-1TAB1.1-143.3.14 吃无敌状态宝物用例名称:吃无敌状态宝物用例编号14优先级必须实现触发器用户飞机与无敌状态宝物碰撞前提用户已经开始游戏基本路径1. 用户飞机与无敌状态宝物碰撞2. 用户飞机立即变为无敌状态,并持续
18、一定时间,即用户不会被地方子弹所伤害,也不会被敌方的飞机所撞坏。可选路径N/A后置条件无底状态只能持续一定时间,在此状态下,即用户不会被地方子弹所伤害,也不会被敌方的飞机所撞坏。异常路径其他参考TAB1.1-1TAB1.1-153.3.15 游戏帮助用例名称:游戏帮助用例编号15优先级必须实现触发器菜单选项前提用户打开游戏基本路径1. 用户点击“选项”按钮。2. 弹出选项菜单,并且选择“帮助”按钮。3. 进入帮助界面。可选路径N/A后置条件系统返回登陆界面异常路径其他参考TAB1.1-1TAB1.1-163.3.16 声音设置用例名称:声音设置用例编号16优先级必须实现触发器菜单选项前提用户打
19、开游戏基本路径4. 用户点击“选项”按钮。5. 弹出选项菜单,并且选择“声音设置(开/关)”按钮。6. 选择“开”,游戏声音打开,选择“关”,游戏声音关闭。可选路径N/A后置条件系统返回登陆界面异常路径其他参考TAB1.1-1TAB1.1-173.3.17 玩家保存游戏用例名称:玩家保存游戏用例编号17优先级必须实现触发器菜单选项前提玩家已经进入游戏,点击“选项”按钮。基本路径1. 用户点击“选项”按钮。2. 弹出选项菜单,并且选择“返回主菜单”按钮。3. 弹出退出菜单,选择“保存”选项,进行游戏场景保存。可选路径N/A后置条件系统进入游戏登录界面。异常路径其他参考TAB1.1-1TAB1.1
20、-183.3.18 玩家返回游戏用例名称:玩家返回游戏用例编号18优先级必须实现触发器菜单选项前提玩家已经进入游戏,点击“选项”按钮。基本路径1.用户点击“选项”按钮。2.弹出选项菜单,并且选择“返回主菜单”按钮。3.弹出退出菜单,选择“返回游戏”选项,重新进入游戏。可选路径N/A后置条件游戏继续进行。异常路径其他参考TAB1.1-1TAB1.1-193.3.19 直接退出游戏用例名称:直接退出游戏用例编号19优先级必须实现触发器菜单选项前提玩家已经进入游戏,点击“选项”按钮。基本路径1.用户点击“选项”按钮。2.弹出选项菜单,并且选择“返回主菜单”按钮。3.弹出退出菜单,选择“直接退出”选项
21、,退出游戏。可选路径N/A后置条件系统进入游戏登录界面。异常路径其他参考TAB1.1-1TAB1.1-203.4用例分析雷电游戏管理有用户和管理员2类用户。管理员可以对游戏的图片,声音,帮助,评分的基本信息进行增、删、改、查的操作用户则可以创建游戏,删除游戏,增加积分等。3.5 E-R图3.6 关键技术及难点管理员可以上传配置要求,图片等,用户可以下载补丁。相反用户结束游戏后要上传给管理员,管理员可以下载用户的积分来更新。因此游戏的控制系统的难点和重点就是如何控制文件的上传和下载。上传下载需要用到SmartUpload这个组件。SmartUpload是一个可免费使用的全功能的文件上传下载组件,
22、适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点:1、使用简单。在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。2、能全程控制上传。利用SmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。4、下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用JSPSmartUpload进行下载。5、能将文件上传到数据库中,也能将数据库中的数据下载下来
23、。另外,JSP对上传文件的支持不像PHP中支持的那么好,直接做成了函数,也不像ASP中要通过组件才能实现。JSP中可以通过JavaBean来实现。但是我们没有必要自己去写一个上载的Bean,在网上已经有了很多成型的技术,Smartupload就是其中的一个。但是Smartupload是将文件先读到服务器的内存中,所以上传太大的文件(超过100M)有可能会出问题。4.1输入输出要求输入:玩家可以通过PC键盘控制游戏:“上”“下”“左”“右”快捷键、中间“确定”键以及左右软键。“上”“下”“左”“右”快捷键控制己方飞机的上下左右移动。左软键选择释放清屏大招,右软键退出。中间“确定”键表示选择。输出
24、:进入游戏后屏幕上显示玩家所得的分数,玩家所用的时间,玩家剩余血量、大招数和生命值。当玩家所控制的飞机被击败后,输出一个消息“Game Over!”表示游戏结束。若玩家分数打破当前系统前三名记录,则弹出消息框提示玩家输入用户名,以保存新的前三名记录。Finish改变相关属性吃到“礼物”血数是否为零命数是否为零被子弹或者敌机击中击毁敌方飞机减少相应血数增加分数Start选择飞机类型,初始化飞机信息飞机出现于屏幕下方中央,直到结束不断发射子弹命数减14.2数据流程图4.3 数据流图4.4 界面概览游戏开始界面: 玩家视角: 技能演示: 结束界面: 五结果与评价5.1 测试5.1.1 测试的目的软件
25、测试的目的决定了如何去组织测试。如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到的商业假设。而本系统的测试则着重测试管理员,用户对本系统的满意度、易用性、稳定性进行。5.1.2 黑盒测试黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据
26、而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身有问题或规格说明的规定有误,用墨盒测试方法是发现不了的。5.1.3测试环境与测试条件操作系统:WindowsXP 浏览器:IE6.0以上页面开发工具:DreamweaverJava开发工具:eclipse, myeclipse5.1.4实例测试5.2 心得体会经过一个星期的不断努力,课程设计内容基本上完成了。首先,在这里要感谢我班上的同学,他们都在身边督促我,我们也互相鼓励,共同进步。另外,我还要
27、谢谢我的室友, 是她们对我的课题提出了许多富有启发性和建设性的意见和建议。在做课程设计中碰到了许多的问题,从一开始的代码错误到实现课程设计报告的格式,特别是在代码中的错误,大大小小的问题很多,但是经过自已的反复查阅和同学的帮助,都一一克服了。以后再大的事,有自己的努力和朋友的帮助,我相信没有什么事情是可以难倒我的。5.3 参考文献1朱福喜著,JAVA程序设计技巧与开发实例M 北京:人民邮电出版社,2004.22 张海藩 软件工程(第五版) 北京:清华大学出版社,20083 贾振华 Java语言程序设计(第二版) 北京:中国水利水电出版社,20094王宇,战学刚,高国伟著,计算机算法解决雷电中的
28、数学与计算问题M 计算机应用与软件,第二十四卷第三期,2007.3附录:主要代码public ErsBlocksGame(String title)super(title); setSize(315, 392);Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();setLocation(scrSize.width - getSize().width) / 2, (scrSize.height - getSize().height) / 2);createMenu();Container container = getC
29、ontentPane();container.setLayout(new BorderLayout(6, 0);canvas = new GameCanvas(20, 12);ctrlPanel = new ControlPanel(this);container.add(canvas, BorderLayout.CENTER);container.add(ctrlPanel, BorderLayout.EAST);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) stopGame()
30、;System.exit(0););addComponentListener(new ComponentAdapter() public void componentResized(ComponentEvent ce) canvas.fanning(); );(2)监听操作setJMenuBar(bar);miNewGame.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) stopGame();reset();setLevel(initlevel););(3)选择信息显示plI
31、nfo.add(new JLabel(等级);plInfo.add(tfLevel);plInfo.add(new JLabel(得分);plInfo.add(tfScore); tfLevel.setEditable(false);tfScore.setEditable(false);2、算法说明(1)用户得分算法timer = new Timer(500, new ActionListener() public void actionPerformed(ActionEvent ae) tfScore.setText( + game.getScore();int scoreForLevelU
32、pdate = game.getScoreForLevelUpdate();if (scoreForLevelUpdate = ErsBlocksGame.everylevelscore & scoreForLevelUpdate 0)game.levelUpdate(); );(2)游戏监听部分算法public void playGame()play();ctrlPanel.setPlayButtonEnable(false);miPlay.setEnabled(false);ctrlPanel.requestFocus();public void pauseGame() if (block
33、 != null) block.pauseMove();ctrlPanel.setPauseButtonLabel(false);miPause.setEnabled(false);miResume.setEnabled(true);(3)修改等级算法btTurnLevelUp.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) try int level = Integer.parseInt(tfLevel.getText();if (level 1)tfLevel.setText( + (level - 1); catch (NumberFormatException e) requestFocus(););35