当前位置:文档之家› 俄罗斯方块游戏的开发需求分析

俄罗斯方块游戏的开发需求分析

俄罗斯方块游戏的开发组长:XXX组员:XXX XXX XXX XXX05软件工程一班一、课程设计的目的和意义俄罗斯方块游戏是一个经典的小游戏,由于它简单有趣,因而得到了广泛的流行,男女老幼都适合。

而俄罗斯方块游戏的设计工作复杂且富有挑战性,它包含的内容多,涉及的知识广泛,与图形界面联系较大,包括界面的显示与更新、数据收集等,在设计的过程中,必将运用到各方面的知识,这对于visualbasi语言设计者而言,是个很好的锻炼机会。

二、系统功能设计本系统主要设计以下几种功能1、游戏难度选择功能游戏难度选择界面设置在程序运行开始时,一共有九种难度供玩家选择,每选一级难度,都会相应地显示出代表该难度的图片。

开始时不设置任何默认的难度,如果玩家不选难度直接按“Enter”进入,将会弹出提示框,提示其先选难度再进入。

2、方块下落、变形功能在整个俄罗斯方块游戏中,方块的设计是核心。

这里设计了一个方块类:Square(),用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显示、初始化新块等。

3、自动升级功能当分数累积到一定大小时,系统将自动为玩家提高难度。

这里设置了每消除10行方块,就增加一级难度。

当难度增加的时候,方块会相应地改变颜色,以作为对玩家的提示。

4、游戏音乐功能游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。

5、获取帮助功能这里设置了一个类,用来显示帮助,按F1键就能弹出窗口,显示游戏规则。

三、系统功能设计分析俄罗斯方块游戏根据功能的不同,设置了如下12个类:Square,Command,GameArea,GameSetting,GameOver,Help,ImagePanel,JieMian,MyPanel, MyTimer,PlayMidi,WinListener,每个类的描述如下:1、Square,方块类。

这个类中定义了生成方块的方法,用二维数组int[][]pattern,存放7种方块的四种状态。

在构造方法中以随机的形式生成方块,同时提供了以下几种方法:reset(),leftTurn(),leftMove(),rightMove(),fallDown(),assertValid(int t,int s,int row,int col),dispBlock(int s)。

分别实现方块的重画、翻转、左移、右移、下落、同步显示等功能。

2、Command,处理控制类。

这是一个实现ActionListener接口的类,主要处理点击按钮事件。

类中定义了三个int型变量:button_play,button_quit,button_pause,和一个boolean型的变量:pause_resume,并赋值。

在GameArea类中通过事件响应,在按钮执行方法中调用其值,使用switch语句,根据不同按钮不同的值,来响应不同的事件。

3、GameArea,游戏界面类。

GameArea继承了JFrame,是俄罗斯方块的主要游戏界面。

这个类定义了GameSetting类的gameScr对象和ImagePanel类的imagepanel对象作为游戏区域面板和控制区域面板。

在游戏区域,主要是根据相应格子的设置标志来显示相应的图形图片,这样就实现了俄罗斯方块的实时显示。

4、GameSetting,游戏画布类。

这个类生成的对象将作为游戏界面的方块下落区域,画布的设置为15行10列,当中的方格边长为30,类中还定义了一个二维数组int[][]scrArr作为屏幕数组,表示每一个方格。

游戏区域中每一个方格是否存在游戏方块是由该方格的值来决定的,如果该方格的值为1,则表示该方格中存在游戏方块;如果该方格中的值为0,则表示该方格中不存在游戏方块,因此二维数组用于记录游戏区域中每个小方格的值。

此外,类中还定义了画方块的方法,根据不同的难度画出不同颜色的方块。

单击Play按钮时,系统调用initScr()方法,初始化屏幕,将屏幕数组清零。

当满足满行删除的条件时,系统调用deleteFullLine()方法,进行删行加分,而且每删除十行,难度自动增加一级,方块颜色改变,并在难度显示框中相应显示。

5、GameOver,游戏结束弹出提示框类。

当游戏结束时,系统弹出提示,包括玩家分数以及询问玩家要继续游戏还是退出。

6、Help,帮助类。

在游戏界面,按F1键,弹出提示窗口,获取帮助。

7、ImagePanel,背景图片类。

这个类继承了JPanel类,用来作为游戏界面中控制区域的容器,并添加图片。

8、JieMian,主界面类。

这个类继承了JPanel类,作为游戏的第一个界面,也是难度选择界面。

定义了9个单选按钮,当玩家未选任何难度就按Enter时,系统会弹出一个提示框,提示玩家先选难度再进入。

9、MyPanel,重写MyPanel类,使Panel的四周留空间。

10、MyTimer,定时线程类。

