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个,并重新设置每个按钮的
版权声明:本文标题:拼图游戏jigsaw 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1721917385a904978.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论