当前位置:文档之家› JAVA拼图游戏设计报告

JAVA拼图游戏设计报告

&& (pane[j].getBounds().y == y)) { pane[j].move("LEFT", 100);//方格向左移动一格 nullPanel.setLocation(x, y); break; } } } } else if (direction == 2) {//空方格上移动 y -= 100; if (test(x, y)) { for (int j = 0; j < 8; j++) { if ((pane[j].getBounds().x == x)
五、功能说明
游戏功能图:
拼图游戏












退 出 游 戏
本拼图游戏,运用了 Java2 中的图形处理技术和消息响应技术。通过图形技 术,实现图片的导入和分割。通过消息响应机制,使程序可以响应用户的鼠标操 作,进行拼图游戏的操作。
这个游戏主要分为四个模块,分别是游戏开始、查看图片、选择图片和退出 游戏。这四个摸块的功能各不一样,玩家如果在游戏过程中感觉拼图小块之间的 接合不明显,玩家可以点击“查看”按钮来浏览拼图完成的效果图,从而使得游 戏不会无从下手;玩家如果觉得当前拼图的画面不满意可以点击“选择”图片按 钮来更换图片,或者想更改拼图的画面,玩家可以进入游戏文件夹进行更换图片 文件,但是需要注意的是图片需要有格式,同时还需要将所要更改的图片切割成 大小相同的九个小块,具体就不详细说了,游戏文件夹中会给大家附一个.txt 文 件,供大家更换图片使用,从而提高玩家乐趣。
} } } public void breakRank() {//方格打乱重新排序 while (pane[0].getBounds().x <= 100 && pane[0].getBounds().y <= 100) {//当 第 一个方格距左上角近时
int x = nullPanel.getBounds().x; int y = nullPanel.getBounds().y; int direction = (int) (Math.random() * 4);//随机产生一个数字对应空方格的 上下左右移动
《Web 程序开发》课程 大作业
拼图游戏
3011212046 张杰
2014.11
一、题目说明
拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿 开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功 时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保 存。在拼图时首先把图片添加到 background 目录下,程序会自动获取该目录下 的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。
&& (pane[j].getBounds().y == y)) { pane[j].move("UP", 100);//方格向上移动一格 nullPanel.setLocation(x, y); break;
} } } }
} if (!hasAddActionListener)//判断是否添加动作事件
if (direction == 0) {//空方格左移动,与左侧方格互换位置,左侧方格右移 动
x -= 100;//空主格左移
的按钮
if (test(x, y)) { for (int j = 0; j < 8; j++) {//循环寻打左侧的按钮 if ((pane[j].getBounds().x == x) && (pane[j].getBounds().y == y)) {//依次寻找左侧
for (int i = 0; i < 8; i++){//循环为每个方格添加动作事件 pane[i].addMouseListener(this);
} hasAddActionListener = true; } private boolean test(int x, int y) {//检测方格是否在指定的范围内移动 if ((x >= 0 && x <= 200) || (y >= 0 && y <= 200))
二、题意分析
因为要制作拼图游戏,所以首先要实现图片的导入。这是通过 getImage() 函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指 明图片的名称。然后,因为要实现图片摆放的随意性,所以要通过 initgame()函 数来实现。Initgame()函数是自写函数,在函数体内,通过调用 Math.random() 函数产生随机数,用来达到图片位置摆放的随意性和随机性。最后,因为要实现 人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是 通过函数 addMouseListener(this) 和 addMouseMotionListener(this)来完成的。 这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。
pane[j].move("RIGHT", 100);//方格向右移动一格 nullPanel.setLocation(x, y);//重新设置空方格的位置 break;//跳出循环 } } } } else if (direction == 1) {//空方格右移动 x += 100; if (test(x, y)) { for (int j = 0; j < 8; j++) { if ((pane[j].getBounds().x == x)
游戏操作流程:
开始游戏
操作游戏 游戏完成
关闭游戏
三、设计目的
本游戏的设计目的在于休闲娱乐,玩家可以在学习、编程等工作后用来休息 放松,让集中的心态得到释放,对于小孩可以通过精美的卡通的图片来吸引孩子 的兴趣,加强动脑动手能力。本游戏适玩人群老少皆宜。
四、设计特点
本游戏主要充分运用图形用户界面将一张图片切割成大小相同的九块小图, 运用其中的八块,将小图的顺序和位置打乱,通过将图片移动到剩余的一格空白 处而改变图片的位置,最终拼成原始图片。
} else {//方格向右移动 this.setLocation(this.getBounds().x + 100, this.getBounds().y);
} } } public class PanelOfImage extends JPanel implements MouseListener {//图片面板加载方格 对象 boolean hasAddActionListener = false;//设置方格动作监听器的标识 PaneButton pane[];//声明方格 Rectangle nullPanel;//声明空方格,没有添图片 public static int currentPID = 1;//当前选择的图片编号 public PanelOfImage() {//构造方法进行初始化
&& (pane[j].getBounds().y == y)) { pane[j].move("DOWN", 100);//方格向下移动一格 nullPanel.setLocation(x, y); break; } } } } else {//空方格下移动 y += 100; if (test(x, y)) { for (int j = 0; j < 8; j++) { if ((pane[j].getBounds().x == x)
} public void move(String direction, int sleep) {//方格的移动
if (direction == "UP") {//方格向上移动 this.setLocation(this.getBounds().x, this.getBounds().y - 100);
六、主要功能程序段
import java.awt.Rectangle;//引入类 import java.awt.event.*; import javax.swing.*; class PaneButton extends JButton {// 继承按钮类实现加图片的方格
PaneButton(Icon icon) {//构造方法进行初始化,设置图标 super(icon); this.setSize(100, 100);//设置每个方格的大小
this.setLayout(null);//设置面板的布局为空
this.setSize(400, 400);//设置面板的大小 nullPanel = new Rectangle(200, 200, 100, 100);//设置空方格的位置 pane = new PaneButton[9];//创建九个方格 Icon icon;//声明图标 for (int i = 0; i < 3; i++) {//循环为每个方格加载图片
本游戏使用 Java 语言设计,开发平台为 JDK。开发工具 Eclipse。JDK 是 Sun Microsystems 针对 Java 开发员的产品。自从 Java 推出以来,JDK 已经成为使 用最广泛的 Java SDK。JDK 是整个 Java 的核心,包括了 Java 运行环境,Java 工具和 Java 基础的类库。JDK 是学好 Java 的第一步。从 SUN 的 JDK5.0 开始, 提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提 高。
return false; } return true; } public void reLoadPictrue() {//重新加载图片在重新选择图片时 Icon icon; for (int i = 0; i < 3; i++) {//循环为每个方格加载图片
相关主题