1、主要功能备注1Puzzle.java程序的主类,定义了各个组件的动作和为窗口设置图标包含主函数程序的入口2CardFrame.java游戏介绍界面 添加继续按钮采用卡片布局3MenuFrame.java初始化游戏界面,创建并添加组件声明了6个静态方法4ShowImage.java在游戏中显示完整图片来提供帮助5Split.java根据难度等级切割完整图片为拼图块图块保存在内存中6Matrix.java加载打乱的图块进行初始化游戏7Grades.java游戏记录和存档,游戏暂停的实现存档文件格式为*.rc8GameOver.java游戏时间和步数的计算和游戏结束的判断 9point.java 获
2、得拼图的行数和列数,并向其他函数传参。10ButtonClick.java实现鼠标动作。11Arg.java提供图片路径和成绩记录的路径公用接口二、详细设计该拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。在游戏开始后会更新“开始“菜单,增加“显示图片”菜单项。拼图结束时可以显示游戏成绩和记录的存档。1主类Puzzle(1)成员变量见表2表2 成员变量描述变量类型名称开始状态Bool
3、eanStart 窗口宽度intfWidth窗口高度fHeight结束对象gOver焦点控制booleanindex(2)方法见表2-1表2-1方法名功能Puzzle()创建游戏窗口和设置图标StartGame()开始游戏控制,更新开始菜单endgame()结束游戏控制弹出结束窗口FrameLoseFocus()使窗口失去焦点事件FrameGetFocus ()使窗口得到焦点事件menuNewClick()进行切割图片调用类 spite()menuGradesClick()实现分数记录和显示调用类 Class GradesmenuShowClik()在游戏中显示完整图片调用类 class Sh
4、owImagemenuExit()退出游戏menuHelpClik()实现帮助功能以弹出式对话框设计menuAboutClik()实现关于功能介绍了相关信息和作者(3)源代码见文件Puzzle.java2类CardFrame(1)成员变量见表3表3 布局格式变量CardLayoutcard容器变量Containercon面板数组JpanelPanel(2)方法见表3-1表3-1CardFrame()创建窗口,布局游戏介绍 添加了焦点事件适配器nextCard()转到一下张卡片(3)源代码见文件CardFrame.java3类MenuFrame(1)成员变量见表4表4 难度等级变量type文件路
5、径Stringfilename难度按钮组ButtonGroupbgrp图片选择按钮组frp菜单更新控制update菜单项数组JMenuMm m(2)方法见表4-1表4-1MenuFrame()创建窗口添加了焦点事件适配器addMenu()向菜单栏中添加菜单以数组形式添加多个菜单menuLevelClick()实现等级选择menuBackgroundClik()实现背景图片的选择getType()返回一个难度等级getFilename()获取图片的名字initMenuBegin()初始化开始按钮并设置快捷键同时给出了选择 菜单后的相应动作initMenuBackground()初始化背景菜单in
6、itMenuAbout()初始化关于菜单initMenuOpition()初始化选择菜单initMenuLevel()初始化等级菜单以选择框形式选择等级updadeMenuBegin()游戏开始后更新开始菜单比原来增加了显示图片菜单项(3)源代码见文件MenuFrame.java4类ShowImage(1)成员变量见表5表5无成员变量(2)方法见表5-1表5-1ShowImage()创建显示图片的窗口在游戏中提供帮助使用(3)源代码见文件ShowImage.java5类Split (1)成员变量见表6表6难度等级Int HARD NORML EASY路径名称 string Filename p
7、ath(2)方法见表6-1表6-1Spilt()创建 Spilt对象 Set()创建存档文件BufferedImage divid把背景图片切割成拼图块用到了awt.image. BufferedImage里的系统类get()获得Spilt对象(3)源代码见文件Split.java6类Matrix (1)成员变量见表7表7 面板 Jpanel panel 拼图行数 int row 拼图列数 Int cal(2)方法见表7-1表7-1 Matrix() 创建图块所在的按钮并加监听 且添加到面板中 Init() 实现图块的随机排列 打乱了图块的顺序(3)源代码见文件Matrix.java7类Gra
8、des (1)成员变量见表8表8 自定义类 Data Data 拼图步数 Int step 拼图计时 time(2)方法见表8-1表8-1 Grades() 构造函数 creatData() 生成拼图记录的文件readData()读取已经存在的记录以.rc格式保存记录的数据Set()记录游戏的数据有打破记录的判断Show()显示记录8类GameOver (1)成员变量见表9表9 移动步数 int step 游戏时间 long counttime 开始时间 long now控制变量Stop gameOver(2)方法见表9-1表9-1 GameOver() 构造函数创建对象 Start() 控制
9、游戏开始 judge()判断游戏是否结束pause() 实现游戏的暂停getStep() 获取移动图块的步数getTime()获取游戏时间(3)源代码见文件GameOver.java9类point (1)成员变量见表10表10 拼图行数 introw int cal(2)方法见表10-1表10-1 getRow() 获取行数 getCal() 获取列数设置拼图行和列(3)源代码见文件point.java 10. 类ButtonClick (1)成员变量见表11表11 按钮 JButton Button 行数和列数 Row cal 结束标志 boolean end (2)方法见表11-1表11-
10、1 ButtonClick() 获取各个参数 6个参数 actionPerformed() 实现相应的鼠标动作(3)源代码见文件ButtonClick.java 11类Arg(1)成员变量见表12表12 图片路径接口 String path 记录文件接口 rc(2)代码见文件Arg.java三运行效果游戏启动后的初始界面 图1 图1选择“关于”菜单下的 “帮助“ 菜单弹出如下对话框:图2选择“关于”菜单下的 “关于“ 菜单弹出如下对话框:图3选择 难度级别 中级和背景图片,按开始后就可进入游戏画面如图4图4在游戏过程中 可以按“开始”菜单下面的“显示图片”来查看完整图片 如图5 图5游戏成功后
11、会显示你游戏所用时间和移动图块的步数 如图6图6如果你的游戏时间打破记录就会首先显示如下画面 如图7 图7输入名字后 ,按确定就可以查看所有成绩排名了如图8(也可以通过“开始”菜单下的“分数排名”来查看成绩)图8所有游戏截图完毕四工作总结 经过这段时间的学习我收获不小,总结起来有如下几点:1 更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。对于这种面向对象的编程思想,使刚入门的人很快就能写出自己的程序。2 锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。都是通过自己查帮助文档,或通过网络进行学习和了解到的。和别人在一起交流是一件很快了的事。3 体会到写程序最重要的是程序思想,而不是单纯的写代码。如何解决类之间的关联和继承关系,如何组织类是很关键的。此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。该程序需要改进的地方:1 在变量的访问权限设置不到位,当时为了保证程序的运行通过,好多本来私有的变量都定义为公有,对于类的成员保护做的不够。2如果在移动图块时,发出声音就会更完美。3给程序添加背景音乐。4程序界面风格设计还有待改进。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1