《软件基础》大作业[002]

上传人:nt****6 文档编号:473901 上传时间:2017-03-08 格式:DOC 页数:10 大小:105KB
返回 下载 相关 举报
《软件基础》大作业[002]_第1页
第1页 / 共10页
《软件基础》大作业[002]_第2页
第2页 / 共10页
《软件基础》大作业[002]_第3页
第3页 / 共10页
《软件基础》大作业[002]_第4页
第4页 / 共10页
《软件基础》大作业[002]_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《《软件基础》大作业[002]》由会员分享,可在线阅读,更多相关《《软件基础》大作业[002](10页珍藏版)》请在金锄头文库上搜索。

1、软件基础大作业 项目名称:“俄罗斯方块” 游戏班 级: 指导教师:目录一细规则、 项目任务书二 模块设计小结三工程进度四项目测试分析五制作安装软件六项目总结与体会七参考书目一目简介本项目是为了制作一个“俄罗斯方块”游戏。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人 作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。制作此软件是为了使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。细规则、胜负判定方法用户分别移动和旋转

2、自己窗口内落下的方块,方块在一行堆满后就可以消掉,当方块先堆积至窗口顶端,即告负。戏操作方法1. 按游戏界面的开始 菜单来开始游戏2. 键盘操作: 左移一格;右移一格; 旋转方块;方块丢下(方块下落加速)3. 计分牌 显示的内容:得分 为本局的分数,计分标准为下落一个块 10 分,一次消 1 行 10 分、2 行 30 分、3 行 60 分、4 行 100 分。该游戏共有 4 个等级,一级、二级、三级、四级最高分分别为800,1500,2500,4000。 级数 为游戏当前等级,当分数达到当前等级的最高值,等级就会提升、速度加快。 软件运行环境此软件由 发完成,可以在任何装有 行环境)的机器上

3、运行。 项目任务书开发小组成员及任务分工:周海明(组长): 协调各成员之间的任务,完成所有程序的编写及调试工作;杨 勇 : 方块模块设计,主界面模块设计及其程序算法设计;杨 光 : 线程模块设计及撰写项目文档;二体方案首先,要想该游戏易于操作,则需要一个良好的界面,能够接受鼠标和键盘操作等;其次,由于游戏涉及到许多不同种类的方块,所以要构造这些方块;再者,在游戏过程中,必须要处理好方块的一些事件,例如自动下落,消除满行等。由 面向对象和多线程机制,很容易实现这些。由上分析可知,该游戏程序大体框架主要分为三大模块:1 通过继承 派生出 来实现自己的主界面。2 创建方块 来构造各种各样的方块。3

4、通过实现 口来创建一个新的线程,用来处理方块事件和得分级数等。 方块模块设计此模块主要完成实现各种方块。本游戏总共有 7 种方块,而每种方块还可以进行旋转。每种方块每行每列最多只有 4 个小方块。这 7 种方块如下图 1 所示。(1) (2) (3) (4) (5) (6) (7)图 二维数组来表示每种类型的方块,当数组元素为 1 时,则显示该方格,当数组元素为 0 时,则不显示该方格。例如图 2(1)的方块即可用二维数组1,1,1,1即可表示,其它类型及旋转后的方块表示可依此类推。 线程模块设计 此模块主要实现对各种方块的自动下落,正确停止以及自动消除满行和得分、级数、下一个方块的正确显示。

5、问题分析与算法设计: 方块自动下落可以通过多线程机制来实现,当此线程每次得到运行时,将下落方块的显示位置下降一个小方格即可。 方块能够正确停止,即判断方块何时停止。由游戏介绍可知,当下落方块下方有方块阻挡或到达边界时,该方块停止下落。此算法如下:首先可以设置一个 30*10 的二维数组来实现 30*10 小方格的显示情况。每当小方块停止下落时,由表示方块的二维数组来给由方块覆盖的小方格附值。这样,每当方块每次下落时,要检查表示方块的二维数组与即将覆盖小方块的区域是否冲突(即检测对应的数组元素位是否都为 1,如果都为 1,则冲突),以及是否到达边界,如果其中之一发生了,则此方块必须停止,否则继续

6、下落。 满行的自动消除当 30*10 的小方格如果有任一行被填充满时,即将此行删除。算法如下:当方块正确停止后,循环检测表示小方格矩阵的二维数组,当检测到某一行有任一元素不为 1 时,则表示未满,否则表示此行此满,接着要完成二件事情:a. 设第 i 行已满,从下往上,将 的值附值给第 k 行(0k=i) ;b. 将第一行的元素值清零。 下一个方块的显示由于方块的出现均是随机性的,要得到每种状态的方块,首先要得到哪个种类的随机值,还要得到此种类不同形态的随机值。此算法如下:由前述可知,每种方块均由二维数组来表示,这样可以构造七个三维数组,每个三维数组就对应每种方块不同的形态。再构造一个四维数组,

