毕业论文-基于Java的魔板游戏的设计与开发32446.doc_第1页
毕业论文-基于Java的魔板游戏的设计与开发32446.doc_第2页
毕业论文-基于Java的魔板游戏的设计与开发32446.doc_第3页
毕业论文-基于Java的魔板游戏的设计与开发32446.doc_第4页
毕业论文-基于Java的魔板游戏的设计与开发32446.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2009级程序设计综合实验报告 程序设计综合课程设计报告报告题目:基于java的魔板游戏的设计与开发学 院 : 信息与电子工程学院 专 业 : 计算机科学与技术 班 级 : 计算机班 学 号 : 、 、 学生姓名 : (组长)、 指导教师 : 二一一年 六月程序设计综合课程设计任务书1.1主要任务与目标(1)掌握java语言,能够学会使用javascript,jcreator开发具体的网站以及uml做分析需求。(2)熟悉数据库sqlserver 2008的使用,熟悉数据库编程语言(主要是sql)。(3)使用所学知识开发一个基于java的魔板图像游戏。1.2主要内容与基本要求(1)模版由3*3或4*4个格子组成。对于3*3魔板,在前8个格子里随即放置8个编号18的方块,最后一个格子是未放置的空格子;对于4*4的魔板,在前15个格子里随机放置15个编号为115的方块,最后一个格子是未放置方块的空格子。(2)用鼠标单击任何与空格子水平或垂直相邻的方块可以把该方块移入空格子,而当前方块移动之前所在的格子成为空格子。通过不断的移动方块可以将方块一行一行的按数字序号排好。(3)魔板游戏也可以使用图像来代替数字。例如,对于3*3的魔板,将一幅图像分成3*3福小图像,除去最后一幅小图像(图像的右下角),将其余各小图像打乱顺序后放在魔板的方块上,最终目标是通过移动方块恢复原始图像(不包括图像的右下角)。(4)当用户按要求排列好方块后,程序弹出对话框,提示用户成功的消息。(5)魔板游戏分成两个级别,用户可以通过界面上提供的菜单消息选择“初级”或“高级”两个级别。对于“初级”级别,魔板由3*3格子组成;对于“高级”级别,魔板由4*4个格子组成。(6)“魔板游戏”提供一幅默认图像,用户可以使用该图像来玩魔板游戏。用户也可以使界面提供的菜单选择一幅新图像,然后使用这个新图像来玩魔板游戏。(7)对相应的级别增加“英雄榜”功能。当用户成功排列魔板中的方块后,如果成绩能排进前三名,就弹出一个对话框,将用户的成绩保存到“英雄榜”中。(8)增加一个查看“英雄榜”的功能,使用户在玩游戏时,可以查看当前游的最高成绩。(9)在handlemove中增加播放音乐的功能模块,当用户移动方块后,程序播放简短的一声音乐。用java可以编写播放。au、.aiff、.wav、.midi、.rfm格式的音频。假设音频文件hello.au位于应用程序当前目录中,有关播放音乐的知识总结如下:创建file对象(file类属于java.io包):file musicfile =new file(“hello.au”);获取uri对象(uri类属于包):uri uri=musicfile.touri();创建音频对象(audioclip和applet类属于java.applet包):audioclip clip=applet.newaudioclip(url);播放,循环与停止:clip.play() clip.loop() clip.stop()1.3开发工具jcreator pro、jdk、eclipse、uml、sqlserver2008等。1.4计划进度(1)4月 11 日- 4月 17 日:分组确定组员,搜集资料、查阅文献,确定选题。(2)4月 18 日-4 月24 日:游戏的需求分析,游戏设计,游戏功能模块完善(3)4 月 25 日-4 月 30 日:基于魔板拼图游戏玩家信息存储的数据库分析与设计(4)5 月 08 日- 5 月 21 日:主要模块程序流程图、编程实现游戏功能(5)5 月 22 日5 月 27 日:魔板游戏平台调试、测试、修改与完善(6)5 月 28 日6 月 02 日:魔板拼图游戏课程设计报告撰写(7)6 月 03 日6 月 03 日:魔板拼图游戏课程设计报告答辩1.5主要参考文献01耿祥义,张跃平.java课程设计(第二版).清华大学出版社.2008年11月6章第02兰红,王建雄,黄云.基于java swing的中国象棋游戏的设计与实现.j电脑开发与应用2006年第19卷第11期.60-6103江耿豪.编程型游戏编程框架的设计方法j. 软件导刊2010年第7期.04 吴闻.游戏程序设计中若干问题的探讨.j.电脑知识与技术:学术交流2009年第5卷第6期05周凤英文惺.java游戏开发step by step系列之三java游戏开发起步。电脑爱好者2003年14期06petchel t.晏利斌.孙淑敏.邵荣java 2游戏编程200507荣钦科技java 2游戏设计200408罗运模.王珊sql server数据库系统基础200009 尚俊杰.李芳乐.李浩文轻游戏:教育游戏的希望和未来期刊论文-电化教育研究2005(01)10 丁振凡.java语言使用教程m.北京:北京邮电大学出版社,200411 陆光义.java游戏编程导学.北京:清华大学出版社,200412 朱付喜.java语言与面向对象程序设计.武汉:武汉大学出版社,200213 adam drozdek.数据结构与算法(java语言版).北京:机械工业出版社,2003.714 萨师煊,王珊.数据库系统概论m.北京:清华大学出版社,20021.6小组分工(组长):资料汇总,撰写任务书,课程设计报告,部分代码编写注释,添加部分功能,总体设计,课程设计报告的总结。详细设计: 负责block类,handleimage类,handlemove类,verifysuccess类的编写。: 查找资料,需求分析,部分代码编写注释,添加部分功能详细设计: 负责puzzlegame类,point类的编写。程序运行。音乐功能的添加,登陆界面功能的增加。: 查找资料,需求分析,部分代码编写注释,添加部分功能,详细设计: 负责puzzlepad类的编写。代码检查。英雄榜功能的增加,查看英雄榜功能的增加。学生(签字) 2011年4月 11日指导教师 2011年4月11日目录 程序设计综合课程设计任务书.- 1 -1.1主要任务与目标- 1 -1.2主要内容与基本要求- 1 -1.3开发工具- 2 -1.4计划进度- 2 -1.5主要参考文献- 3 -1.6小组分工- 3 -摘要- 7 -abstract- 8 -第一章引言- 9 -1.1背景- 9 -1.2课程设计内容- 9 -1.2.1需求分析- 9 -1.2.2课程设计内容- 10 -1.2.3设计工具与运行环境- 12 -第二章魔板游戏详细设计- 13 -2.1 系统的需求分析- 13 -2.1.1 用户登录界面图- 13 -2.1.2 设计流程图- 14 -2.1.3 系统开发及运行环境- 15 -2.1.4 系统主要功能要求- 16 -2.2 系统的详细设计- 16 -2.2.1 puzzlegame类- 16 -2.2.2 puzzlepad类- 19 -2.2.3 black类- 21 -2.2.4 point类- 22 -2.2.5 handleimage类- 24 -2.2.6 hanglemove类- 25 -2.2.6 verifysuccess类- 27 -第三章魔板游戏系统的具体实现- 29 -3.1 游戏主类的设计- 29 -3.2 魔板对象的实现- 30 -3.3 游戏使用时间的设计- 32 -3.4 游戏成功与否的判断设计- 33 -3.4 程序设计及调试运行- 34 -第四章添加新功能- 35 -4.1 增加英雄榜功能- 35 -4.2 增加查看英雄榜功能- 36 -4.3 增加背景音乐功能- 37 -4.4 增加登录界面功能- 37 -第五章结束语- 38 -致谢- 39 -参考文献:- 40 -附录:源代码- 41 -puzzlegame- 41 -puzzlepad.java- 43 -block.java- 46 -point.java- 46 -handleimage.java- 47 -handlemove.java- 47 -verifysuccess.java- 49 -record.java- 50 -showrecord.java- 51 -login.java- 53 -playmusic.java- 54 -摘要一种较“捉放曹”玩耍方式多,游戏可易可难,且功能多的智力魔板,它由具有边框及活动档板的魔盘和若干块两面都印有图案或者数字的魔板组成。各魔板两面的图案分别数字表示其序号。游戏时可随意调节魔盘的使用面积和自由布题,然后滑动魔板,使故事情节展现在眼前,即使智力较低的幼儿,也可看图说话、讲故事和做拼图、排画等智力积木游戏。使其启迪思维、开发智力。我们用java语言编写的游戏可以完成对数字、图案的一个游戏,设计调用一些类以及类方法来完成我们的设计目的。关键字:智力魔板、游戏、java、开发智力abstracta relatively catch put cao play, the game can be easy way can be difficult, and the intelligence function is much, it moban have borders and activities by the baffle plate and several blocks demons with both sides of the moban pattern or digital. the two sides moban pattern of digital said its serial number respectively. games can be adjusted as the use of magic plate area and free cloth, and then sliding moban problem, make the story unfolded in front of their eyes, even if intelligence lower kindergarten, also can speak, told stories and pictures do puzzles, row painting and other intelligence board games. make its enlightenment thinking, and developing intelligence. we use java language games written for digital, design can be completed in a game, design of some kind and call way to accomplish our design goal. key word: intelligence moban, games, java, and developing intelligence 第一章 引言1.1 背景魔板游戏作为一种智力小游戏,受到广大中小学生以及一些上班族的喜爱,可以在忙碌的一天之后放松下自己紧绷的精神,同时可也以得到智力的提升。魔板游戏的游戏规则十分简单,却拥有十分广阔选择空间,使得游戏背景图案可以变化多端,比其它游戏复杂深奥。这就是魔板游戏的魅力所在。玩魔板游戏对人脑的智力开发很有帮助,可增强一个人的计算能力、创造能力、思维能力、判断能力,也能提高人的注意力和控制力。玩魔板游戏对儿童少年的智力发展起到积极作用,使他们能更好的分析事物。java语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用java语言,不仅可以开发出功能强大的大型应用程序,而且java语言本身突出的跨平台的特性也使得它特别适合于internet上的应用开发,可以这样说,java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而魔板游戏能起到锻炼人的思维和修身养性的作用,而且魔板游戏水平颇高,我们可以自己选择不同难度的游戏,大有与人脑分庭抗礼之势。1.2 课程设计内容1.2.1 需求分析魔板游戏就是大家以前常玩的拼板游戏!就是将一幅完整的图片分成小块,打乱顺序,再拼好,并且只能将图块和临界的空格交换位置。用最短的时间和最省的步骤将图形拼好,此玩法虽然简单,但特别考验智力,魔板游戏与魔方游戏相似属于益智游戏。此项目我们需要通过面向对象的java程序设计来实现,游戏设计中需要用到gui图形界面的设计,产生随机数生成打乱的图片,各种事件(动作事件、鼠标事件和窗口事件等)的响应和处理等面向对象的知识来实现游戏的各项功能。1.2.2 课程设计内容在设计魔板游戏时,需要编写7个java源文件:puzzlegame.java、puzzlepad.java、point.java、block.java、handleimage.java、verifysuccess.java和handlemove.java。模板游戏除了需要编写上述的7个源程序所给出的类外,还需要java系统提供的一些重要的类,如jmenuitem、jbutton等类。魔板游戏所用到得一些重要的类以及之间的组合关系如下图1所示。puzzlegamejmunepuzzlepadjradiobuttonjbuttobpointblockhandlemoveimagehandlelmageverifysuccess图1 类之间的组合关系以下是我们编写的6个java源程序的总体设计。(1) puzzlegame.java(主类) puzzlegame类负责创建魔板游戏的主窗口,该类含有main方法,程序从该类开始执行。puzzlegame类成员变量中有4中重要类型的对象:puzzlepad、jmune、jradiobutton和jbutton。puzzlegame类的主要成员的作用将在后面的详细设计中阐述,puzzlegame类创建的窗口以及其中的主要成员对象如图2所示。图2 puzzlegame窗口及主要的成员对象(2)puzzlepad.javapuzzlepad类创建的对象是puzzlepad类最重要的成员之一,代表“魔板”。该类的成员变量中有5种重要类型的对象:point、block、handlemove、handleimage和image。puzzlepad类的主要成员的作用将在后面的详细设计中说明阐述。(3) block.javablock类是jtextfield的一个子类,创建的对象是puzzlepad类的重要成员之一,用来表示“魔板”中的方块。(4)point.javapoint类负责创建确定位置的对象,使用point对象可以确定block对象在puzzlepad对象之中的位置,即确定“方块”在“魔板”中的位置。(5)handleimage.javahandleimage类所创建的对象负责将一幅图像分成诺干个小图像。(6) handlemove.javahandlemove类所创建的对象负责处理鼠标事件。(7)verifysuccessverifysuccess类所创建的对象负责验证用户是否按要求成功排列模板中的方块。1.2.3 设计工具与运行环境(1)设计工具 eclipse、jcreator pro。(2)运行环境 jdk1.6.0、eclipse、window7。第二章 魔板游戏详细设计这一章时介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图,uml图。2.1 系统的需求分析2.1.1 用户登录界面图图3 登录功能结构图2.1.2 设计流程图开始魔板游戏开始界面switch开始游戏计时器计时开始移动方块改变游戏难度完成游戏选初级初级高级重新放置方块改变游戏玩法选择数字玩法数字玩法图像玩法选择一幅新图像选择默认图像确定玩法退出结束是否是否图4-1总体流程图主界面开始选择级别选择图像数字玩法图像玩法初级高级使用一幅新图像使用默认图像图4-2 总体功能图2.1.3 系统开发及运行环境硬件平台:q cpu:p41.8ghzq 内存:256mb以上软件平台:q 操作系统:windows xpq 开发工具包:jdk version1.6.2q jsp服务器:tomcat 6.0q 浏览器:推荐使用ie6.0q 分辨率:最佳效果1024*768像素2.1.4 系统主要功能要求 我们所完成的魔板游戏可以实现基本的魔板游戏的功能。此项目魔板游戏可由用户选择3*3和4*4两个不同难度,n*n的魔板游戏原理与此相同,游戏可以通过下拉列表实现选择不同的游戏图像,增加游戏的趣味性。点击“开始游戏”按钮后可以实现游戏步骤的计数,拼图右边有一个完整的图像可以供用户参照,用鼠标单击任何与格子相邻的方块可以把该方块移入空格子。通过不断地移动方块,可以将方块一行一行按数字或图片依次拼图。若成功完成拼图(即左边的拼图与右边的参照图像一样),则有提示:“恭喜您,成功完成”的字样出现。2.2 系统的详细设计2.2.1 puzzlegame类1、效果图puzzlepad创建的窗口效果如图5所示。(a) puzzlegame创建的窗口(数字玩法)(b) puzzlegame创建的窗口(图像玩法)图5 puzzlegame创建的窗口2、uml图mazewindow类是javax.swing包中jframe的一个子类,并实现了actionlistener接口,该类的主要成员变量和方法的uml图如图6所示。puzzlepad:puzzlepad digitplay,imageplay:jradiobuttonbar:jmenubar startbutton:jbuttongradmenu,choiceimage:jmenu tool:toolkitonegrade,twograde:jmenuitem image:imagenewimage,defaultimage:jmenuitempuzzlegame():无类型 actionperformed(actionevent):voidmain(string):voidjframepuzzlegame图6 puzzlegame类的uml图以下是uml图中有关数据和方法的详细说明。1)成员变量l puzzlepad是puzzlepad类声明的对象,用来刻画魔板,是puzzlegame类中最重要的成员之一l bar是jmenubar创建的菜单条,用来添加菜单。bar被放置在窗口的顶部l grademenu和choiceimage是jmenu创建的菜单,其名字分别为“选择级别”和“选择图像”。grademenu,choiceimage被添加到菜单条(bar)中。l onegrade、twograde、newimage和defaultimage是jmenuitem创建的菜单项,名字依次为“初级”,“高级”,“选择一幅新图像”和“使用默认图像”,onegrade和twograde菜单项被添加到菜单grademenu 中,newimage和defaultimage都将当前窗口注册为自己的actionevent事件监视器。l digitplay和imageplay是jradiobutton创建的属于同一选择组中的单选框,名字依次为“数字玩法”,“图像玩法”。同一时刻digitplay和imageplay中只能有一个处于选中状态。l startbutton是jbutton创建的按钮对象,名字为“开始”。startbutton将当前窗口注册为自己的actionevent事件监视器。l image是image声明的对象。l tool是toolkit对象,负责创建image对象2)方法l puzzlegame()是构造方法,负责完成窗口的初始化操作。l 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对象使用图像魔板。l main方法是程序运行的入口方法。2.2.2 puzzlepad类1、 效果图puzzlepad创建的魔板对象效果如图7所示。(a)数字魔板(b)图像魔板图7 puzzlepad创建的魔板对象2、 uml图puzzlepad类时javax.swing包中jpanel容器的子类,所创建的对象:puzzlepad是puzzlegame类中最重要的成员之一,作为一个容器添加到puzzlegame窗口的中心。标明puzzlepad类的主要成员变量、方法以及和puzzlegame类之间组合关系的uml图如图8所示。puzzlepadpoint:point handleimage:handleimageblock:block; verifysuccess:verifysuccessdistance:grade,m,n:int image:imagehandlemove:handelmove i sdigitplay:boolean tool:toolkitpuzzlepad():无类型 needinit():voidgethandlemove():handlemove setisdigitplay():voidsetimage(image):void setisimageplay():voidsetgrade(int):void paniccomponent(graphics):voidgetgrade():int jpanelpuzzlegamepuzzlepad:puzzlepad图8 puzzlepad类的uml图以下是uml图中有关数据和方法的详细说明。1)成员变量l point是point类型的而为数组,单元为point类创建的对象,用来确定魔板中的方块的位置l block是block类型的二维数组,单元为block类创建的对象,用来表示魔板中的方块。l distance,grade,m和n是int 型数据。point对象根据distance的值来进行初始化,以便确定point对象之间的距离。m和n的值是二维数值组block和point的行数和列数,m和n的默认值都是3。grade的值代表魔板的级别,默认值是1.l handlemove是handlemove类创建的对象,负责处理block对象上的鼠标事件。l handleimage是handleimage类创建的对象,负责将一幅图像分成若干幅小图像。l verifysuccess是verifysuccess类创建的对象,负责验证用户是否按要求成功排列了魔板中的方块。l image是image声明的图像对象。l tool是toolkit对象,负责创建image声明的图像对象:image。、2)方法l puzzlepad()是构造方法,负责创建puzzlepad对象。l puzzlepad对象调用gethandlemove()方法返回其中的handlemove对象,即返回handlemove。l puzzlepad对象调用setimage(image)方法设置image对象。l puzzlepad对象调用setgrade(int)方法设置魔板的级别。l puzzlepad对象调用getgrade()方法返回grade。l puzzlepad对象调用needinit()方法负责完成block和point对象的创建,以及完成对其他的对象的初始化。、l puzzlepad对象调用setisdigitplay()方法将魔板设置为数字玩法。l puzzlepad对象调用setisimageplay()方法将魔板设置为图像玩法。l puzzlepad对象调用paintcomponent(graphics)方法将魔板使用的图像,即image对象,绘制在魔板的右侧。2.2.3 black类1、效果图block创建的对象效果如图9所示。 (a)对象1 (b)对象2图9 block创建的两个对象2、uml图 block类是javax.swing包中jtextfield类的一个子类,创建的对象是二维数组block的单元中的对象。block型数组block是puzzlepad类的重要成员之一。标明block类的主要成员变量和方法以及和puzzlepad类之间组合关系的uml图如图10 所示。jtextfieldpoint :pointobject:objectblock():无类型 setobject(object):voidsetatpoint(point):void getobject():objectgetatpoint():point paintconent(graphics):voidblockpuzzlepad block :block图10 block类的uml图以下是uml图中有关数据和方法的详细说明。1) 成员变量l point是point型对象,用来确定block对象在puzzlepad所创建的魔板容器中的位置。l object是object类型的对象,用来确定block对象上所显示的数字或图像。2)方法l block对象调用setatpoint(point)方法设置自己所在的“点”,即设置point对象的引用。l block对象调用setatpoint()返回自己所在的“点”即返回point对象的引用。l block对象调用setobject(object)方法设置自己的成员object,当设置object是integer对象时,当前的block对象显示integer对象中的数字;当设置object是image对象时,当前block对象将调用repaint()方法重新绘制image对象。l block对象调用paintcomponent(graphics)方法绘制出image对象。2.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所示。x,y:inthaveblock:booleanblock:blockpoint(int,int):无类型 gety():intishaveblock():boolean equals(towerpoint):booleansethaveblock(boolean):void setblock(block):voidgetx():int getblock():blockpointpuzzlepad point:point图11 point类的uml图以下是uml图中有关数据和方法的详细说明。1)成员变量l x和y是point对象中的两个int类型数据,分别用来表示容器坐标系中的x轴坐标和y轴坐标值。l haveblock是boolean型数据,如果有block对象在该point对象上时,该数据为true;否则为false。l block是block类声明的对象,用来存放一个block对象的引用,标明该block对象在当前point对象上。2)方法l point(int ,int)是构造方法,用来创建point对象。l point对象调用ishaveblock()方法返回一个boolean型数据,如果当前point对象上有block对象,ishaveblock()方法返回true;否则返回false。l point对象调用sethaveblock(boolean)方法可以根据参数的值设置当前point对象上是否有block对象。l point对象调用getx()和gety()方法可以返回其中的x轴坐标和y轴坐标。l point对象调用equals(towerpoint)方法可以判断当前point对象是否和参数指定的point对象相同。l point对象调用setblock(block)方法,将参数指定的block对象放置在当前point对象上。l point对象调用getblock()方法可以返回当前point对象上的block对象。2.2.5 handleimage类q 效果图handleimage创建的对象负责将一幅图像分解为诺干个小的图像,没有可显示的效果图。q uml图 handleimage类是javax.swing包中jcomponent类的一个子类,创建的对象handleimage负责将一幅图像分解成诺干幅小图像,是puzzlepad类的重要成员之一。handleimage类的主要成员变量和方法以及和puzzlepad类之间的组合关系的uml图像如图12所示。jcomponenthandleimageimagewidth,imagehight:inttool:toolkithandleimage():无类型getiages(image,int,int):imagepuzzlepadhandleimage:handleimage图12 handleimage类的uml图以下是uml图中有关数据和方法的说明。1) 成员变量l imagewidth和imageheight是int型数据,用来存储图像的宽和高。l tool是toolkit对象,用来获得image对象。2) 方法l handleimage()是构造方法,负责完成handleimage对象的初始化。l getimages(image,int,int)方法将参数指定的图像分成诺干个更小的图像,并将这些图像存放到一个image数组中,然后返回该数组。3) 代码(handleimage.java)2.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类之间组合关系的uml图如图14所示。jpanelmouselisteneractionlistenerhandlemovepoint:point showtime:jtextfieldspendtime:int verifsuccessrecordtime:timerhandmove():setpoint(point):voidintspendtime():voidsetverifysuccess(verifysuccess):viodactionperformed(actionevent):voidmousepressed(mouseevent e):voidmousereleased(mouseevent e):voidpuzzlepadhandlemove:handlemove图14 handlemove类的uml图以下是uml图中有关数据和方法的详细说明1、 成员变量l point是point类型二维数组,用来存放puzzlepad魔板容器中point数组的引用l spendtime用来记录用户玩魔板游戏的用时l recordtime是计时器l showtime是jtextfield创建的文本框,负责显示用时l verify是verifysuccess声明的对象,用来存放puzzlepad魔板中verifysuccess对象的引用。2、方法l handlemove()是构造方法,负责创建handlemove对象l handlemove对象调用setpoint(point)方法将puzzlepad魔板容器的point对象的引用传递给该对象中的point,以便handlemove移动puzzlepad魔板容器中的block对象l handlemove对象调用setverifysuccess(verifysuccess)方法将puzzlepad魔板容器的verifysuccess对象的引用传递给该对象中的verify,verify对象负判断魔板中的block对象是否成功地按要求排列完毕l handlemove对象调用initspendtime()将spendtime的值设置为0l mousepressed(keyevent)方法是handlemove类实现的mouselistener借口中的方法,当在block对象上按下鼠标左键时,将触发mouseevent键盘事件,handlemove对象将调用执行mousepressed(keyevent)方法对事件作出处理,即根据规则移动block对象l mousereleased(mouseevent)方法是handlemove类实现的mouselistener借口中的方法,当用在block对象上释放鼠标左键时,将触发mouseevent键盘事件,handlemove对象将调用执行mousereleased(mouseevent)方法对事件作出处理,其主要操作时判断用户是否已经成功地将block对象按要求排列完毕l actionperformed(actionevent)是handlemove类实现的actionlistener借口中的方法。我们使用timer类的构造法国法timer(int a,object b)创建了计时器recordtime,其中的参数a的单位是毫秒,确定计时器每隔a毫秒“振铃”一次,参数b是计时器的监视器。在这里我们取a=1000,监视器b是当前handlemove对象。计时器方式的振铃事件是actionevent类型事件,当振铃事件发生时,监视器就会监视到这个事件,监视器就调用actionperformed(actionevent)方法。当振铃每隔1000毫秒发生一次时,方法actionperformed(actionevent)就被执行一次,所执行的操作就是现实用户当前的用时。2.2.6 verifysuccess类1、 效果图没有可见的效果图。2、 uml图verifysuccess创建的对象负责验证用户是否按要求成功排列魔板中的方块,创建的对象verifysuccess是puzzlepad类的重要成员之一。标明verifysuccess类的主要成员变量和方法以及和puzzlepad类之间组合关系的uml图15所示。point:pointobject:objectpuzzlepadverifysuccessverifysuccess:verifysuccesssetpoint(point):voidsetobject(object):voidissuccess():boolean图15 verifysuccess类的uml图以下是uml图中有关数据和方法的详细说明。1) 成员变量l point是point类型二维数组,用来存放puzzlepad魔板容器中point数组的引用。l object是object数组,其单元可以存放任何对象。2) 方法l verifysuccess对象调用setpoint(point)方法将puzzlepad魔板中的point对象的引用传递给该对象中的pointl verifysuccess对象调用setpoint(object)方法可以将puzzlepad魔板容器的integer数组或image数组的引用传递给该对象中的objectl verifysuccess对象调用issuccess()方法判断用户是否按要求成功排列魔板中的方块,如果成功issuccess()方法返回true;否则返回false第三章 魔板游戏系统的具体实现3.1 游戏主类的设计 主类主要定义了游戏界面的布局,以及调用的一些类来实现游戏的进行。其主要的效果图展示即为:核心代码展示:public puzzlegame() tool=gettoolkit();/创建一个菜单条 bar=new jmenubar(); grademenu=new jmenu(选择级别)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论