Java 应用技术实训报告
题
目
多功能拼图游戏软件
起讫日期
所在院系
学生姓名
专 业
班 级
学 号
指导教师
职 称
所在单位
2008 年 月
日
一.总体设计
本系统共包括 11 个 java 源文件和 2 文件。这是个功能比较齐全的
拼图游戏,最关键的不用自己手动切割图片,再进行加载。而是应用类
方法在内存中进行图片切割和加载,方便了用户的使用。另外,该程序
会根据图片的大小自动生成窗口大小,不会造成切割图片错误和切割错
位。 程序最后以*.rc 格式的文件来保存游戏记录。
1. 类之间的关系如图 1 所示。
MenuFrame
CardFrame
Puzzle
ShowImage
GameOver
Matrix
Split
Grades
point
ButtonClick
2.java 源文件及其功能如表 1 所示。
- 1 -
序号
文件名
主要功能
备注
表 1
1
2
3
4
5
6
7
8
9
10
11
Puzzle.java
程序的主类,定义了各个组件的动作和
为窗口设置图标
CardFrame.java
游戏介绍界面 添加继续按钮
MenuFrame.java
初始化游戏界面,创建并添加组件
包 含 主 函 数 程
序的入口
采用卡片布局
声 明 了 6 个 静
态方法
ShowImage.java
在游戏中显示完整图片来提供帮助
Split.java
Matrix.java
Grades.java
GameOver.java
point.java
根据难度等级切割完整图片为拼图块 图 块 保 存 在 内
存中
存 档 文 件 格 式
为**.rc
加载打乱的图块进行初始化游戏
游戏记录和存档,游戏暂停的实现
游戏时间和步数的计算和游戏结束的
判断
获得拼图的行数和列数,并向其他函
数传参。
ButtonClick.java
实现鼠标动作。
Arg.java
提供图片路径和成绩记录的路径
公用接口
二、详细设计
该拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和
打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进
行保存。在拼图时首先把图片添加到 background 目录下,程序会自动获
取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按
钮上。在游戏开始后会更新“开始“菜单,增加“显示图片”菜单项。
拼图结束时可以显示游戏成绩和记录的存档。
1.主类 Puzzle
(1)成员变量见表 2
成员变量描述
变量类型
开始状态
Boolean
表 2
- 2 -
名称
Start
窗口宽度
窗口高度
结束对象
焦点控制
int
int
gOver
boolean
fWidth
fHeight
GameOver
index
(2)方法见表 2-1
表 2-1
方法名
功能
备注
Puzzle()
StartGame()
创建游戏窗口和设置图
标
开始游戏控制,更新开
始菜单
endgame()
结束游戏控制
弹出结束窗口
FrameLoseFocus
()
FrameGetFocus
()
使窗口失去焦点事件
使窗口得到焦点事件
menuNewClick()
进行切割图片
调用类 spite()
menuGradesClic
k()
实现分数记录和显示
调用类 Class Grades
menuShowClik() 在游戏中显示完整图片
调用类 class ShowImage
menuExit()
退出游戏
menuHelpClik()
实现帮助功能
以弹出式对话框设计
menuAboutClik(
)
实现关于功能
介绍了相关信息和作者
(3)源代码见文件 Puzzle.java
2.类 CardFrame
(1)成员变量见表 3
表 3
成员变量描述
变量类型
布局格式变量
CardLayout
- 3 -
名称
card
容器变量
面板数组
Container
Jpanel
con
Panel[]
(2)方法见表 3-1
表 3-1
方法名
功能
备注
CardFrame()
创建窗口,布局游戏介
绍
添加了焦点事件适配器
nextCard()
转到一下张卡片
采用卡片布局
(3)源代码见文件 CardFrame.java
3.类 MenuFrame
(1)成员变量见表 4
表 4
成员变量描述
变量类型
难度等级变量
文件路径
int
String
难度按钮组
ButtonGroup
图片选择按钮组
ButtonGroup
菜单更新控制
菜单项数组
Boolean
JMenu
(2)方法见表 4-1
名称
type
filename
bgrp
frp
update
Mm[]
m[]
表 4-1
方法名
功能
备注
MenuFrame()
创建窗口
添加了焦点事件适配器
addMenu()
向菜单栏中添加菜单
以数组形式添加多个菜单
menuLevelClick
()
menuBackground
Clik()
实现等级选择
实现背景图片的选择
- 4 -
getType()
返回一个难度等级
getFilename()
获取图片的名字
initMenuBegin(
初始化开始按钮并设置
同时给出了选择 菜单后的相应
)
快捷键
动作
initMenuBackgr
ound()
initMenuAbout(
)
initMenuOpitio
n()
initMenuLevel(
)
初始化背景菜单
初始化关于菜单
初始化选择菜单
初始化等级菜单
以选择框形式选择等级
updadeMenuBegi
游戏开始后更新开始菜
n()
单
比原来增加了显示图片菜单项
(3)源代码见文件 MenuFrame.java
4 类 ShowImage
(1)成员变量见表 5
表 5
成员变量描述
变量类型
名称
无成员变量
(2)方法见表 5-1
表 5-1
方法名
功能
备注
ShowImage() 创建显示图片的窗口 在游戏中提供帮助使用
(3)源代码见文件 ShowImage.java
5 类 Split
(1)成员变量见表 6
表 6
- 5 -
成员变量描述
变量类型
名称
难度等级
路径名称
Int
string
HARD NORML EASY
Filename
path
(2)方法见表 6-1
表 6-1
方法名
功能
备注
Spilt()
Set()
BufferedImag
e[]
get()
divid
创建 Spilt 对象
创建存档文件
把背景图片切割成拼
图块
获得 Spilt 对象
(3)源代码见文件 Split.java
6 类 Matrix
(1)成员变量见表 7
表 7
用 到 了 awt.image.
BufferedImage 里的系统类
成员变量描述
变量类型
名称
面板
拼图行数
拼图列数
Jpanel
int
Int
(2)方法见表 7-1
panel
row
cal
方法名
功能
备注
表 7-1
Matrix()
Init()
创建图块所在的按
钮并加监听 且添加
到面板中
实现图块的随机排
列
(3)源代码见文件 Matrix.java
- 6 -
打乱了图块的顺序
7.类 Grades
(1)成员变量见表 8
表 8
成员变量描述
变量类型
名称
自定义类
拼图步数
拼图计时
Data
Int
Int
(2)方法见表 8-1
Data[]
step
time
方法名
Grades()
creatData()
readData()
Set()
Show()
表 8-1
功能
备注
构造函数
生成拼图记录的文
件
读取已经存在的记录 以.rc 格式保存记录的数据
记录游戏的数据
有打破记录的判断
显示记录
(3)源代码见文件 CardFrame.java
8.类 GameOver
(1)成员变量见表 9
成员变量描述
变量类型
表 9
移动步数
游戏时间
开始时间
控制变量
(2)方法见表 9-1
int
long
long
名称
step
counttime
now
boolean
Stop
gameOver
- 7 -