7、此数组包括此七个三维数组。因此可通过得到这个四维数组和三维数组的两个随机下标即可得到下一个随机方块。 得分及级数显示由前述介绍可知,得分要看具体的一次消行数,级数根据得分的情况显示。算法设计:设置一个计数值标志,在前述一次消行判断中,每消一行,该计数值增 1。在消行判断完后,检测该标志,根据不同的值,加上不同的分数。在得分判断完后,再根据得分多少来显示级数。若得分已经达到当前级数最高分,则级数加 1,得分清 0,否则保持当前得分、级数不变。主界面设计模块主界面设计主要包括界面的显示,以及处理键盘事件,菜单事件。下面就分别关于各个部分的设计详细分述。面内容包括:主窗体,一个控制菜单(包括开始、重

8、来、暂停、退出), 得分和级别情况,下一个方块内容,30*10 的小方格矩阵。在程序运行初始化过程中,通过添加所需菜单条(菜单( ,标签(画一个 30*10 的小矩阵方格。最终程序运行后的主界面如下图 2 所示: 图 盘事件处理键盘事件包括按 , , , 事件,由前面游戏介绍可知这四个事件所产生的功能。问题分析与算法设计: 按 此事件产生方块旋转操作,方块并非任何时候都能旋转,如果旋转后与小方格矩阵显示的方块有冲突或超出边界时,均不能发生旋转。因此首先要解决怎样正确得到旋转后的方块,再判断何时能旋转。算法如下:正确得到旋转后的方块,可通过前述表示方块种类的三维数组来实现。在显示下一个方块时,要

9、得到这个随机的三维数组,这样可通过循环改变此三维数组的下标来实现。当此按键事件触发后,下标增 1, 下标越界时,再将下标置为 0。判断方块是否能够旋转,与前述判断方块正确停止的方法类似。将旋转后得到的方块与此方块覆盖的小方格区域作比较,若两者均为 1,则发生冲突;或旋转后方块超过了边界范围,则可判断此当前下落方块不能发生旋转,否则显示旋转后的方块。 按此事件产生方块加速下落操作。由于方块自动下落是由创建一个线程单独控制,这样可通过改变此线程的睡眠时间来改变下落速度。睡眠时间越少,下落速度赶快。 按此事件产生下落方块左移操作。首先要判断此方块是否能够发生左移,当越界或与小方块显示方块阻挡时,则不

10、能左移。此算法与按 事件的能否旋转算法类似,在此不再赘述。 按此事件产生下落方块右移操作。首先要判断此方块是否能够发生右移,当越界或与小方块显示方块阻挡时,则不能右移。此算法与按 事件的能否旋转算法类似,在此不再赘述。 菜单事件处理控制菜单有开始、重来、暂停、退出菜单。 “开始”事件点击“开始” ,游戏即开始运行。因此首先要新建一个新的线程用来处理方块事件。还要随机显示第一个下落的方块。最后把“开始”菜单设置成灰色,“暂停”菜单恢复显示。 “重来”事件将当前状态恢复至初始状态,得分清 0,级数置 1。 “暂停”事件暂停即要停止当前方块的下落,则只要关闭当前的线程即可。同时使“暂停”菜单变成灰色

11、, “开始”菜单恢复显示。 “退出”事件结束线程,关闭窗体。 模块设计小结由上述模块分析和设计可知,本游戏的核心模块是主界面模块,方块模块与线程模块均是为其而服务。由于源程序给出了详细注释,本文档只提供算法设计思想,不再提供源程序,关于算法的具体实现可参看项目工程文件 源程序的主窗体类(方块类(及为创建线程的类 (关系如下图 3 所示:标及键盘操作为主窗体提供各种方块。实现定时功能,处理方块事件和得分级数显示图 3三 工程进度时间 计划完成的工作 成主界面设计 成总体方案设计 成各个模块设计 成程序的编写与文档的撰写 行程序的第一次测试与改进 行程序的第二次测试与改进 按时完成四项目测试分析第

12、一次测试:测试时间:试整个程序运行情况是否满足基础要求实际测试情况简介:能够基本实现整个要求,但同时出现了一个小问题,就是游戏在运行时有时不能同时消除多行的情况。问题分析:检查源程序中消除满行程序。发现在消除一行(记第 i 行被消除)以后,由于要进行下移操作,原来的第 变成了第 i 行,而原程序继续扫描第 ,这样原来的第 因此就并没有被扫描掉,出现了漏扫的情况。解决方法:改进原程序,只要在每消除一行后,将扫描位置下移一位即可。 第二次测试:测试时间:试本游戏还有没有值得改进的地方。实际测试情况简介:已经完全达到预定任务的要求,但在界面的美观方面还值得改进。解决办法:通过合理设置界面的背景色,背

13、景色,布局即可。五制作安装软件制作好程序之后,利用微软 统自带了自带的安装制作软件 于是微软自带的程序。使用方法很简单,只需在运行中输入 可以, 如下图 3 所示,。制作安装程序包采用的是向导式,根据自己的实际情况来进行选择。图 3最后生成的 件名为 击其图标即可运行,详见项目工程文件六项目总结与体会本次大作业完成得比较理想,很好地完成了预定任务。但也还有值得改进的地方,例如为方便用户,增加设置对话框可以设置操作按键等,设置更多的级别层次等。通过本次大作业的实践,我们小组四人都感觉到受益匪浅,加深了对面象对象编程和软件工程的理解,学习了不少新的知识。为了更好地完成本次大作业,组长首先安排了各个成员的具体分工与任务,拟定了任务进度表,大家齐心协力,按质按量按期完成各自的任务。但并非每个人的任务都是独立的,需要大家各自的配合才能完成。当大家遇到问题时,反馈到组长,然后组长组织大家相互讨论,商讨解决问题的办法,最终把问题解决好。在这期间,大家感触最深的就是 神,毕竟一个人的力量是有限的,只有大家相互协作,每个人都把自己的特长发挥出来,才能把任务完成得最好。大家在相互合作的同时,也都互相学习各自的长处。以后,当我们走上工作岗位的时候,一定会遇到比这更加

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号