版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档,供参考!魔板游戏策划书学院:软件学院专业:软件工程班级:软工(中兴通)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 第三章风险评估
2、 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 游戏增加英雄
3、榜功能28 5.6 增加查看英雄榜功能29 5.7 增加背景音乐能29 5.8 增加登陆界面功能30 精品文档,供参考!第六章 软件的配置31 第七章 人员组织31 第八章 附录31 第九章 结束语31 精品文档,供参考!第一章:项目概述1.1 目的为了保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序,因此以文件化的形式,把对于在项目生命周期内的工作任务范围、 各项工作的任务分解、 项目团队组织结构、各团队成员的工作责任、 团队内外沟通协作方式、 开发进度、经费预算、项目 内外环境条件、 风险对策等内容做出的安排以书面的方式,作为项目团队
4、成员以及项目干系人之间的共识与约定, 项目生命周期内的所有项目活动的行动基础,项目 团队开展和检查项目工作的依据。利用所学高级语言的语法特性,结合数据结构算法、网络知识、文件处理和数据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。1.2 项目背景做这个魔板游戏是为了尝试着开发一项软件游戏所做的一个项目,由我们小组共同来完成。 java 语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言, 它同时具有的面向对象, 与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用java 语言,不仅可以开发出功能强大的大型应用程序,而且java 语言本
5、身突出的跨平台的特性也使得它特别适合于internet上的应用开发,可以这样说,java 的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目, 而魔板游戏能起到锻炼人的思维和修身养性的作用,而且魔板游戏水平颇高,我们可以自己选择不同难度的游戏,大有与人脑分庭抗礼之势。1.3 项目的范围与目标1.3.1 项目的范围魔板游戏作为一种智力小游戏,受到广大中小学生以及一些上班族的喜爱,可以在忙碌的一天之后放松下自己紧绷的精神,同时可也以得到智力的提升。魔板游戏的游戏规则十分简单,却拥有十分广阔选择空间, 使
6、得游戏背景图案可以变化多端, 比其它游戏复杂深奥。 这就是魔板游戏的魅力所在。玩魔板游戏对人脑的智力开发很有帮助,可增强一个人的计算能力、 创造能力、 思维能力、判断能力, 也能提高人的注意力和控制力。玩魔板游戏对儿童少年的智力发展起到积极作用,使他们能更好的分析事物。1.3.2 主要功能(1) 概述(1)模版由 3*3 或 4*4 个格子组成。对于3*3 魔板,在前 8 个格子里随即放置 8 个编号 18 的方块,最后一个格子是未放置的空格子;对于4*4 的魔板,在前 15 个格子里随机放置15 个编号为 115的方块,最后一个格子是未放置方块的空格子。精品文档,供参考!(2)用鼠标单击任何
7、与空格子水平或垂直相邻的方块可以把该方块移入空子,而当前方块移动之前所在的格子成为空格子。通过不断的移动方块可以将方块一行一行的按数字序号排好。(3)魔板游戏也可以使用图像来代替数字。例如,对于3*3 的魔板,将一幅图像分成 3*3 福小图像,除去最后一幅小图像(图像的右下角),将其余各小图像打乱顺序后放在魔板的方块上,最终目标是通过移动方块恢复原始图像(不包括图像的右下角)。(4)当用户按要求排列好方块后,程序弹出对话框,提示用户成功的消息。(2)项目设计内容在设计魔板游戏时,需要编写7 个 java 源文件: puzzlegame.java 、puzzlepad.java 、point.j
8、ava、block.java、handleimage.java 、verifysuccess.java和handlemove.java。模板游戏除了需要编写上述的7 个源程序所给出的类外,还需要java系统提供的一些重要的类,如jmenuitem、jbutton 等类。魔板游戏所用到得一些重要的类以及之间的组合关系如下图1 所示。图 1 类之间的组合关系以下是我们编写的6 个 java 源程序的总体设计。(1)puzzlegame.java(主类)puzzlegame类负责创建魔板游戏的主窗口,该类含有main 方法,程序从该类开始执行。puzzlegame类成员变量中有 4中重要类型的对象
9、:puzzlepad 、jmune、jradiobutton 和 jbutton。puzzlegame类的主要成员的作用将在后面的puzzlegame jmune puzzlepad jradiobutton jbuttob point block handlemove image handlelmage verifysuccess 精品文档,供参考!详细设计中阐述, puzzlegame类创建的窗口以及其中的主要成员对象如图2 所示。图 2 puzzlegame窗口及主要的成员对象(2)puzzlepad.java puzzlepad类创建的对象是 puzzlepad类最重要的成员之一,代表
10、“魔板” 。该类的成员变量中有5 种重要类型的对象:point、 block、handlemove、handleimage和 image。puzzlepad类的主要成员的作用将在后面的详细设计中说明阐述。(3) block.java block 类是 jtextfield 的一个子类,创建的对象是 puzzlepad类的重要成员之一,用来表示“魔板”中的方块。(4)point.java point 类负责创建确定位置的对象,使用point 对象可以确定block 对象在精品文档,供参考!puzzlepad对象之中的位置,即确定“方块”在“魔板”中的位置。(5)handleimage.java
11、handleimage类所创建的对象负责将一幅图像分成诺干个小图像。(6) handlemove.java handlemove 类所创建的对象负责处理鼠标事件。(7)verifysuccessverifysuccess 类所创建的对象负责验证用户是否按要求成功排列模板中的方块。第二章项目估算姓名岗位工资费用工作马泉华组长- - 整个项目苏鑫组员- - 项目预算李志强组员- - 项目概述张琪组员- - 风险评估由于我们都是学生,这个项目使我们利用课余时间做的,所以成本可以忽略不计。我们估算用两周的时间用于项目的选题、资料等一系列的项目开发前的准备活动,用一周的时间进行项目的估算与及风险评估,用
12、三周的时间进行项目的具体设计、研究、开发,最后一周用于整个项目的测试。所以总共大约用时一个半月的时间来完成它。精品文档,供参考!第三章 风险评估3.1 风险识别3.2 风险应对策略1. 强化团队支持, 避免独立的项目结构。 通过有效的团队建设增进团队之间的项目支持,可以有效地避免一些技术风险。2. 改善沟通和问题解决。 同时还可以通过改善沟通, 加强和改善信息流通来促使一些问题得到合理解决。3. 经常性地进行项目监督及项目检查和管理。4. 细化 wbs ,使用网络计划。在项目计划阶段通过细化工作包,采用网络计划等一些比较完善的计划手段编制计划,从而使造成技术风险的根源消除掉,实现降低技术风险的
13、目的。风险概率影响规模估计过低60% 严重的交付期限太紧张50% 严重的用户需求变化频繁75% 严重的技术达不到预期效果30% 轻微的质量保证体系的措施实施不利60% 严重的软件体系结构设计不合理40% 灾难性的精品文档,供参考!第四章详细设计4.1 系统的需求分析4.1.1 用户登录界面图用户信息输入信息是否合法用户登录到主界面是弹出错误信息否输入登录界面自动跳转验证登录功能结构图精品文档,供参考!4.1.2 设计流程图开始魔板游戏开始界面switch 开始游戏计时器计时开始移动方块改变游戏难度完成游戏选初级初级高级重新放置方块改变游戏玩选择数字玩法数字玩法图像玩法选 择 一幅 新 图像选择
14、默认图像确定玩法退出结束是否是否精品文档,供参考!总体功能图4.2 系统的详细设计4.2.1 puzzlegame类1、效果图puzzlepad创建的窗口效果如图5所示。主界面开始选择级别选择图像数字玩法图像玩法初级高级使用一幅新图像使用默认图像精品文档,供参考!(a) puzzlegame创建的窗口(数字玩法)(b) puzzlegame创建的窗口(图像玩法)图 5 puzzlegame创建的窗口2、uml 图mazewindow 类 是 javax.swing 包 中 jframe 的 一 个 子 类 , 并 实 现 了actionlistener 接口,该类的主要成员变量和方法的uml
15、图如图 6 所示。精品文档,供参考!图 6 puzzlegame类的 uml 图以下是 uml 图中有关数据和方法的详细说明。1)成员变量puzzlepad是 puzzlepad类声明的对象,用来刻画魔板,是puzzlegame类中最重要的成员之一bar是 jmenubar创建的菜单条,用来添加菜单。bar被放置在窗口的顶部grademenu和 choiceimage是 jmenu创建的菜单, 其名字分别为 “选择级别”和“选择图像”。grademenu,choiceimage被添加到菜单条( bar)中。onegrade 、 twograde、 newimage和 defaultimage是
16、 jmenuitem创建的菜单项,名字依次为“初级” ,“高级” ,“选择一幅新图像”和 “使用默认图像”, onegrade和 twograde菜单项被添加到菜单grademenu 中,newimage和 defaultimage都将当前窗口注册为自己的actionevent 事件监视器。digitplay 和 imageplay 是 jradiobutton 创建的属于同一选择组中的单选框,名字依次为“数字玩法” , “图像玩法”。同一时刻 digitplay 和 imageplay中只能有一个处于选中状态。startbutton 是 jbutton 创建的按钮对象,名字为“开始” 。st
17、artbutton 将当前窗口注册为自己的actionevent 事件监视器。image是 image声明的对象。tool 是 toolkit 对象,负责创建 image对象2)方法puzzlepad:puzzlepad digitplay,imageplay:jradiobutton bar:jmenubar startbutton:jbutton gradmenu,choiceimage:jmenu tool:toolkit onegrade,twograde:jmenuitem image:image newimage,defaultimage:jmenuitem puzzlegame(
18、) :无类型actionperformed(actionevent):void main(string):void jframe puzzlegame 精品文档,供参考!puzzlegame() 是构造方法,负责完成窗口的初始化操作。actionperformed(actionevent)方法是 puzzlegame类实现 actionlistener 接口中的方法。 puzzlegame 类创建的窗口是菜单中的菜单项、单选框以及按钮上的 actionevent 事件监视器。如果用户选中onegrade或 twograde 菜单项时 actionperformed(actionevent)方法
19、所执行的操作分别是让puzzlepad对象将自己的级别设置为一级或二级。如果用户选中newimage 或 defaultimage菜单项时, actionperformed(actionevent)方法所执行的操作就是分别改变image对象。 当用户单击 start按钮后,如果单选框 digitplay 处于被选中状态,那么 actionperformed(actionevent)方法所执行的操作就是让puzzlepad对象使 用 数 字 魔 板 , 如 果 单 选 框imageplay被 选 中 时 , 那 么actionperformed(actionevent)方法所执行的操作就是让pu
20、zzlepad 对象使用图像魔板。main 方法是程序运行的入口方法。4.2.2 puzzlepad类1、效果图puzzlepad创建的魔板对象效果如图7 所示。(a)数字魔板(b)图像魔板精品文档,供参考!图 7 puzzlepad创建的魔板对象2、uml 图puzzlepad类时 javax.swing 包中 jpanel容器的子类,所创建的对象:puzzlepad是 puzzlegame类中最重要的成员之一, 作为一个容器添加到puzzlegame窗口的中心。标明 puzzlepad类的主要成员变量、方法以及和puzzlegame类之间组合关系的 uml 图如图 8 所示。图 8 puz
21、zlepad类的 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. han
22、dlemove是 handlemove 类创建的对象,负责处理block 对象上的鼠标事puzzlepad point:point handleimage:handleimage block:block; verifysuccess:verifysuccess distance:grade,m,n:int image:image handlemove:handelmove i sdigitplay:boolean tool:toolkit puzzlepad():无类型needinit():void gethandlemove():handlemove setisdigitplay():voi
23、d setimage(image):void setisimageplay():void setgrade(int):void paniccomponent(graphics):void getgrade():int jpanel puzzlegame puzzlepad: puzzlepad 精品文档,供参考!件。handleimage是 handleimage类创建的对象,负责将一幅图像分成若干幅小图像。verifysuccess是 verifysuccess类创建的对象,负责验证用户是否按要求成功排列了魔板中的方块。image是 image声明的图像对象。tool 是 toolkit 对
24、象,负责创建 image声明的图像对象: image。 、2)方法puzzlepad ()是构造方法,负责创建puzzlepad对象。puzzlepad对象调用 gethandlemove()方法返回其中的handlemove 对象,即返回 handlemove。puzzlepad对象调用 setimage(image) 方法设置 image 对象。puzzlepad对象调用 setgrade(int)方法设置魔板的级别。puzzlepad对象调用 getgrade()方法返回 grade。puzzlepad对象调用 needinit()方法负责完成 block 和 point 对象的创建,
25、以及完成对其他的对象的初始化。 、puzzlepad对象调用 setisdigitplay()方法将魔板设置为数字玩法。puzzlepad对象调用 setisimageplay() 方法将魔板设置为图像玩法。puzzlepad 对象调用paintcomponent(graphics) 方法将魔板使用的图像,即image对象,绘制在魔板的右侧。4.2.3 black类1、效果图block 创建的对象效果如图9所示。(a)对象 1 (b)对象 2 图 9 block 创建的两个对象2、uml 图精品文档,供参考!block 类是 javax.swing 包中 jtextfield类的一个子类,创建
26、的对象是二维数组 block 的单元中的对象。 block 型数组 block 是 puzzlepad类的重要成员之一。标明 block 类的主要成员变量和方法以及和puzzlepad类之间组合关系的uml图如图 10 所示。图 10 block 类的 uml 图以下是 uml 图中有关数据和方法的详细说明。1)成员变量point 是 point 型对象,用来确定 block 对象在 puzzlepad 所创建的魔板容器中的位置。object是 object 类型的对象,用来确定 block 对象上所显示的数字或图像。2)方法block 对象调用 setatpoint (point ) 方法设
27、置自己所在的“点” , 即设置 point对象的引用。block 对象调用 setatpoint ()返回自己所在的“点”即返回point对象的引用。block 对象调用 setobject (object )方法设置自己的成员object ,当设置object 是 integer对象时,当前的 block 对象显示 integer对象中的数字;当设置 object是 image 对象时,当前 block 对象将调用 repaint ()方法重新绘制 image 对象。block 对象调用 paintcomponent(graphics )方法绘制出 image对象。jtextfield po
28、int :point object:object block () :无类型setobject(object):void setatpoint(point):void getobject():object getatpoint():point paintconent(graphics):void blockpuzzlepad block :block 精品文档,供参考!4.2.4 point类1、效果图point 创建的对象负责确定block 对象在 puzzlepad魔板容器中所在的位置。point 创建的对象没有可显示的效果图。2、uml 图point 创建的对象含有两个重要int 型数据
29、,分别用来表示puzzlepad魔板容器坐标系中的 x 轴坐标和 y 轴坐标值,坐标系的原点是puzzlepad魔板容器的左上角,向右是 x 轴的正向,向下是y 轴的正向。 point 类创建的对象是二维数组point 的单元中的对象。 point 型二维数组 point 是 puzzlepad魔板容器的重要成员之一, 其单元中的 point 对象用来确定 block 对象在 puzzlepad魔板容器中的位置。标明 point 类的主要成员变量和方法以及和puzzlepad类之间组合关系的uml 图如图 11 所示。图 11 point 类的 uml 图以下是 uml 图中有关数据和方法的详
30、细说明。1)成员变量x 和 y 是 point 对象中的两个 int 类型数据,分别用来表示容器坐标系中的x轴坐标和 y 轴坐标值。haveblock 是 boolean型数据,如果有 block 对象在该 point 对象上时,该数据为 true;否则为 false。x,y:int haveblock:boolean block:block point(int,int) :无类型gety():int ishaveblock():boolean equals(towerpoint):boolean sethaveblock(boolean):void setblock(block ):void
31、 getx():int getblock():block point puzzlepad point: point 精品文档,供参考!block 是 block 类声明的对象,用来存放一个 block 对象的引用,标明该 block对象在当前 point 对象上。2)方法point(int ,int)是构造方法,用来创建point 对象。point 对象调用 ishaveblock ()方法返回一个 boolean型数据,如果当前 point对象上有 block 对象, ishaveblock()方法返回 true;否则返回 false。point 对象调用 sethaveblock (boo
32、lean) 方法可以根据参数的值设置当前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创建的对象负
33、责将一幅图像分解为诺干个小的图像,没有可显示的效果图。uml 图handleimage类是 javax.swing 包中 jcomponent类的一个子类, 创建的对象 handleimage负责将一幅图像分解成诺干幅小图像, 是 puzzlepad类的重要成员之一。handleimage类的主要成员变量和方法以及和puzzlepad类之间的组合关系的 uml 图像如图 12所示。精品文档,供参考!图 12 handleimage类的 uml 图以下是 uml 图中有关数据和方法的说明。1)成员变量imagewidth 和 imageheight 是 int型数据,用来存储图像的宽和高。too
34、l是 toolkit对象,用来获得 image 对象。2)方法handleimage() 是构造方法,负责完成handleimage对象的初始化。getimages(image,int ,int )方法将参数指定的图像分成诺干个更小的图像,并将这些图像存放到一个image数组中,然后返回该数组。3)代码( handleimage.java )4.2.6 hanglemove类1、效果图andlemove创建的对象效果如图13 所示。图 13 handmove 创建的对象2、uml 图handlemove 类是javax.swing 包中jpanel 容器的一个子类,并实现了mouseliste
35、ner和 actionlistener 接口,创建的对象 handlemove是 puzzlepad类的成员之一,负责监视puzzlepad类中的 block 对象上的鼠标事件。当用户用鼠标单击 block 对象后,handlemove对象负责给出移动block 对象有关的算法, 并显示用户的时间。标明handlemove 要成员变量、方法以及和puzzlepad类之间组jcomponent handleimage imagewidth ,imagehight :int tool:toolkit handleimage() :无类型getiages(image,int,int) :image
36、puzzlepad handleimage:handleimage 精品文档,供参考!合关系的 uml 图如图 14 所示。图 14 handlemove类的 uml 图以下是 uml 图中有关数据和方法的详细说明1、成员变量point 是 point 类型二维数组,用来存放 puzzlepad魔板容器中 point 数组的引用spendtime用来记录用户玩魔板游戏的用时recordtime是计时器showtime是 jtextfield 创建的文本框,负责显示用时verify 是 verifysuccess声明的对象,用来存放 puzzlepad魔板中 verifysuccess对象的引用
37、。2、方法handlemove()是构造方法,负责创建handlemove对象handlemove对象调用 setpoint(point) 方法将 puzzlepad魔板容器的 point 对象的引用传递给该对象中的point,以便 handlemove 移动 puzzlepad魔板容器中的 block 对象handlemove 对象调用 setverifysuccess (verifysuccess )方法将 puzzlepad魔板容器的 verifysuccess对象的引用传递给该对象中的verify, verify 对象负判jpanel mouselistener actionliste
38、ner handlemove point: point showtime:jtextfield 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 puzzlepad handlemov
39、e:handlemove 精品文档,供参考!断魔板中的 block 对象是否成功地按要求排列完毕handlemove对象调用 initspendtime()将 spendtime的值设置为 0 mousepressed (keyevent)方法是 handlemove 类实现的 mouselistener借口中的方法,当在block 对象上按下鼠标左键时,将触发mouseevent 键盘事件,handlemove 对象将调用执行 mousepressed (keyevent)方法对事件作出处理,即根据规则移动block 对象mousereleased (mouseevent)方法是 handl
40、emove 类实现的 mouselistener借口中的方法,当用在block 对象上释放鼠标左键时,将触发mouseevent键盘事件, handlemove 对象将调用执行mousereleased(mouseevent) 方法对事件作出处理,其主要操作时判断用户是否已经成功地将block 对象按要求排列完毕actionperformed (actionevent)是 handlemove 类实现的 actionlistener 借口中的方法。我们使用timer 类的构造法国法 timer(int a,object b)创建了计时器 recordtime,其中的参数 a的单位是毫秒, 确定
41、计时器每隔 a 毫秒 “振铃”一次,参数 b 是计时器的监视器。在这里我们取a=1000,监视器 b 是当前handlemove 对象。计时器方式的振铃事件是actionevent 类型事件,当振铃事 件 发 生 时 , 监 视 器 就 会 监 视 到 这 个 事 件 , 监 视 器 就 调 用actionperformed(actionevent)方法。当振铃每隔1000 毫秒发生一次时,方法actionperformed(actionevent)就被执行一次,所执行的操作就是现实用户当前的用时。4.2.7 verifysuccess类1、效果图没有可见的效果图。2、uml 图verifys
42、uccess创建的对象负责验证用户是否按要求成功排列魔板中的方块,创建的对象 verifysuccess是 puzzlepad类的重要成员之一。 标明 verifysuccess类的主要成员变量和方法以及和puzzlepad类之间组合关系的uml 图 15所示。精品文档,供参考!图 15 verifysuccess类的 uml 图以下是 uml 图中有关数据和方法的详细说明。1)成员变量point 是 point 类型二维数组, 用来存放 puzzlepad魔板容器中 point 数组的引用。object是 object 数组,其单元可以存放任何对象。2)方法verifysuccess对象调用
43、 setpoint(point) 方法将 puzzlepad魔板中的 point 对象的引用传递给该对象中的point verifysuccess对象调用 setpoint(object)方法可以将 puzzlepad魔板容器的integer数组或 image数组的引用传递给该对象中的object verifysuccess对象调用 issuccess() 方法判断用户是否按要求成功排列魔板中的方块,如果成功issuccess() 方法返回 true;否则返回 false point:point object:object puzzlepad verifysuccess verifysucce
44、ss:verifysuccess setpoint(point):void setobject(object):void issuccess():boolean 精品文档,供参考!第五章项目的实现5.1 游戏主类的设计主类主要定义了游戏界面的布局,以及调用的一些类来实现游戏的进行。其主要的效果图展示即为:核心代码展示:public puzzlegame() tool=gettoolkit();/ 创建一个菜单条bar=new jmenubar(); grademenu=new jmenu( 选择级别 );/ 建立指定标题为“选择级别”的菜单choiceimage=new jmenu( 选择图像
45、 );/ 建立指定标题为“选择图像”的菜单onegrade=new jmenuitem( 初级 );/建立指定标题为“初级”的菜单选项twograde=new jmenuitem( 高级 );/建立指定标题为“高级”的菜单选项精品文档,供参考!newimage=new jmenuitem( 选择一幅新图像);/ 建立指定标题为 “选择一幅新图像”的菜单选项defaultimage=new jmenuitem( 使用默认图像);/ 建立指定标题为“使用默认图像”的菜单选项grademenu.add(onegrade);/向 grademenu 添加由参数onegrade 指定的菜单选项对象gra
46、demenu.add(twograde);/ 向 grademenu 添加由参数twograde 指定的菜单选项对象choiceimage.add(newimage);/ 向 choiceimage 添加由参数newimage 指定的菜单选项对象choiceimage.add(defaultimage);/ 向 choiceimage 添加由参数 defaultimage 指定的菜单选项对象bar.add(grademenu);/向 bar 菜单条添加由参数grademenu 指定的菜单选项对象bar.add(choiceimage);/向 bar 菜单条添加由参数choiceimage 指定
47、的菜单选项对象setjmenubar(bar);/ 设置菜单条里面的组件5.2 魔板对象的实现该游戏由数字或者图像两种选择。同时,又有高级和级低的游戏选择,因此我们需要通过一个程序来实现魔板的生成以及对象的实现。生成的魔板显示为:主要代码:public void setisdigitplay()/将魔板设置为数字玩法needinit(); isdigitplay=true;/ 当魔板玩法是数字玩法时arraylist numberlist=new arraylist();/创建方格的数字对象for(int k=0;km*n-1;k+) numberlist.add(k+1); 精品文档,供参考
48、!object object=numberlist.toarray(); verifysuccess.setobject(object); collections.shuffle(numberlist); /随机排列数字int k=0; for(int i=0;im;i+) if(im-1) for(int j=0;jn;j+) blockij.setobject(numberlist.get(k); k+; else for(int j=0;jn-1;j+) blockij.setobject(numberlist.get(k); k+; repaint(); 魔板中每一个小块的形成以及图片
49、分割之后的对象的实现:效果如图:主要代码显示:public void setobject(object object)/定义 setobject 类this.object=object;/this 代表使用该方法的当前对象if(object instanceof integer)/ 条件判断语句,满足要求时执行下列语句integer number=(integer)object; settext(+value(); else if(object instanceof image)/ 不满足 if 条件语句是执行的条件repaint(); 精品文档,供参考! public o
50、bject getobject()/ 创建该类return object;/ 返回值 5.3 游戏使用时间的设计智力类的游戏都会记录下游戏所用的时间,魔板游戏属于智力类游戏之一,因此,对于时间的记录也将在我们的设计范围之内。实现的结果可以给游戏者一个提示。时间显示如下:部分代码:public void mousepressed(mouseevent e) / 鼠标事件recordtime.start();/ 开始时间触发block block = null;/设置数据为空block = (block) e.getsource();/ 调用 block 类. for (int i = 0; i
51、point.length; i+) /用 for 循环来实现魔板游戏的进行for (int j = 0; j point0.length; j+) if (pointij.equals(startpoint) starti = i; startj = j; break; for (int i = 0; i point.length; i+) for (int j = 0; j point0.length; j+) if (pointij.ishaveblock() = false) 精品文档,供参考!endi = i; endj = j; endpoint = pointij; break;
52、/ 两个 for 循环记录了魔板的移动路线以及魔板游戏的进度boolean movecondition1 = math.abs(endi - starti) = 1 & endj = startj;/判断在行上是否满足了条件boolean movecondition2 = math.abs(endj - startj) = 1 & endi = starti;/判断在列上是否满足了条件if (movecondition1 | movecondition2) /魔板游戏结束时,存在的一些信息记. 5.4 游戏成功与否的判断设计对游戏是否成功完成进行监测,一旦成功,着弹出窗口,显示
53、“您成功了!”的消息框。主要代码:public void mousereleased(mouseevent e) if (verify.issuccess() recordtime.stop(); record.settime(spendtime); record.setgrade(grade); if (isdigitalplay) record.setname(数字玩法 ); else record.setname(图片玩法 ); if (record.isnewrecord() record.setvisible(true); else 精品文档,供参考!joptionpane.show
54、messagedialog(this, 您 成 功 了 !, 消 息 框 , joptionpane.informa tion_message); 5.4 程序设计及调试运行利用jsp “一次编写,各处运行”的编程优点, 按功能模块结构设计菜单 ,布置各明细模块工作界面, 编写各个模块的程序代码, 进行编译连接运行, 经过反复调试修改, 以达到系统功能要求。 这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、 编写程序并调试, 做到程序简洁清楚, 尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。5.5 增加英雄榜功能对相应的级别增加“英雄榜”功能。当用户成功排列魔板中的方块后,如果成绩能排进前三名,就弹出一个对话框,将用户的成绩保存到“英雄榜”中。具体实现:主要代码:else if (e.getsource() = defaultimage) try image = tool.createimage(new file(d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省扬州市邗江实验2025届中考生物四模试卷含解析
- 2025版电子商务与传统法律冲突解析及合同签署指引3篇
- 2024年全国体育专业单独招生考试数学试卷试题真题(含答案)
- 抗菌药物合理使用对耐药菌感染的影响
- 高一化学第三单元金属及其化合物第二讲几种重要的金属化合物练习题
- 2024高中地理第一章宇宙的地球中3-1地球的运动学案湘教版必修1
- 2024高中语文第一单元以意逆志知人论世自主赏析拟行路难其四学案新人教版选修中国古代诗歌散文欣赏
- 2024高中语文第四单元创造形象诗文有别项羽之死训练含解析新人教版选修中国古代诗歌散文欣赏
- 2024高考化学二轮复习专题突破练10B有机化学含解析
- 2024高考地理一轮复习专练28自然地理环境的整体性含解析新人教版
- 203中药3班学习通超星期末考试答案章节答案2024年
- 小学一年级数学思维训练100题(附答案)
- 2024年注册计量师-二级注册计量师考试近5年真题集锦(频考类试题)带答案
- 第2课 古代世界的帝国与文明的交流 课件-高三统编版(2019)必修中外历史纲要下一轮复习
- 废品创意与制作(教学设计)-2024-2025学年四年级上册综合实践活动教科版
- TCACM 1603-2024 手法通乳中医技术操作规范
- 医疗科研伦理审核制度
- 市政道路及设施零星养护服务技术方案(技术标)
- 钻机操作规程专项培训考试题及答案
- 2024助贷委托服务协议合同模板
- 工程款结算协议书-景观绿化结算
评论
0/150
提交评论