admin管理员组

文章数量:1531791

2024年7月25日发(作者:)

拼图游戏(jigsaw)——项目文档

一、项目功能

本游戏为拼图游戏,玩法类似华容道,游戏界面为一被分割为许多小块的完

整图片(右下角缺少一块),具体玩法为:打乱小块图片顺序后,通过交换空白

方块与其周围的小块图片进行拼图,最终拼成原图片(右下角缺少一块)即为游

戏胜利。本游戏具体实现了以下功能:

1、运行程序后,出现初始界面,在其最上方有四个按钮(“开始游戏”按钮、

“预览全图”按钮、“选择图片”按钮和“选择难度”按钮)的面板对象,

在其下方出现主面板对象(游戏的主界面即右下角缺少一块的完整图片),

在界面标题栏左侧出现“拼图游戏”,右侧有最小化和关闭按钮。

2、单击“开始游戏”后,小块图片顺序被打乱,游戏开始,通过鼠标点击

空白方块周围的小块图片,将其移至空白方块处,从而进行拼图。

3、单击“预览全图”后,界面显示完整的图片,对玩家进行提示,同时“预

览全图”按钮变为“返回游戏”。单击“返回游戏”,界面变回此前的游戏

界面,同时“返回游戏”按钮变为“预览全图”。

4、单击“选择图片”后,可通过下拉菜单进行图片选择,从五幅图片中选

择一个进行拼图游戏。

5、单击“选择难度”后,可通过下拉菜单选择游戏难度,“初级”为3*3

块拼图,“高级”为4*4块拼图。

6、当玩家完成拼图,游戏弹出“恭喜!拼图完成! 共用n步”对话框,告

知玩家完成游戏所用的步数。

7、当游戏运行,自动循环播放背景音乐。

二、主要技术

本游戏使用的主要技术有:Java语言、事件机制、布局机制、异常处理机制、

线程同步、Swing组件的运用以及GUI(图形用户界面)开发的综合应用。

1、Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗

口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing

组件,作为JFC类库的一部分,Swing提供了40多个组件,是AWT的4倍。

本游戏中运用了Swing组件中的窗口类JFrame、面板容器JPanel、显示信

息的面板类JLabel、按钮类JButton、提示框类JOptionPane等。

2、图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接

口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行

界面相比,图形界面对于用户来说在视觉上更易于接受。

本项目包含了Java GUI开发中的动作类事件(ActionEvent、TextEvent、

AdjustmentEvent、ItemEvent)处理机制、布局机制以及异常处理机制。

三、项目结构

本项目由四个类组成,即基本按钮类(Cell)、背景音乐类

(BackgroundMusic)、主面板类(MyCanvas)以及主类——主框架类

(MyMainFrame),分别实现如下功能:

1、基本按钮类(Cell)负责控制基本小块图片的规格控制和实现它的移动

功能。它继承了JButton类(按钮类)。其中int型类成员size为控制小块图片

的规格(75*75(用于4*4拼图)或100*100(用于3*3拼图));而方法move(String

direction , int sleep)负责根据direction(可取up、down、left、right)

实现小块图片的移动功能。

2、背景音乐类(BackgroundMusic)负责实现背景音乐的播放、停止、循环

及音量控制。其中boolean型类成员stop负责控制音频文件的播放与停止;Play

(String fileurl)方法通过文件输入流来实现音频文件(wav文件)的播放和循

环,并通过value的值来设置音量。此外,该类中增添了异常处理机制,防止了

无效的音频文件对程序运行的影响。

3、主面板类(MyCanvas)负责实现游戏部分的界面及拼图游戏的主要功能。

它是一个自定义的面板,继承了JPanel类并实行动作监听器MouseListener。

其中boolean型类成员 hasAddActionListener为动作监听器的标志位,

TRUE为已经添加的动作事件,FALSE为尚未添加的动作事件;类成员cell为按

钮数组;Rectangle型类成员cellNull为空白方块区域数组;静态int型成员

pictureID为当前选择图片的代号,负责控制主面板和预览面板显示的图片。

构造函数MyCanvas()负责进行主面板的初始化,包括设置布局管理器、设

置面板大小(300*300)、设置空白方块位置、为按钮数组赋值并为每个按钮加载

图片、初始化按钮的位置坐标。

Start()方法负责对方块进行重新排列、打乱顺序,通过

类的()方法获取0-4之间的随机数,控制方块的上下左右移动,

进而打乱顺序。最后为所有方块(除右下角的方块外)添加动作事件,监听其动

作。

reLoadPicture()方法负责当选择其他图片进行拼图时,重新加载新图片,

创建新的Icon对象,重新设置的每个按钮的icon对象,显示新的图片。

reDividePicture()方法负责当选择其他难度进行游戏时,重新分割图片,

例如当难度由初级变为高级时,增加基本按钮至16个,并重新设置每个按钮的

本文标签: 游戏按钮图片