1、Java应用技术实训报告题 目 多功能拼图游戏软件 起讫日期 所在院系 学生姓名 专 业 班 级 学 号 指导教师 职 称 所在单位 2008年 月 日一总体设计 本系统共包括11个java源文件和2文件。这是个功能比较齐全的拼图游戏,最关键的不用自己手动切割图片,再进行加载。而是应用类方法在内存中进行图片切割和加载,方便了用户的使用。另外,该程序会根据图片的大小自动生成窗口大小,不会造成切割图片错误和切割错位。 程序最后以*.rc格式的文件来保存游戏记录。1 类之间的关系如图1所示。MenuFrameCardFramePuzzleShowImageGameOverSplitMatrixpoi
2、ntGradesButtonClick2java源文件及其功能如表1所示。表1 序号文件名主要功能备注1Puzzle.java程序的主类,定义了各个组件的动作和为窗口设置图标包含主函数程序的入口2CardFrame.java游戏介绍界面 添加继续按钮采用卡片布局3MenuFrame.java初始化游戏界面,创建并添加组件声明了6个静态方法4ShowImage.java在游戏中显示完整图片来提供帮助5Split.java根据难度等级切割完整图片为拼图块图块保存在内存中6Matrix.java加载打乱的图块进行初始化游戏7Grades.java游戏记录和存档,游戏暂停的实现存档文件格式为*.rc8
3、GameOver.java游戏时间和步数的计算和游戏结束的判断 9point.java 获得拼图的行数和列数,并向其他函数传参。10ButtonClick.java实现鼠标动作。11Arg.java提供图片路径和成绩记录的路径公用接口二、详细设计该拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。在游戏开始后会更新“开始“菜单,增加“显示图片”菜单项。拼图结束时可以显示游戏成绩和记录的
4、存档。1主类Puzzle(1)成员变量见表2表2 成员变量描述变量类型名称开始状态BooleanStart 窗口宽度intfWidth窗口高度intfHeight结束对象gOverGameOver焦点控制booleanindex(2)方法见表2-1表2-1方法名功能备注Puzzle()创建游戏窗口和设置图标StartGame()开始游戏控制,更新开始菜单endgame()结束游戏控制弹出结束窗口FrameLoseFocus()使窗口失去焦点事件FrameGetFocus ()使窗口得到焦点事件menuNewClick()进行切割图片调用类 spite()menuGradesClick()实现分
5、数记录和显示调用类 Class GradesmenuShowClik()在游戏中显示完整图片调用类 class ShowImagemenuExit()退出游戏menuHelpClik()实现帮助功能以弹出式对话框设计menuAboutClik()实现关于功能介绍了相关信息和作者(3)源代码见文件Puzzle.java2类CardFrame(1)成员变量见表3表3 成员变量描述变量类型名称布局格式变量CardLayoutcard容器变量Containercon面板数组JpanelPanel(2)方法见表3-1表3-1方法名功能备注CardFrame()创建窗口,布局游戏介绍 添加了焦点事件适配器
6、nextCard()转到一下张卡片采用卡片布局(3)源代码见文件CardFrame.java 3类MenuFrame(1)成员变量见表4表4 成员变量描述变量类型名称难度等级变量inttype文件路径Stringfilename难度按钮组ButtonGroupbgrp图片选择按钮组ButtonGroupfrp菜单更新控制Booleanupdate菜单项数组JMenuMm m(2)方法见表4-1表4-1方法名功能备注MenuFrame()创建窗口添加了焦点事件适配器addMenu()向菜单栏中添加菜单以数组形式添加多个菜单menuLevelClick()实现等级选择menuBackgroundC
7、lik()实现背景图片的选择getType()返回一个难度等级getFilename()获取图片的名字initMenuBegin()初始化开始按钮并设置快捷键同时给出了选择 菜单后的相应动作initMenuBackground()初始化背景菜单initMenuAbout()初始化关于菜单initMenuOpition()初始化选择菜单initMenuLevel()初始化等级菜单以选择框形式选择等级updadeMenuBegin()游戏开始后更新开始菜单比原来增加了显示图片菜单项(3)源代码见文件MenuFrame.java4类ShowImage(1)成员变量见表5表5成员变量描述变量类型名称无
8、成员变量(2)方法见表5-1表5-1方法名功能备注ShowImage()创建显示图片的窗口在游戏中提供帮助使用(3)源代码见文件ShowImage.java5类Split (1)成员变量见表6表6成员变量描述变量类型名称难度等级Int HARD NORML EASY路径名称 string Filename path (2)方法见表6-1表6-1方法名功能备注Spilt()创建 Spilt对象 Set()创建存档文件BufferedImage divid把背景图片切割成拼图块用到了awt.image. BufferedImage里的系统类get()获得Spilt对象(3)源代码见文件Split.
9、java6类Matrix (1)成员变量见表7表7成员变量描述变量类型名称 面板 Jpanel panel 拼图行数 int row 拼图列数 Int cal(2)方法见表7-1表7-1方法名功能备注 Matrix() 创建图块所在的按钮并加监听 且添加到面板中 Init() 实现图块的随机排列 打乱了图块的顺序(3)源代码见文件Matrix.java7类Grades (1)成员变量见表8表8成员变量描述变量类型名称 自定义类 Data Data 拼图步数 Int step 拼图计时 Int time(2)方法见表8-1表8-1方法名功能备注 Grades() 构造函数 creatData()
10、 生成拼图记录的文件 readData()读取已经存在的记录以.rc格式保存记录的数据Set()记录游戏的数据有打破记录的判断Show()显示记录(3)源代码见文件CardFrame.java8类GameOver (1)成员变量见表9表9成员变量描述变量类型名称 移动步数 int step 游戏时间 long counttime 开始时间 long now控制变量booleanStop gameOver(2)方法见表9-1表9-1方法名功能备注 GameOver() 构造函数创建对象 Start() 控制游戏开始 judge()判断游戏是否结束pause() 实现游戏的暂停getStep()
11、获取移动图块的步数getTime()获取游戏时间(3)源代码见文件GameOver.java9类point (1)成员变量见表10表10成员变量描述变量类型名称 拼图行数 introw 拼图列数 int cal(2)方法见表10-1表10-1方法名功能备注 getRow() 获取行数 getCal() 获取列数 Set()设置拼图行和列(3)源代码见文件point.java 10. 类ButtonClick (1)成员变量见表11表11成员变量描述变量类型名称 按钮 JButton Button 行数和列数 Int Row cal 结束标志 boolean end (2)方法见表11-1表11-1方法名功能备注 ButtonClick() 获取各个参数 6个参数 actionPerformed() 实现相应的鼠标动作 (3)源代码见文件ButtonClick.java 11类Arg(1)成员变量见表12表12成员变量描述变量类型名称 图片路径接口 String path 记录文件接口 String rc (2)代码见文件Arg.java三运行效果游戏启动后的初始界面 图1 图1选择“关于”菜单下的 “帮助“ 菜单弹出如下对话框:图2图2选择“关于”菜单下的 “关于“ 菜单弹出如下对话框:图3图3选择 难度级别 中级和背景图片,按开始后就可
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1