为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 魔板游戏的设计与开发

魔板游戏的设计与开发

2018-12-13 36页 doc 205KB 17阅读

用户头像

is_554469

暂无简介

举报
魔板游戏的设计与开发魔板游戏的设计与开发 魔板游戏策划书 学 院:软件学院 专 业:软件工程 班 级:软工(中兴通)121 学生姓名:马泉华 第一章:项目概述 „„„„„„„„„„„„„„„„„„„3 1.1 目的„„„„„„„„„„„„„„„„„„„„„„„„„3 1.2 项目背景„„„„„„„„„„„„„„„„„„„„„„„3 1.3 项目的范围与目标„„„„„„„„„„„„„„„„„„„3 1.3.1 范围描述„„„„„„„„„„„„„„„„„„„„„„3 1.3.2 主要功能„„„„„„„„„„„„„„„„„„„„„...
魔板游戏的设计与开发
魔板游戏的设计与开发 魔板游戏策划书 学 院:软件学院 专 业:软件工程 班 级:软工(中兴通)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.1 PuzzleGame类 „„„„„„„„„„„„„„„„„„„10 4.2.2 PuzzlePad类 „„„„„„„„„„„„„„„„„„„13 4.2.3 Black类„„„„„„„„„„„„„„„„„„„„„„15 4.2.4 Point类„„„„„„„„„„„„„„„„„„„„„„17 4.2.5 HandImage类„„„„„„„„„„„„„„„„„„„„18 4.2.6 HangleMove类 „„„„„„„„„„„„„„„„„„„19 4.2.7 VerifySuccess类„„„„„„„„„„„„„„„„„„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 - 1 - 第六章 软件的配置 „„„„„„„„„„„„„„„„„„„„„„„31 第七章 人员组织 „„„„„„„„„„„„„„„„„„„„„„„31 第八章 附录 „„„„„„„„„„„„„„„„„„„„„„„„„31 第九章 结束语 „„„„„„„„„„„„„„„„„„„„„„„„31 - 2 - 第一章:项目概述 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的方块,最后一个格子是未放置方块的空格子。 - 3 - (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系统 VerifySuccess 提供的一些重要的类,如JMenuItem、JButton等类。魔板游戏所用到得一些重要的类以及之间的组合关系如下图1所示。 HandlelMage PuzzleGame Image HandleMove JMune JButtob PuzzlePaJRadioButto Block d n Point 图1 类之间的组合关系 以下是我们编写的6个java源程序的总体设计。 (1) PuzzleGame.java(主类) PuzzleGame类负责创建魔板游戏的主窗口,该类含有main方法,程序从该类开始执行。PuzzleGame类成员变量中有4中重要类型的对象:PuzzlePad、JMune、JRadioButton和JButton。PuzzleGame类的主要成员的作用将在后面的 - 4 - 详细设计中阐述,PuzzleGame类创建的窗口以及其中的主要成员对象如图2所示。 图2 PuzzleGame窗口及主要的成员对象 (2)PuzzlePad.java PuzzlePad类创建的对象是PuzzlePad类最重要的成员之一,代表“魔板”。该类的成员变量中有5种重要类型的对象:Point、Block、HandleMove、HandleImage和Image。PuzzlePad类的主要成员的作用将在后面的详细设计中说明阐述。 (3) Block.java Block类是JTextField的一个子类,创建的对象是PuzzlePad类的重要成员之一,用来表示“魔板”中的方块。 (4)Point.java Point类负责创建确定位置的对象,使用Point对象可以确定Block对象在 - 5 - PuzzlePad对象之中的位置,即确定“方块”在“魔板”中的位置。 (5)HandleImage.java HandleImage类所创建的对象负责将一幅图像分成诺干个小图像。 (6) HandleMove.java HandleMove类所创建的对象负责处理鼠标事件。 (7)VerifySuccess VerifySuccess类所创建的对象负责验证用户是否按要求成功排列模板中的方块。 第二章 项目估算 姓名 岗位 工资 费用 工作 马泉华 组长 --------------整个项目 -- ---- 苏鑫 组员 --------------项目预算 -- --- 李志强 组员 --------------项目概述 -- --- 张琪 组员 --------------风险评估 -- --- 由于我们都是学生,这个项目使我们利用课余时间做的,所以成本可以忽略不计。我们估算用两周的时间用于项目的选题、资料等一系列的项目开发前的准备活动,用一周的时间进行项目的估算与及风险评估,用三周的时间进行项目的具体设计、研究、开发,最后一周用于整个项目的测试。所以总共大约用时一个半月的时间来完成它。 - 6 - 第三章 风险评估 3.1风险识别 风险 概率 影响 规模估计过低 严重的 60% 交付期限太紧张 严重的 50% 用户需求变化频繁 严重的 75% 技术达不到预期效果 轻微的 30% 质量保证体系的实施不严重的 60% 利 软件体系结构设计不合理 灾难性的 40% 3.2风险应对策略 1.强化团队支持,避免独立的项目结构。通过有效的团队建设增进团队之间的项目支持,可以有效地避免一些技术风险。 2.改善沟通和问题解决。同时还可以通过改善沟通,加强和改善信息流通来促使一些问题得到合理解决。 3.经常性地进行项目监督及项目检查和管理。 4.细化WBS,使用网络计划。在项目计划阶段通过细化工作包,采用网络计划等一些比较完善的计划手段编制计划,从而使造成技术风险的根源消除掉,实现降低技术风险的目的。 - 7 - 第四章 详细设计 4.1 系统的需求分析 4.1.1 用户登录界面图 登录界面 输入 自 动 跳 用户信息转 验 证 否 输入信息是否弹出错误信息合法 是 登录功能结构图 用户登录到主界面 - 8 - 4.1.2 设计流程图 开始 魔板游戏开始界面 Switch 改改开变变始游游游戏戏戏 难玩 度 法 是 否 是 否 开计 选择数字始时选初级 玩法 移器 动计初高时 方数字图像级 级 玩法 玩法 块 完成游戏 重新放置方块 选择默选择一 认图像 幅新图 像 确定玩法 退出 结束 - 9 - 主界面 选选数图择开择字像级始图玩玩 别 像法法 初高使使 级级用用 一默 幅认 新图 图像 像 总体功能图 4.2 系统的详细设计 4.2.1 PuzzleGame类 1、效果图 PuzzlePad创建的窗口效果如图5所示。 - 10 - (a) PuzzleGame创建的窗口(数字玩法) (b) PuzzleGame创建的窗口(图像玩法) 图5 PuzzleGame创建的窗口 2、UML图 MazeWindow类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口,该类的主要成员变量和方法的UML图如图6所示。 - 11 - JFrame PuzzleGame puzzlePad:PuzzlePad digitPlay,imagePlay:JRadioButton bar:JMenuBar startButton:JButton gradMenu,choiceImage:JMenu tool:Toolkit oneGrade,twoGrade:JMenuItem image:Image newImage,defaultImage:JMenuItem PuzzleGame():无类型 actionPerformed(ActionEvent):void main(String[]):void 图6 PuzzleGame类的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)方法 - 12 - , 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.2 PuzzlePad类 1、效果图 PuzzlePad创建的魔板对象效果如图7所示。 (a)数字魔板 (b)图像魔板 - 13 - 图7 PuzzlePad创建的魔板对象 2、UML图 PuzzlePad类时javax.swing包中JPanel容器的子类,所创建的对象:puzzlePad是PuzzleGame类中最重要的成员之一,作为一个容器添加到PuzzleGame窗口的中心。标明PuzzlePad类的主要成员变量、方法以及和PuzzleGame类之间组合关系的UML图如图8所示。 JPanel PuzzlePad PuzzleGame point:Point[][] handleImage:HandleImage puzzlePad: PuzzlePad block:Block[][]; verifySuccess:VerifySuccess distance:grade,m,n:int image:Image handleMove:HandelMove I sDigitPlay:Boolean tool:Toolkit PuzzlePad():无类型 needInit():void getHandleMove():HandleMove setIsDigitPlay():void setImage(Image):void setIsImagePlay():void setGrade(int):void panicComponent(Graphics):void getGrade():int 图8 PuzzlePad类的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对象上的鼠标事 - 14 - 件。 , 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.3 Black类 1、效果图 Block创建的对象效果如图9所示。 (a)对象1 (b)对象2 图9 Block创建的两个对象 2、UML图 - 15 - Block类是javax.swing包中JTextField类的一个子类,创建的对象是二维数组block的单元中的对象。Block型数组block是PuzzlePad类的重要成员之一。标明Block类的主要成员变量和方法以及和PuzzlePad类之间组合关系的UML图如图10 所示。 JTextField Block PuzzlePad Point :Point block :Block[][] Object:Object Block():无类型 setObject(Object):void setAtPoint(Point):void getObject():Object getAtPoint():Point paintConent(Graphics):void 图10 Block类的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对象。 - 16 - 4.2.4 Point类 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所示。 Point PuzzlePad x,y:int point:Point[][] haveBlock:boolean block:Block Point(int,int):无类型 getY():int isHaveBlock():boolean equals(TowerPoint):Boolean setHaveBlock(boolean):void setBlock(Block):void getX():int getBlock():Block 图11 Point类的UML图 以下是UML图中有关数据和方法的详细说明。 1)成员变量 , x和y是Point对象中的两个int类型数据,分别用来表示容器坐标系中的x 轴坐标和y轴坐标值。 , haveBlock是boolean型数据,如果有Block对象在该Point对象上时,该数 据为true;否则为false。 - 17 - , 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.5 HandleImage类 , 效果图 HandleImage创建的对象负责将一幅图像分解为诺干个小的图像,没 有可显示的效果图。 , UML图 HandleImage类是javax.swing包中JComponent类的一个子类,创建的 对象handleImage负责将一幅图像分解成诺干幅小图像,是PuzzlePad类的重 要成员之一。HandleImage类的主要成员变量和方法以及和PuzzlePad类之间 的组合关系的UML图像如图12所示。 - 18 - JComponent HandleImage PuzzlePad imageWidth,imageHight:int handleImage:handleImage tool:Toolkit HandleImage():无类型 getIages(Image,int,int):Image[] 图12 HandleImage类的UML图 以下是UML图中有关数据和方法的说明。 1)成员变量 , imageWidth和imageHeight是int型数据,用来存储图像的宽和高。 , tool是Toolkit对象,用来获得Image对象。 2)方法 , HandleImage()是构造方法,负责完成HandleImage对象的初始化。 int,int)方法将参数指定的图像分成诺干个更小, getImages(Image, 的图像,并将这些图像存放到一个Image数组中,然后返回该数组。 3)代码(HandleImage.java) 4.2.6 HangleMove类 1、效果图 andleMove创建的对象效果如图13所示。 图13 HandMove创建的对象 2、UML图 HandleMove类是javax.swing包中JPanel容器的一个子类,并实现了MouseListener和ActionListener接口,创建的对象handleMove是PuzzlePad类的成员之一,负责监视PuzzlePad类中的Block对象上的鼠标事件。当用户用鼠标单击Block对象后,handleMove对象负责给出移动Block对象有关的算法,并显示用户的时间。标明HandleMove要成员变量、方法以及和PuzzlePad类之间组 - 19 - 合关系的UML图如图14所示。 JPanel MouseListener ActionListener HandleMove PuzzlePad point:Point[][] showTime:JTextField handleMove:HandleMove spendTime:int verifSuccess recordTime:Timer HandMove(): setPoint(Point[][]):void intSpendTime():void setVerifySuccess(VerifySuccess):viod actionPerformed(ActionEvent):void mousePressed(MouseEvent e):void mouseReleased(MouseEvent e):void 图14 HandleMove类的UML图 以下是UML图中有关数据和方法的详细说明 1、成员变量 , Point是Point类型二维数组,用来存放PuzzlePad魔板容器中point数组的引 用 , SpendTime用来用户玩魔板游戏的用时 , recordTime是计时器 , showTime是JTextField创建的文本框,负责显示用时 , verify是VerifySuccess声明的对象,用来存放PuzzlePad魔板中verifySuccess 对象的引用。 2、方法 , HandleMove()是构造方法,负责创建handleMove对象 , handleMove对象调用setPoint(Point[][])方法将PuzzlePad魔板容器的point对 象的引用传递给该对象中的point,以便handleMove移动PuzzlePad魔板容 器中的Block对象 , handleMove对象调用setVerifySuccess(VerifySuccess)方法将PuzzlePad魔 板容器的verifySuccess对象的引用传递给该对象中的verify,verify对象负判 - 20 - 断魔板中的Block对象是否成功地按要求排列完毕 , handleMove对象调用initSpendTime()将spendTime的值设置为0 , mousePressed(KeyEvent)方法是HandleMove类实现的MouseListener借口 中的方法,当在Block对象上按下鼠标左键时,将触发MouseEvent键盘事 件,handleMove对象将调用执行mousePressed(KeyEvent)方法对事件作出 处理,即根据规则移动block对象 , mouseReleased(MouseEvent)方法是HandleMove类实现的MouseListener 借口中的方法,当用在Block对象上释放鼠标左键时,将触发MouseEvent 键盘事件,handleMove对象将调用执行mouseReleased(MouseEvent)方法对 事件作出处理,其主要操作时判断用户是否已经成功地将Block对象按要求 排列完毕 , actionPerformed(ActionEvent)是HandleMove类实现的ActionListener借口 中的方法。我们使用Timer类的构造法国法Timer(int a,Object b)创建了计 时器recordTime,其中的参数a的单位是毫秒,确定计时器每隔a毫秒“振铃” 一次,参数b是计时器的监视器。在这里我们取a=1000,监视器b是当前 handleMove对象。计时器方式的振铃事件是ActionEvent类型事件,当振铃 事件发生时,监视器就会监视到这个事件,监视器就调用 actionPerformed(ActionEvent)方法。当振铃每隔1000毫秒发生一次时,方法 actionPerformed(ActionEvent)就被执行一次,所执行的操作就是现实用户当 前的用时。 4.2.7 VerifySuccess类 1、效果图 没有可见的效果图。 2、UML图 VerifySuccess创建的对象负责验证用户是否按要求成功排列魔板中的方块,创建的对象verifySuccess是PuzzlePad类的重要成员之一。标明VerifySuccess类的主要成员变量和方法以及和PuzzlePad类之间组合关系的UML图15所示。 - 21 - PuzzlePad VerifySuccess point:Point[][] verifySuccess:VerifySuccess object:Object[] setPoint(Point[][]):void setObject(Object[]):void isSuccess():boolean 图15 VerifySuccess类的UML图 以下是UML图中有关数据和方法的详细说明。 1)成员变量 , point是Point类型二维数组,用来存放PuzzlePad魔板容器中point数组的引 用。 , object是Object数组,其单元可以存放任何对象。 )方法 2 , VerifySuccess对象调用setPoint(Point[][])方法将PuzzlePad魔板中的point对 象的引用传递给该对象中的point , VerifySuccess对象调用setPoint(Object[][])方法可以将PuzzlePad魔板容器的 Integer数组或Image数组的引用传递给该对象中的object , VerifySuccess对象调用isSuccess()方法判断用户是否按要求成功排列魔板中 的方块,如果成功isSuccess()方法返回true;否则返回false - 22 - 第五章 项目的实现 5.1 游戏主类的设计 主类主要定义了游戏界面的布局,以及调用的一些类来实现游戏的进行。其主要的效果图展示即为: 核心代码展示: public PuzzleGame(){ tool=getToolkit();//创建一个菜单条 bar=new JMenuBar(); gradeMenu=new JMenu("选择级别");//建立指定标题为“选择级别”的菜单 choiceImage=new JMenu("选择图像");//建立指定标题为“选择图像”的菜单 oneGrade=new JMenuItem("初级");//建立指定标题为“初级”的菜单选项 twoGrade=new JMenuItem("高级");//建立指定标题为“高级”的菜单选项 - 23 - newImage=new JMenuItem("选择一幅新图像");//建立指定标题为“选择一幅新图像”的菜单选项 defaultImage=new JMenuItem("使用默认图像");//建立指定标题为“使用默认图像”的菜单选项 gradeMenu.add(oneGrade);//向gradeMenu添加由参数oneGrade指定的菜单选项对象 gradeMenu.add(twoGrade);//向gradeMenu添加由参数twoGrade指定的菜单选项对象 choiceImage.add(newImage);//向choiceImage添加由参数newImage指定的菜单选项对象 choiceImage.add(defaultImage);//向choiceImage添加由参数defaultImage指定的菜单选项对象 bar.add(gradeMenu);//向bar菜单条添加由参数gradeMenu指定的菜单选项对象 bar.add(choiceImage);//向bar菜单条添加由参数choiceImage指定的菜单选项对象 setJMenuBar(bar);//设置菜单条里面的组件 5.2 魔板对象的实现 该游戏由数字或者图像两种选择。同时,又有高级和级低的游戏选择,因此我们需要通过一个程序来实现魔板的生成以及对象的实现。 生成的魔板显示为: 主要代码: public void setIsDigitPlay(){//将魔板设置为数字玩法 needInit(); isDigitPlay=true;//当魔板玩法是数字玩法时 ArrayList numberList=new ArrayList();//创建方格的数字对象 for(int k=0;k
/
本文档为【魔板游戏的设计与开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索