《Web程序开发》课程
大作业
拼图游戏
%
46
张杰
$
一、题目说明
拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。
在拼图时首先把图片添加到background 目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。
本游戏使用Java 语言设计,开发平台为JDK 。
开发工具Eclipse 。
JDK 是Sun Microsystems 针对Java 开发员的产品。
自从Java 推出以来,JDK 已经成为使用最广泛的Java SDK 。
JDK 是整个Java 的核心,包括了Java 运行环境,Java 工具和Java 基础的类库。
JDK 是学好Java 的第一步。
从SUN 的开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
二、题意分析
因为要制作拼图游戏,所以首先要实现图片的导入。
这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。
然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。
Initgame()函数是自写函数,在函数体内,通过调用()函数产生随机数,用来达到图片位置摆放的随意性和随机性。
最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。
这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。
(
游戏操作流程:
:
游戏完成
操作游戏
}
三、设计目的
本游戏的设计目的在于休闲娱乐,玩家可以在学习、编程等工作后用来休息放松,让集中的心态得到释放,对于小孩可以通过精美的卡通的图片来吸引孩子的兴趣,加强动脑动手能力。
本游戏适玩人群老少皆宜。
四、设计特点
^
本游戏主要充分运用图形用户界面将一张图片切割成大小相同的九块小图,运用其中的八块,将小图的顺序和位置打乱,通过将图片移动到剩余的一格空白处而改变图片的位置,最终拼成原始图片。
五、功能说明
游戏功能图:
<
关闭游戏
?
本拼图游戏,运用了Java2中的图形处理技术和消息响应技术。
通过图形技术,实现图片的导入和分割。
通过消息响应机制,使程序可以响应用户的鼠标操作,进行拼图游戏的操作。
这个游戏主要分为四个模块,分别是游戏开始、查看图片、选择图片和退出游戏。
这四个摸块的功能各不一样,玩家如果在游戏过程中感觉拼图小块之间的接合不明显,玩家可以点击“查看”按钮来浏览拼图完成的效果图,从而使得游戏不会无从下手;玩家如果觉得当前拼图的画面不满意可以点击“选择”图片按钮来更换图片,或者想更改拼图的画面,玩家可以进入游戏文件夹进行更换图片文件,但是需要注意的是图片需要有格式,同时还需要将所要更改的图片切割成大小相同的九个小块,具体就不详细说了,游戏文件夹中会给大家附一个.txt 文件,供大家更换图片使用,从而提高玩家乐趣。
六、主要功能程序段
import 引入类
import .*;
class PaneButton extends JButton {, ().y - 100);
} else if (direction == "DOWN") {, ().y + 100);
} else if (direction == "LEFT") { - 100, ().y);
(
} else { + 100, ().y);
}
}
}
public class PanelOfImage extends JPanel implements MouseListener {pg");etLocation(j * 100, i * 100);etBounds().x;
int y = pane[i].getBounds().y;
if (y / 100 * 3 + x / 100 != i)
return false;
|
}
return true;
}
public void reLoadPictrue() {pg");
pane[i * 3 + j].setIcon(icon);
}
}
}
-
public void breakRank() {etBounds().x <= 100 && pane[0].getBounds().y <=
100) {;
int y = ().y;
int direction = (int) () * 4);etBounds().x == x)
&& (pane[j].getBounds().y == y)) {ove("RIGHT", 100);etBounds().x == x)
&& (pane[j].getBounds().y == y)) {
pane[j].move("LEFT", 100);etBounds().x == x)
&& (pane[j].getBounds().y == y)) {
pane[j].move("DOWN", 100);etBounds().x == x) [
&& (pane[j].getBounds().y == y)) {
pane[j].move("UP", 100);ddMouseListener(this);
}
hasAddActionListener = true;
}
private boolean test(int x, int y) {;;;;emoveMouseListener(this);
}
hasAddActionListener = false;
¥
}
}
}
import .*;;
public class TextImagePieceTogether extends JFrame implements ActionListener {pg");pg");//获得图片图标
JLabel label = new JLabel(icon);//根据图标设置标签
(0, 0, 300, 300);//设置标签的方位
,
();
(label);
();
}
}
}
public static void main(String[] args) {//java程序主入口处
new TextImagePieceTogether();//实例化对象
\
}
}
七、运行结果游戏界面:
[
>
¥
、
开始游戏:
)
'
查看全图:|
,
`
更换图片:
八、编程经验
本练习制作拼图游戏的实例,运用了Java2中的图形处理技术和消息响应技术。
通过图形技术,实现图片的导入和分割。
通过消息响应机制,使程序可以响应用户的鼠标操作,进行拼图游戏的操作。
九、设计体会
在编程过程中,使我更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。
对于这种面向对象的编程思想,使刚入门的人很快就能写出自己的程序。
锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。
都是通过自己查帮助文档,或通过网络进行学习和了解到的。
和别人在一起交流是一件很快了的事。
体会到写程序最重要的是程序思想,而不是单纯的写代码。
如何解决类之间的关联和继承关系,如何组织类是很关键的。
此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。
在实验的过程中,总有一些错误,必须仔细检查并结合课本知识进行对比、揣摩才能找出错误的语句代码,进而进行改正才能得到需要的结果,最容易忽略的问题就是文件的头文件了,一不小心就会出现一大堆错误,所以一定要做好实验准备,以免越改越乱。
同时,自己也有很多不足的方面,查阅了大量资料,即使向同学请教,最终完成了这次大作业的编写,从中也得到了很多,让自己对面向对象的理解更加深刻,对JAVA语言的使用也更加灵活。
十、存在的问题及解决方法
由于本程序规模稍微偏大,在设计和编程过程中遇到很多问题,其中图片小块的移动和位移状态是很大的一块,通过自己查帮助文档,网络学习和了解,也请教了几个有经验的同学才得以完成,但也学到了很多自己以前没有的思路和想法。