魔板游戏的设计与开发.docx
《魔板游戏的设计与开发.docx》由会员分享,可在线阅读,更多相关《魔板游戏的设计与开发.docx(29页珍藏版)》请在冰豆网上搜索。
魔板游戏的设计与开发
魔板游戏策划书
学院:
软件学院
专业:
软件工程
班级:
软工(中兴通)121
学生姓名:
马泉华
第一章:
项目概述…………………………………………………3
1.1目的…………………………………………………………………3
1.2项目背景……………………………………………………………3
1.3项目的范围与目标…………………………………………………3
1.3.1范围描述…………………………………………………………3
1.3.2主要功能…………………………………………………………3
(1)概述…………………………………………………………………3
(2)项目设计内容……………………………………………………4
(1)PuzzleGame.java…………………………………………………4
(2)PuzzlePad.java…………………………………………………5
(3)Block.java……………………………………………………5
(4)Point.java………………………………………………………5
(5)HandleImage.java………………………………………………6
(6)HandMove.java…………………………………………………6
(7)VerifySuccess…………………………………………………6
第二章项目估算………………………………………………………………6
第三章风险评估………………………………………………………………7
3.1风险识别……………………………………………………………7
3.2风险应对策略………………………………………………………7
第四章详细设计………………………………………………………………8
4.1需求分析……………………………………………………………8
4.1.1用户登录界面……………………………………………………8
4.1.2设计流程图………………………………………………………9
4.2系统的详细设计…………………………………………………10
4.2.1PuzzleGame类…………………………………………………10
4.2.2PuzzlePad类…………………………………………………13
4.2.3Black类…………………………………………………………15
4.2.4Point类…………………………………………………………17
4.2.5HandImage类……………………………………………………18
4.2.6HangleMove类…………………………………………………19
4.2.7VerifySuccess类………………………………………………21
第五章项目的实现
5.1游戏主类的设计……………………………………………………23
5.2魔板对象的实现……………………………………………………24
5.3游戏使用时间的设计……………………………………………26
5.4游戏成功与否的判断计……………………………………………27
5.5游戏增加英雄榜功能………………………………………………28
5.6增加查看英雄榜功能………………………………………………29
5.7增加背景音乐能……………………………………………………29
5.8增加登陆界面功能…………………………………………………30
第六章软件的配置……………………………………………………………31
第七章人员组织……………………………………………………………31
第八章附录…………………………………………………………………31
第九章结束语………………………………………………………………31
第一章:
项目概述
1.1目的
为了保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序,因此以文件化的形式, 把对于在项目生命周期内的工作任务范围、各项工作的任务分解、项目团队组织结构、各团队成员的工作责任、团队内外沟通协作方式、开发进度、经费预算、项目 内外环境条件、风险对策等内容做出的安排以书面的方式,作为项目团队成员以及项目干系人之间的共识与约定,项目生命周期内的所有项目活动的行动基础,项目 团队开展和检查项目工作的依据。
利用所学高级语言的语法特性,结合数据结构算法、网络知识、文件处理和数据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。
1.2项目背景
做这个魔板游戏是为了尝试着开发一项软件游戏所做的一个项目,由我们小组共同来完成。
Java语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。
近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而魔板游戏能起到锻炼人的思维和修身养性的作用,而且魔板游戏水平颇高,我们可以自己选择不同难度的游戏,大有与人脑分庭抗礼之势。
1.3项目的范围与目标
1.3.1项目的范围
魔板游戏作为一种智力小游戏,受到广大中小学生以及一些上班族的喜爱,可以在忙碌的一天之后放松下自己紧绷的精神,同时可也以得到智力的提升。
魔板游戏的游戏规则十分简单,却拥有十分广阔选择空间,使得游戏背景图案可以变化多端,比其它游戏复杂深奥。
这就是魔板游戏的魅力所在。
玩魔板游戏对人脑的智力开发很有帮助,可增强一个人的计算能力、创造能力、思维能力、判断能力,也能提高人的注意力和控制力。
玩魔板游戏对儿童少年的智力发展起到积极作用,使他们能更好的分析事物。
1.3.2主要功能
(1)概述
(1)模版由3*3或4*4个格子组成。
对于3*3魔板,在前8个格子里随即放置8个编号1~8的方块,最后一个格子是未放置的空格子;对于4*4的魔板,在前15个格子里随机放置15个编号为1~15的方块,最后一个格子是未放置方块的空格子。
(2)用鼠标单击任何与空格子水平或垂直相邻的方块可以把该方块移入空
子,而当前方块移动之前所在的格子成为空格子。
通过不断的移动方块可以将方块一行一行的按数字序号排好。
(3)魔板游戏也可以使用图像来代替数字。
例如,对于3*3的魔板,将一幅图像分成3*3福小图像,除去最后一幅小图像(图像的右下角),将其余各小图像打乱顺序后放在魔板的方块上,最终目标是通过移动方块恢复原始图像(不包括图像的右下角)。
(4)当用户按要求排列好方块后,程序弹出对话框,提示用户成功的消息。
(2)项目设计内容
在设计魔板游戏时,需要编写7个Java源文件:
PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccess.java和HandleMove.java。
模板游戏除了需要编写上述的7个源程序所给出的类外,还需要Java系统提供的一些重要的类,如JMenuItem、JButton等类。
魔板游戏所用到得一些重要的类以及之间的组合关系如下图1所示。
图1类之间的组合关系
以下是我们编写的6个java源程序的总体设计。
(1)PuzzleGame.java(主类)
PuzzleGame类负责创建魔板游戏的主窗口,该类含有main方法,程序从该类开始执行。
PuzzleGame类成员变量中有4中重要类型的对象:
PuzzlePad、JMune、JRadioButton和JButton。
PuzzleGame类的主要成员的作用将在后面的详细设计中阐述,PuzzleGame类创建的窗口以及其中的主要成员对象如图2所示。
图2PuzzleGame窗口及主要的成员对象
(2)PuzzlePad.java
PuzzlePad类创建的对象是PuzzlePad类最重要的成员之一,代表“魔板”。
该类的成员变量中有5种重要类型的对象:
Point、Block、HandleMove、HandleImage和Image。
PuzzlePad类的主要成员的作用将在后面的详细设计中说明阐述。
(3)Block.java
Block类是JTextField的一个子类,创建的对象是PuzzlePad类的重要成员之一,用来表示“魔板”中的方块。
(4)Point.java
Point类负责创建确定位置的对象,使用Point对象可以确定Block对象在PuzzlePad对象之中的位置,即确定“方块”在“魔板”中的位置。
(5)HandleImage.java
HandleImage类所创建的对象负责将一幅图像分成诺干个小图像。
(6)HandleMove.java
HandleMove类所创建的对象负责处理鼠标事件。
(7)VerifySuccess
VerifySuccess类所创建的对象负责验证用户是否按要求成功排列模板中的方块。
第二章项目估算
姓名
岗位
工资
费用
工作
马泉华
组长
---------
-----------
整个项目
苏鑫
组员
---------
----------
项目预算
李志强
组员
---------
----------
项目概述
张琪
组员
---------
----------
风险评估
由于我们都是学生,这个项目使我们利用课余时间做的,所以成本可以忽略不计。
我们估算用两周的时间用于项目的选题、资料等一系列的项目开发前的准备活动,用一周的时间进行项目的估算与及风险评估,用三周的时间进行项目的具体设计、研究、开发,最后一周用于整个项目的测试。
所以总共大约用时一个半月的时间来完成它。
第三章风险评估
3.1风险识别
风险
概率
影响
规模估计过低
60%
严重的
交付期限太紧张
50%
严重的
用户需求变化频繁
75%
严重的
技术达不到预期效果
30%
轻微的
质量保证体系的措施实施不利
60%
严重的
软件体系结构设计不合理
40%
灾难性的
3.2风险应对策略
1.强化团队支持,避免独立的项目结构。
通过有效的团队建设增进团队之间的项目支持,可以有效地避免一些技术风险。
2.改善沟通和问题解决。
同时还可以通过改善沟通,加强和改善信息流通来促使一些问题得到合理解决。
3.经常性地进行项目监督及项目检查和管理。
4.细化WBS,使用网络计划。
在项目计划阶段通过细化工作包,采用网络计划等一些比较完善的计划手段编制计划,从而使造成技术风险的根源消除掉,实现降低技术风险的目的。
第四章详细设计
4.1系统的需求分析
4.1.1用户登录界面图
登录功能结构图
4.1.2设计流程图
总体功能图
4.2系统的详细设计
4.2.1PuzzleGame类
1、效果图
PuzzlePad创建的窗口效果如图5所示。
(a)PuzzleGame创建的窗口(数字玩法)
(b)PuzzleGame创建的窗口(图像玩法)
图5PuzzleGame创建的窗口
2、UML图
MazeWindow类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口,该类的主要成员变量和方法的UML图如图6所示。
图6PuzzleGame类的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
●puzzlePad是PuzzlePad类声明的对象,用来刻画魔板,是PuzzleGame类中最重要的成员之一
●bar是JMenuBar创建的菜单条,用来添加菜单。
bar被放置在窗口的顶部
●gradeMenu和choiceImage是JMenu创建的菜单,其名字分别为“选择级别”和“选择图像”。
gradeMenu,choiceImage被添加到菜单条(bar)中。
●oneGrade、twoGrade、newImage和defaultImage是JMenuItem创建的菜单项,名字依次为“初级”,“高级”,“选择一幅新图像”和“使用默认图像”,oneGrade和twoGrade菜单项被添加到菜单gradeMenu中,newImage和defaultImage都将当前窗口注册为自己的ActionEvent事件监视器。
●digitPlay和imagePlay是JRadioButton创建的属于同一选择组中的单选框,名字依次为“数字玩法”,“图像玩法”。
同一时刻digitPlay和imagePlay中只能有一个处于选中状态。
●startButton是JButton创建的按钮对象,名字为“开始”。
startButton将当前窗口注册为自己的ActionEvent事件监视器。
●image是Image声明的对象。
●tool是Toolkit对象,负责创建image对象
2)方法
●PuzzleGame()是构造方法,负责完成窗口的初始化操作。
●actionPerformed(ActionEvent)方法是puzzleGame类实现ActionListener接口中的方法。
PuzzleGame类创建的窗口是菜单中的菜单项、单选框以及按钮上的ActionEvent事件监视器。
如果用户选中oneGrade或twoGrade菜单项时actionPerformed(ActionEvent)方法所执行的操作分别是让puzzlePad对象将自己的级别设置为一级或二级。
如果用户选中newImage或defaultImage菜单项时,actionPerformed(ActionEvent)方法所执行的操作就是分别改变image对象。
当用户单击start按钮后,如果单选框digitPlay处于被选中状态,那么actionPerformed(ActionEvent)方法所执行的操作就是让PuzzlePad对象使用数字魔板,如果单选框imagePlay被选中时,那么actionPerformed(ActionEvent)方法所执行的操作就是让puzzlePad对象使用图像魔板。
●main方法是程序运行的入口方法。
4.2.2PuzzlePad类
1、效果图
PuzzlePad创建的魔板对象效果如图7所示。
(a)数字魔板
(b)图像魔板
图7PuzzlePad创建的魔板对象
2、UML图
PuzzlePad类时javax.swing包中JPanel容器的子类,所创建的对象:
puzzlePad是PuzzleGame类中最重要的成员之一,作为一个容器添加到PuzzleGame窗口的中心。
标明PuzzlePad类的主要成员变量、方法以及和PuzzleGame类之间组合关系的UML图如图8所示。
图8PuzzlePad类的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
●point是Point类型的而为数组,单元为Point类创建的对象,用来确定魔板中的方块的位置
●block是Block类型的二维数组,单元为Block类创建的对象,用来表示魔板中的方块。
●distance,grade,m和n是int型数据。
Point对象根据distance的值来进行初始化,以便确定Point对象之间的距离。
m和n的值是二维数值组block和point的行数和列数,m和n的默认值都是3。
Grade的值代表魔板的级别,默认值是1.
●handleMove是HandleMove类创建的对象,负责处理Block对象上的鼠标事件。
●handleImage是HandleImage类创建的对象,负责将一幅图像分成若干幅小图像。
●verifySuccess是VerifySuccess类创建的对象,负责验证用户是否按要求成功排列了魔板中的方块。
●image是Image声明的图像对象。
●tool是Toolkit对象,负责创建Image声明的图像对象:
image。
、
2)方法
●PuzzlePad()是构造方法,负责创建PuzzlePad对象。
●Puzzlepad对象调用getHandleMove()方法返回其中的HandleMove对象,即返回handleMove。
●PuzzlePad对象调用setImage(Image)方法设置image对象。
●PuzzlePad对象调用setGrade(int)方法设置魔板的级别。
●PuzzlePad对象调用getGrade()方法返回grade。
●PuzzlePad对象调用needInit()方法负责完成Block和Point对象的创建,以及完成对其他的对象的初始化。
、
●PuzzlePad对象调用setIsDigitPlay()方法将魔板设置为数字玩法。
●PuzzlePad对象调用setIsImagePlay()方法将魔板设置为图像玩法。
●PuzzlePad对象调用paintComponent(Graphics)方法将魔板使用的图像,即image对象,绘制在魔板的右侧。
4.2.3Black类
1、效果图
Block创建的对象效果如图9所示。
(a)对象1(b)对象2
图9Block创建的两个对象
2、UML图
Block类是javax.swing包中JTextField类的一个子类,创建的对象是二维数组block的单元中的对象。
Block型数组block是PuzzlePad类的重要成员之一。
标明Block类的主要成员变量和方法以及和PuzzlePad类之间组合关系的UML图如图10所示。
图10Block类的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
●point是Point型对象,用来确定Block对象在PuzzlePad所创建的魔板容器中的位置。
●object是Object类型的对象,用来确定Block对象上所显示的数字或图像。
2)方法
●Block对象调用setAtPoint(Point)方法设置自己所在的“点”,即设置point对象的引用。
●Block对象调用setAtPoint()返回自己所在的“点”即返回point对象的引用。
●Block对象调用setObject(Object)方法设置自己的成员object,当设置object是Integer对象时,当前的Block对象显示Integer对象中的数字;当设置object是Image对象时,当前Block对象将调用repaint()方法重新绘制Image对象。
●Block对象调用paintComponent(Graphics)方法绘制出Image对象。
4.2.4Point类
1、效果图
Point创建的对象负责确定Block对象在PuzzlePad魔板容器中所在的位置。
Point创建的对象没有可显示的效果图。
2、UML图
Point创建的对象含有两个重要int型数据,分别用来表示puzzlePad魔板容器坐标系中的x轴坐标和y轴坐标值,坐标系的原点是puzzlePad魔板容器的左上角,向右是x轴的正向,向下是y轴的正向。
Point类创建的对象是二维数组point的单元中的对象。
Point型二维数组point是puzzlePad魔板容器的重要成员之一,其单元中的point对象用来确定block对象在puzzlePad魔板容器中的位置。
标明point类的主要成员变量和方法以及和puzzlePad类之间组合关系的UML图如图11所示。
图11Point类的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
●x和y是Point对象中的两个int类型数据,分别用来表示容器坐标系中的x轴坐标和y轴坐标值。
●haveBlock是boolean型数据,如果有Block对象在该Point对象上时,该数据为true;否则为false。
●block是Block类声明的对象,用来存放一个Block对象的引用,标明该Block对象在当前point对象上。
2)方法
●Point(int,int)是构造方法,用来创建Point对象。
●Point对象调用isHaveBlock()方法返回一个boolean型数据,如果当前Point对象上有Block对象,isHaveBlock()方法返回true;否则返回false。
●Point对象调用setHaveBlock(boolean)方法可以根据参数的值设置当前point对象上是否有block对象。
●Point对象调用getX()和getY()方法可以返回其中的x轴坐标和y轴坐标。
●Point对象调用equals(TowerPoint)方法可以判断当前point对象是否和参数指定的point对象相同。
●Point对象调用setBlock(Block)方法,将参数指定的Block对象放置在当前point对象上。
●Point对象调用getBlock()方法可以返回当前point对象上的Block对象。
4.2.5HandleImage类
❑效果图
HandleImage创建的对象负责将一幅图像分解为诺干个小的图像,没有可显示的效果图。
❑UML图
HandleImage类是javax.swing包中JComponent类的一个子类,创建的对象handleImage负责将一幅图像分解成诺干幅小图像,是PuzzlePad类的重要成员之一。
HandleImage类的主要成员变量和方法以及和PuzzlePad类之间的组合关系的UML图像如图12所示。
图12HandleImage类的UML图
以下是UML图中有关数据和方法的说明。
1)成员变量
●imageWidth和imageHeight是int型数据,用来存储图像的宽和高。
●tool是Toolkit对象,用来获得Image对象。
2)方法
●HandleImage()是构造方法,负责完成HandleImage对象的初始化。
●getImages(Image,int,int)方法将参数指定的图像分成诺干个更小的图像,并将这些图像存放到一个Image数组中,然后返回该数组。
3)代码(HandleImage.java)
4.2.6HangleMove类
1、效果图
andleMove创建的对象效果如图13所示。
图13HandMove创建的对象
2、UML图
HandleMove类是javax.swing包中JPanel容器的一个子类,并实现了MouseListener和ActionListener接口,创建的对象handleMove是PuzzlePad类的成员之一,负责监视PuzzlePad类中的Block对象上的鼠标事件。
当用户用鼠标单击Block对象后,handleMove对象负责给出移动Block对象有关的