类中定义了一个run()方法,用sleep()函数实现方块下落的快慢,即调节难度。

11、PlayMidi,添加音乐类。

在游戏过程中添加背景音乐。

12、WinListener,关闭窗口类。

四、主要类的UML类图表示Squareint[][]patternint SquareTypeint SquareStateint blockStateint row,colGameSetting scr+void reset()+void leftTurn()+void leftMove()+void rightMove()+boolean fallDown()boolean assertValid(int t,int s,int row,int col)+synchronized void dispBlock(int s)(Square类的UML类图表示)GameSettingint unitSizeint rowNumint columnNumint maxAllowRowNumint SquareInitRoint SquareInitColint[][]scrArrSquare binitScr()+void paint(Graphics g)+void drawUnit(int row,int col,int type)+Square getBlock()+int getScrArrXY(int row,int col)+int getInitRow()+int getInitCol()void deleteFullLine()boolean isGameEnd()+void keyPressed(KeyEvent e)(GameSetting类的UML类图表示)五、主要源代码(834行,此处略)六、测试方案和结果(此处略)七、本次课程设计心得我们用了将近两个月的时间,终于把俄罗斯方块游戏完成了。

这两个月里,我们搜集资料、查看书籍,由于上学期对面向对象程序设计这门课程只是停留在略懂皮毛的理论阶段,因此这个学期的实际操作对于我们来说有一定的难度。

在系统分析阶段,我们针对俄罗斯方块游戏,初步地定下了要实现的功能,并将整个游戏分成若干个部分。

接下来是人员的分工,每个人负责不同的功能,将复杂的程序变成简单的部分。

在程序编写阶段,出现了不少技术上的问题,各人既独立又合作,遇难题一同攻克。

出于我们基础不扎实这方面的原因,我们在程序设计的时候遇到了不少问题,甚至被布局管理器的简单问题弄得焦头烂额。

但在一次次的错误运行中,我们对面向对象程序设计的概念理解得更加深刻,也因此重新燃起斗志。

可是在如方块预览方面,我们始终不能完成这一功能,这也是我们缺陷的所在。

鉴于水平能力问题,对于俄罗斯方块的核心程序我们并未能形成一个有机的概念,对于其核心算法也未能准确掌握。

诸如某些库函数已提供的方法,我们也不太了解。

出于这样的原因,我们上网查找了大量资料,借鉴了前人程序的一些方法,经过深入研究学习后,再加工提炼,在原有的基础上加入我们自己的想法,并进行设计。

在设计开发过程中,我们不但需要处理好各个类之间的集成关系和继承机制,还要处理各个类的相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

通过这次的课程设计,我们更深地体会到软件工程的理念,并以一个程序员应有的素质来要求自己,大致掌握了软件开发的基本过程,也感受到团队合作的重要性。

俄罗斯方块游戏的设计对于每个Java语言设计者来说,都是一个很好的提高和进阶的锻炼机会。

参考书目:《面向对象程序设计》作者:叶乃文喻国宝清华大学出版社《Java课程设计案例精编》作者:黄晓东等中国水利水电出版社摘要visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。

随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。

于是我们小组着手设计开始一个这样的游戏软件。

通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。

关键词Visual Basic俄罗斯方块游戏游戏软件游戏总体设计根据玩家的需求分析和游戏过程,来写出游戏的总体流程设计。

游戏过程是需要玩家将不断下落的各种形状的方块移动、翻转,如果某一行被方块充满了,那就将些行消掉;而当窗口中无法再容纳下落的方块时,就宣告游戏的结束。

为了需求分析和过程的实现。

做出流程图如下,如图3-1。

图3-1游戏流程设计图由图上可知,玩家是用键盘或鼠标通过界面来控制各个模块,各个模块根据玩家的操作来进行程序处理,处理后的结果,显示在界面上。

这样玩家就可以控制游戏的速度、难度、积分、其他等模块。

其他游戏的速度是指方块下落的速度;难度是指游戏开始时地基的多少;积分是指玩家消掉方块的行数的统计;其他模块是指界面上的设置等。

游戏功能设计游戏功能设计是根据需求分析,对游戏需有什么样的功能和结构进行设计。

本游戏是单机版的结构,根据游戏总体设计,游戏功能分为:4个功能模块:1、速度模块速度模块是制定游戏的速度。

本游戏把速度分为10个级别,从1到10不等。

默认为1,最低的速度。

2、难度模块难度模块是制定游戏的难度。

也就是游戏开始时的地基高度。

分为10个级别,从1到10不等。

默认为0,没有地基。

3、积分模块积分模块是玩家对游戏消掉行的统计累加。

计算方法为:sum=100*(2N-1)sum是积分。

N是一次消掉的行数。

例如:当消掉1行时,积分为100*(21-1)=100。

相关主题