java拼图游戏设计报告

合集下载

Java课程设计拼图报告

Java课程设计拼图报告

Java应用技术实训报告题目多功能拼图游戏软件所在院系软件学院所在单位软件教研室一.总体设计本系统共包括11个java源文件和2文件。

这是个功能比较齐全的拼图游戏,最关键的不用自己手动切割图片,再进行加载。

而是应用类方法在内存中进行图片切割和加载,方便了用户的使用。

另外,该程序会根据图片的大小自动生成窗口大小,不会造成切割图片错误和切割错位。

程序最后以*.rc格式的文件来保存游戏记录。

1.类之间的关系如图1所示。

2.java源文件及其功能如表1所示。

二、详细设计该拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。

在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。

在游戏开始后会更新“开始“菜单,增加“显示图片”菜单项。

拼图结束时可以显示游戏成绩和记录的存档。

1.主类Puzzle(1)成员变量见表2(2)方法见表2-1表2-1(3)源代码见文件Puzzle.java2.类CardFrame(1)成员变量见表3(2)方法见表3-1(3)源代码见文件CardFrame.java3.类MenuFrame(1)成员变量见表4(2)方法见表4-1(3)源代码见文件MenuFrame.java4类ShowImage(1)成员变量见表5(2)方法见表5-1(3)源代码见文件ShowImage.java5类Split(1)成员变量见表6(2)方法见表6-1(3)源代码见文件Split.java6类Matrix (1)成员变量见表7(2)方法见表7-1(3)源代码见文件Matrix.java7.类Grades(1)成员变量见表8(2)方法见表8-1(3)源代码见文件CardFrame.java8.类GameOver(1)成员变量见表9(2)方法见表9-1(3)源代码见文件GameOver.java9.类point(1)成员变量见表10(2)方法见表10-1(3)源代码见文件point.java10. 类ButtonClick(1)成员变量见表11(2)方法见表11-1(3)源代码见文件ButtonClick.java11类Arg(1)成员变量见表12(2)代码见文件Arg.java三.运行效果游戏启动后的初始界面图1图1选择“关于”菜单下的“帮助“菜单弹出如下对话框:图2图2选择“关于”菜单下的“关于“菜单弹出如下对话框:图3图3选择难度级别–中级和背景图片,按开始后就可进入游戏画面如图4图4在游戏过程中可以按“开始”菜单下面的“显示图片”来查看完整图片如图5图5游戏成功后会显示你游戏所用时间和移动图块的步数如图6图6如果你的游戏时间打破记录就会首先显示如下画面如图7图7输入名字后,按确定就可以查看所有成绩排名了如图8(也可以通过“开始”菜单下的“分数排名”来查看成绩)图8所有游戏截图完毕四.工作总结经过这段时间的学习我收获不小,总结起来有如下几点:1 更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。

java拼图小游戏课程设计

java拼图小游戏课程设计

java拼图小游戏课程设计一、课程目标知识目标:1. 学生能理解Java基本语法和面向对象编程的概念;2. 学生能掌握使用Java编写图形用户界面(GUI)的方法;3. 学生能了解数组的使用以及二维数组在拼图游戏中的应用;4. 学生能掌握基本的事件处理和逻辑判断方法。

技能目标:1. 学生能运用所学知识,设计并编写出一个简单的Java拼图小游戏;2. 学生能通过调试和优化代码,提高程序的稳定性和用户体验;3. 学生能在团队协作中发挥个人优势,共同完成项目任务。

情感态度价值观目标:1. 学生培养对编程的兴趣和热情,激发探究精神;2. 学生在项目实践中,树立自信心,勇于面对挑战;3. 学生通过团队协作,学会沟通、分享和承担责任;4. 学生在编程实践中,遵循道德规范,尊重他人成果。

本课程针对初中年级学生,结合Java编程语言的教学要求,注重培养学生的编程兴趣和实际动手能力。

课程以拼图小游戏为载体,让学生在实践过程中掌握Java编程基础和面向对象编程思想,提高解决问题的能力和团队协作精神。

通过本课程的学习,期望学生能够达到上述具体、可衡量的学习成果。

二、教学内容1. Java基本语法与面向对象编程:- 数据类型、变量、运算符- 控制结构:条件语句、循环语句- 面向对象:类、对象、构造方法、封装、继承、多态2. Java图形用户界面(GUI)设计:- Swing组件:窗口、标签、按钮、面板- 布局管理器:边界布局、流布局、网格布局- 事件处理:事件监听器、事件适配器3. 数组与二维数组:- 数组的声明、初始化、遍历- 二维数组的操作与应用4. 拼图游戏原理与实现:- 游戏逻辑设计- 图片切割与显示- 拼图移动与验证5. 程序调试与优化:- 代码调试技巧- 性能优化方法6. 团队协作与项目管理:- 项目任务分配- 团队沟通与协作- 项目进度管理本教学内容根据课程目标,结合教材相关章节,以科学性和系统性为原则进行组织。

puzzlejava课程设计报告

puzzlejava课程设计报告

puzzlejava课程设计报告一、教学目标本课程旨在让学生掌握Puzzle Java的基本概念、语法以及编程技巧。

通过本课程的学习,学生将能够理解并运用面向对象编程的思想,熟练使用Java编写简单的小程序。

1.理解Java语言的基本语法和数据结构。

2.掌握面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.熟悉Java的标准库和常用API。

4.能够使用Java编写简单的控制台应用程序。

5.能够使用Java编写图形用户界面应用程序。

6.能够进行基本的程序调试和性能优化。

情感态度价值观目标:1.培养学生的编程兴趣,提高他们对计算机科学的热爱。

2.培养学生的问题解决能力和创新思维。

3.培养学生团队合作和自主学习的精神。

二、教学内容本课程的教学内容主要包括Java语言的基本语法、数据结构、面向对象编程以及常用API。

1.Java语言的基本语法:变量、数据类型、运算符、控制结构等。

2.数据结构:数组、链表、栈、队列、树等。

3.面向对象编程:类、对象、封装、继承、多态等。

4.常用API:Java标准库、集合框架、多线程等。

三、教学方法本课程将采用讲授法、案例分析法和实验法进行教学。

1.讲授法:用于讲解基本概念、语法和编程技巧。

2.案例分析法:通过分析实际案例,让学生理解并掌握面向对象编程的思想。

3.实验法:让学生通过动手实践,巩固所学知识和技能。

四、教学资源1.教材:《Puzzle Java入门与应用》。

2.参考书:《Java核心技术》、《Effective Java》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,每个部分所占比例分别为30%、30%和40%。

1.平时表现:通过课堂参与、提问、小组讨论等方式评估学生的学习态度和理解程度。

2.作业:布置适量的编程作业,评估学生的编程能力和应用能力。

3.考试:包括期中考试和期末考试,主要评估学生对课程知识的掌握程度。

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) {//当 第 一个方格距左上角近时

Java拼图游戏面向对象课程设计报告

Java拼图游戏面向对象课程设计报告

图1、游戏初始界面图2、游戏运行界面} catch (IOException e) {//捕获自定义的异常e.printStackTrace();}initScreen(); //用此方法来初始化canvas,由于canvas 初始化较复杂,所以单独写一个方法buff = new BufferedImage(715, 381, BufferedImage.TYPE_INT_BGR);//Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片gb = buff.getGraphics();//存在于Image类中,存在于缓冲器中的图片,设置坐标sx = image.getWidth(this) / 3;//图片分割后每一个图片的宽度sy = image.getHeight(this) / 3;//图片分割后每一个图片的高度setLayout(new BorderLayout());//设置此布局方法,加入控件add(panel, BorderLayout.SOUTH);//布置容器的边框布局,它可以对容器组件进行安排,并调整其大小add(canvas, BorderLayout.CENTER);panel.setLayout(new GridLayout(1, 4));//把组件按指定的几行几列分开,添加其他组件时,会按添加的顺序挨个添加到该组件上panel.add(start);panel.add(show);panel.add(showStep);showStep.setEditable(false);//步骤默认false,使调用这个函数的控件不能被编辑showStep.setFont(new Font("黑体", Font.PLAIN, 16));//设置字体setSize(720, 425);setResizable(false);//表示生成的窗体大小,不可改变大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//执行关闭按钮,关闭窗体}//具体实现Canvas,进行初始化void initScreen(){canvas = new Canvas(){public void paint(Graphics g) { //覆写canvas的paint 方法gs = getGraphics(); //得到Canvas的Graphicsif (isRunning) {drawScreen();//运行,调用此方法} else {g.drawImage(image, 0, 0, this);//在指定的位置使用原始物理大小绘制指定的 Imageg.setColor(Color.gray);//设置前景颜色,变为灰色}}};canvas.addMouseListener(new MouseAdapter() {//添加鼠标事件监听器//覆写mousePressed 方法,实现鼠标点击时,图片移动public void mousePressed(MouseEvent me) {if (!isRunning) {});}//容器内游戏运行时图片的显示方法void initMap() {long time = System.nanoTime();//得到系统当前时间作为随机数种子java.util.Random rnd = new java.util.Random(time);int temp, x1, y1, x2, y2;//随机交换图片for (int i = 0; i < 100; i++) {x1 = rnd.nextInt(3);x2 = rnd.nextInt(3);y1 = rnd.nextInt(3);y2 = rnd.nextInt(3);temp = map[x1][y1];map[x1][y1] = map[x2][y2];map[x2][y2] = temp;}outer: //标记8号图片(即空白图片)for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){if (map[i][j] == 8) {point.setLocation(i, j);break outer;//跳转到带有空白标号的行}}}}//把整个canvas上的所有对象都绘制一遍void drawScreen() {int sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2;int t1, t2;gb.setColor(Color.white);gb.clearRect(0, 0, sx * 3, sy * 3);//清空整个缓冲区图片for (int x = 0; x < 3; x++){//图片在横行的显示for (int y = 0; y < 3; y++){//图片在列上的显示if(map[x][y] != 8) {// 目的地址dx1 = x * sx; dy1 = y * sy; // 移动的左上角坐标dx2 = dx1 + sx - 1; dy2 = dy1 + sy - 1; // 移动的右下角坐标// 源地址t1 = map[x][y] % 3 ; t2 = map[x][y] / 3 ;sx1 = t1 * sx; sy1 = t2 * sy; // 移动的左上角图标sx2 = sx1 + sx - 1; sy2 = sy1 + sy - 1; // 移动的右下角坐标gb.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, Color.white, canvas);//绘制缓冲区图片}}}gs.drawImage(buff, 0, 0, canvas);//将缓冲区图片绘制到 canvas 上}//主方法,实现Jpgsaw类的使用,运行游戏public static void main(String[] args) {Jpgsaw pintu = new Jpgsaw("JpgsawGame");new Thread().start();//新建一个ThreadStart对象并传入一个方法给线程调用pintu.setVisible(true);//最后调用,避免组件不显示,利用线程设置组件可见}}/*播放背景音乐*/public class PlayMe {public static void playMe() {try {String file = "/JpgSaw/JpgsawGame/src/test.mp3"; //音乐文件路径FileInputStream fis = new FileInputStream(file); //路径设置BufferedInputStream bis = new BufferedInputStream(fis);//带有缓冲区的输入流new Player(bis).play(); //jar包中定义好的‘播放’方法}catch (Exception e){System.out.print("ERROR " + e);}}}6.上机调试及问题分析1、图片的存放位置出现错误,图片引用路径报错。

拼图游戏报告

拼图游戏报告

南京邮电大学计算机学院2014/2015学年第1学期《JAVA语言》课程期末考核报告课题代号(单选)□课题1 □课题2 □课题3课题名称:拼图游戏小组成员人数(单选)□1人□2人□3人□4人小组成员名单(学号和姓名):(1)学号姓名(2)学号姓名(3)学号姓名(4)学号姓名课题实现采用的开发工具(如为其他,请填写具体工具名称)□NetBeans□Eclipse □JDK命令行□其他______________课题实现采用的操作系统(如为其他,请填写操作系统名称)□Microsoft Windows□Unix □ Linux □其他__________________课题实现形式(如为PC桌面应用程序之外的其他形式请填写)___________课题完成时间:_______2014年12月28日________________________对应提交的电子文档文件夹名称(准确填写):_______________________________________________________________===================以下部分为教师填写区,请勿填写======================= 评阅编号:()-()成绩评定:软件运行______软件基本功能_______软件提高功能______软件部分成绩________文档结构______文档理论___________文档撰写__________文档部分成绩________总成绩_____________备注____________________________________________________________________一、游戏要求①基本要求:在游戏界面显示一幅完整图片,点击游戏开始后该图片自动被分割为指定的M*N(其中M和N分别为图块矩阵的行和列,例如3x3=9块,4x5=20块)个图片小方块并随机散布在游戏界面中,使用鼠标拖动小方块进行拼接,正确归位的方块将被固定,直到全部图片还原,游戏结束。

java_课程设计报告_拼图游戏

java_课程设计报告_拼图游戏

目录一、题目介绍、、、、 (3)1、题目、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、32、任务、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、33、要求、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、3二、需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、3三、概要设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、41、功能分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、42、界面初始化、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、43、事件处理(1)鼠标事件、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、44、事件处理(2)键盘事件、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、55、状态判断、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、56、程序流程图、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、5四、详细设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、61、、html代码设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、62、、java代码设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、6五、调试结果、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、19第一个大图得拼图界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、19第一个拼图全图预览、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、19第二个大图得拼图界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、20第二个拼图全图预览、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、20第三个大图得拼图界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、21第三个拼图全图预览、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、21六、心得总结、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、22七、参考资料ﻩ、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、22一、题目介绍1、题目:拼图游戏设计2、任务:利用java得图形用户界面设计,设计一个拼图游戏界面,能够实现基本得游戏功能.3、要求:(1)游戏者可以选择不同得图片.(2)按完成得时间计算成绩。

java_课程设计报告_拼图游戏

java_课程设计报告_拼图游戏

目录一、题目介绍.... (3)1、题目......................................................... (3)2、任务......................................................... . (3)3、要求......................................................... .. (3)二、需求分析................................................. . (3)三、概要设计.................................................. . (4)1、功能分析......................................................... (4)2、界面初始化......................................................... .. (4)3、事件处理(1)鼠标事件......................................................... . (4)4、事件处理(2)键盘事件......................................................... . (5)5、状态判断......................................................... (5)6、程序流程图......................................................... .. (5)四、详细设计................................................. . (6)1、.html代码设计......................................................... . (6)2、.java代码设计......................................................... . (6)五、调试结果................................................. . (19)第一个大图的拼图界面......................................................... .. (19)第一个拼图全图预览......................................................... (19)第二个大图的拼图界面......................................................... .. (20)第二个拼图全图预览......................................................... (20)第三个大图的拼图界面......................................................... .. (21)第三个拼图全图预览......................................................... (21)六、心得总结................................................. . (22)七、参考资料 ................................................... (22)一、题目介绍1、题目:拼图游戏设计2、任务:利用java的图形用户界面设计,设计一个拼图游戏界面,能够实现基本的游戏功能。

java拼图游戏报告

java拼图游戏报告

目录1 需求分析 (2)1.1功能需求 (2)1.2系统需求 (2)2游戏详细设计 (3)2.1 程序类主要功能介绍 (3)2.2 程序源代码 (3)1)Arg.java (3)2) ButtonClick.java (4)3) CardFrame.java (5)4) GameOver.java (7)5) Grades.java (8)6) Matrix.java (11)7) MenuFrame.java (12)8) point.java (18)9) Puzzle.java (19)10) ShowImage.java (22)11) Split.java (23)12)FileTest.java (24)13)MusicPlay.java (25)3测试过程 (27)1 需求分析1.1功能需求1)让玩家能够用鼠标控制进行菜单的选择2)玩家可以通过点击空白区域来移动有图方块3)给玩家提供暂停游戏的功能4)提供图片预览,方便玩家查看5)提供图片导入功能,是玩家可以用自己喜爱的图片进行游戏6)提供背景音乐功能,优化玩家的游戏氛围7)提供游戏记录功能,让玩家可以不断挑战自己的水平,激发游戏乐趣8)提供关卡难度选择,使得游戏适应人群更为广泛9)提供游戏帮助功能,帮助玩家更快适应游戏10)游戏成功后能给出提示1.2系统需求1)性能需求:实时性好,可靠性强2)设计约束:1.开发工具:jdk 6.0以上2.运行环境:windows xp以上3.满足所定义的各种需求2游戏详细设计2.1 程序类主要功能介绍该游戏程序中包括11个类。

包括:ButtonClick.class、CardFrame.class、GameOver.class、Grades.class、Matrix.class、MenuFrame.class、point.class、Puzzle.class、ShowImage.class、Split.class、FileTest.class、MusicPlay.class。

课程设计报告-拼图游戏

课程设计报告-拼图游戏

void draxSegment(int seg,int x,int y){ int dx=seg%4*sx, dy=seg/4*sy;
创建按钮并做事件处理算法: void initButtons(){ bStart.addActionListener(new ActionListtener(){ public void actionPerformed(ActionEvent ae){ initMap(); drawScreen(); running=true; bSee.setLabel("显示正确图像"); } }); bSee.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ //bSee 按钮标题为“继续游戏” if(bSee.getLabel().equals("继续游戏")){ drawScreen(); bSee.setLabel("显示正确图像"); } else{ //bSee gs.draxImage(imgPuzzle,0,0,screen); bSee.setLabel("继续游戏"); } } 绘制图画,将全部图像绘制在 screen 中算法:
Байду номын сангаас
buff=createImage(imgPuzzle.getWidth(this),imgPuzzle.getHeight(this)); gb=buff.getGraphics(); } 初始化 map 并使用 Rondom 混排图像块算法: void initMap(){ java.util.Random rnd=new java.util.Random(); int temp,x1,y1,x2,y2; for(int i=0;i<100;i++){ x1=rnd.nextInt(4); x2=rnd.nextInt(4); y1=rnd.nextInt(4); y2=rnd.nextInt(4); temp=map[x1][y1]; map[x1][y1]=map[x2][y2]; map[x2][y2]=temp; } outer:for(int j=0;j<4;j++) for(int i=0;i<4;i++)

java拼图课程设计

java拼图课程设计

java拼图课程设计一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和编程逻辑,能运用面向对象的方法进行简单的程序设计。

2. 让学生了解并掌握Java中图形用户界面(GUI)设计的相关知识,尤其是布局管理器和事件处理。

3. 使学生理解拼图游戏的逻辑结构和实现原理。

技能目标:1. 培养学生运用Java语言解决实际问题的能力,能够独立设计和编写简单的拼图游戏。

2. 培养学生的逻辑思维和问题分析能力,通过编程解决拼图过程中的难题。

3. 提高学生团队协作和沟通能力,能够在小组合作中发挥个人优势,共同完成拼图游戏项目。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养其主动探索新知识的习惯。

2. 培养学生积极面对挑战和困难,勇于尝试和解决问题的精神。

3. 引导学生认识到编程在生活中的应用价值,激发其创新意识和实践能力。

课程性质:本课程为实践性较强的学科,注重培养学生的实际操作能力和编程思维。

学生特点:学生具备一定的Java基础,对编程有一定兴趣,但可能对图形用户界面设计和游戏开发较为陌生。

教学要求:结合学生特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,提高其动手实践能力。

通过小组合作、讨论和分享,促进学生的团队协作和沟通能力。

同时,注重培养学生面对挑战的勇气和解决问题的能力,使学生在完成课程任务的过程中,不断提升自身编程水平和综合素质。

二、教学内容1. Java基本语法和面向对象编程:- 复习Java基本数据类型、运算符、控制结构等基础语法。

- 强化面向对象编程思想,重点讲解类、对象、继承、多态等概念。

2. 图形用户界面(GUI)设计:- 介绍Swing库的基本组件和布局管理器。

- 讲解事件处理机制,包括事件监听器和事件适配器。

3. 拼图游戏设计:- 分析拼图游戏的逻辑结构,讲解游戏实现的原理。

- 引导学生设计拼图游戏的类和对象,以及游戏界面布局。

4. 教学内容的安排与进度:- 第一周:复习Java基本语法,面向对象编程思想。

Java拼图程序报告

Java拼图程序报告

Java课程设计Java拼图程序目录一.程序介绍二.程序任务三.程序设计思想四.程序要求五.程序使用的基本方法六.遇到的问题七.程序界面八.对原有程序的改变九.程序流程图十.感想十一.程序代码一.程序介绍:将一个图片分为15个部分并随机排列,游戏任务是将这15个部分还原成为原图片,游戏结束。

二.程序任务:用鼠标拖动小图片进行拼接,将15个小图片还原成初始的左边,将这15个小图片拼成一幅完整的原始图片。

三.程序设计思想:将一个大图片通过随机方法,分为15个有随机坐标的小图片,通过在游戏中不断移动图片,使其回到初始的坐标,当15个小图片都被还原为初始坐标时,游戏结束。

四.程序要求:命令1:初始化主界面。

管理屏幕显示。

使用Graphics类。

命令2:选择一张执行的图像。

并产生随机数,确定图片摆放的随意性。

getImage()需要指明图像路径和名称。

并产生随机数,确定图片摆放的随意性。

initgame()是自写函数,通过调用Math.random()产生随机数。

命令3:鼠标事件的监听。

addMouseListener(this);addMouseMotionListener(this);确立单击鼠标产生的事件,鼠标移动产生的事件,按下鼠标产生的事件,拖动鼠标产生的事件等等。

命令4:改变坐标。

通过拖动鼠标改变图片的位置。

命令5:判断游戏是否结束。

若通过改变是图片坐标和初始设置时一样则宣布游戏结束。

五.程序使用的基本方法:六.遇到的问题:1.缺省包import java.awt.*;import java.applet.*;import java.awt.event.* ;这个是指引入的是缺省包,但是我一开始把这个class建在package中,所以编译就出错了。

解决方法:应该直接把这个class直接建在Java project中才能编译通过。

2.载入图片pic[0]=getImage(getCodeBase(),"PICTURE0.JPG");getImage()方法是在Java小程序插入图片。

基于JAVA的拼图游戏毕业设计

基于JAVA的拼图游戏毕业设计

基于JAVA的拼图游戏基于JAVA的拼图游戏摘要JAVA语言是由美国sun公司开发的一种完全面向对象的程序设计语言,它由c++语言发展而来,但比c++语言简单。

JAVA语言具有简单、与平台无关、高效、健壮、安全、多线程等特点,是当前网络编程中的首选语言。

本文主要通过JAVA语言来开发一个小游戏,以实现其相关功能。

随着社会的发展,计算机已经成为人么日常生活,学习办公中不可缺少的一部分,并在各个领域发挥着重要的作用。

在计算机迅猛发展的影响下,计算机游戏也随之兴盛起来。

拼图游戏就是其中一中,它适用范围广,老少皆宜。

该游戏不仅可锻炼动手能力,观察能力,而且还能培养人与人之间的协作能力。

它是一个应用程序,它的游戏规则和win7的拼图游戏是一样的。

将一张图片分割成16张小图,将除去左上角的其余15张图片放入一个4*4的网格内,通过鼠标的点击图片来切换空白处对换位置,让其复原成原来的顺序,游戏就完成了。

可以选择下一张来切换另一张图片,或者按开局重新开始游戏。

关键词:JAVA 2平台标准版,JAVA语言,小应用程序Jigsaw puzzle based on JavaabstractJA V A language is developed by the sun a fully object-oriented programming language, it is developed by c + + language, but simpler than c + + language.The JA V A language has a simple, platform-independent, efficient, robust and security, multithreading, is the preferred language in the current network programming.This paper mainly through the JA V A language to develop a small game, in order to realize its related functions.With the development of the society, the computer has become the people daily life, an indispensable part of learning in the office, and play an important role in all fields.Under the influence of the rapid development of computer, computer games has been thriving.Jigsaw puzzle is among them one, its applicability is wide and for young and old.The game is not only can exercise ability, observation ability, but also can cultivate interpersonal cooperation ability.This puzzle game is based on the J2SE platform development, it is an application, it is the rules of the game and win7 puzzle game is the same.Picture will be divided into 16 images, will remove the upper left corner of the rest of the 15 images in a 4 * 4 mesh, the blank space with the mouse click on the image to switch switch position, make its recovery as the original sequence, the game is finished.Can choose the next to switch the other picture, or press start to start the game.Keywords: Java 2 Platform, Standard Edition, JAVA language, application.目录摘要 (Ⅰ)ABSTRACT (Ⅱ)第一章概述 (1)1.1项目开发的背景与国内外研究现状 (1)1.2项目开发的目的与意义 (1)1.3系统开发方法介绍 (2)第二章项目开发语言及开发环境 (5)2.1JAVA语言 (5)2.2ECLIPSE简介 (6)第三章可行性分析及总体设计原则 (8)3.1可行性分析所采用的方法和步骤 (8)3.2评价尺度 (8)3.3可行性分析 (8)3.3.1 技术可行性 (8)3.3.2 经济可行性 (8)3.3.3 社会可行性 (8)3.4总体设计原则 (9)第四章需求分析 (10)4.1OOA方法介绍 (10)4.2功能需求 (10)4.3环境需求 (10)4.4可靠性需求 (11)4.5用户界面需求 (11)4.6软件成本消耗与开发进度需求 (11)4.7条件假定和限制 (11)第五章系统分析 (12)5.1业务流程分析 (12)5.2总体设计方案 (12)5.3游戏功能分析 (13)第六章系统设计 (14)6.1系统功能设计 (14)6.2系统重点设计 (14)6.2.1 开局载入图片 (15)6.2.4 随机排列图片 (16)6.2.3 游戏时排列图片 (18)6.2.4 换下一张图片 (18)6.2.5 判断拼图是否成功 (19)6.3拼图游戏界面的设计与实现 (20)第七章设计小结 (21)参考文献 (24)致谢 (25)附录 (26)太原科技大学华科学院毕业设计(论文)第一章概述1.1项目开发的背景与国内外研究现状随着信息技术的飞速发展、蓬勃进步,同时随着国际互连网与相关系统的迅速普及,不同国家、行业被Internet连接在一起,互相通信,共享全世界的计算机资源和信息。

拼图游戏_java课设_含可运行程序

拼图游戏_java课设_含可运行程序

沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
图3 游戏初始界面
单击start按钮开始游戏,界面自动加载并切割图片,玩家此时就可以通过鼠标来完成游戏了,单击空白区域旁边的图快就会移动,移动方向是向着空缺块移动,也就是说孔雀块四周都是可移动的块,而不是紧邻空缺块的图快则不能移动,结果如图4所示。

沈阳大学
图4 开始后的界面
当玩家想有提示信息时可单击数字提示,单击后会在图块上出现带有顺序的数字,玩家可以通过数字更加容易的完成拼图游戏,如图5所示。

沈阳大学
如果不想显示数字提示则可单击清除提示,结果则如同上图4所示。

图5 数字提示界面图
在游戏中,玩家每移动一块图快,状态栏中的步数就会自动加1,并在游戏状态中显示出来,游戏完成时会弹出一个对话框,提示玩家完成拼图游戏并显示所用步数,完成游戏结果图如图6所示。

图6 完成游戏对话框
玩家若想换一个图片进行游戏,则可通过image下拉框实现,玩家可以根据自己的
沈阳大学
兴趣爱好进行选择,如图7所示
图7 image下拉框
例如可以选择下拉框中的唯美,运行界面则如图8所示
图8 唯美拼图界面
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学。

java拼图游戏设计报告

java拼图游戏设计报告

《Web程序开发》课程大作业拼图游戏一、题目说明拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。

在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。

本游戏使用Java语言设计,开发平台为JDK。

开发工具Eclipse。

JDK是Sun Microsystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的Java SDK。

JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。

JDK是学好Java的第一步。

从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。

二、题意分析因为要制作拼图游戏,所以首先要实现图片的导入。

这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。

然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。

Initgame()函数是自写函数,在函数体内,通过调用Math.random()函数产生随机数,用来达到图片位置摆放的随意性和随机性。

最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。

这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。

游戏操作流程:开始游戏操作游戏游戏完成三、设计目的本游戏的设计目的在于休闲娱乐,玩家可以在学习、编程等工作后用来休息放松,让集中的心态得到释放,对于小孩可以通过精美的卡通的图片来吸引孩子的兴趣,加强动脑动手能力。

java课程设计拼图游戏

java课程设计拼图游戏

java课程设计拼图游戏一、教学目标本节课的教学目标是让学生掌握Java编程的基本语法和逻辑思维能力,通过编写Java程序实现一个简单的拼图游戏。

具体目标如下:1.知识目标:–掌握Java的基本数据类型、运算符、控制结构。

–了解面向对象编程的基本概念,如类、对象、封装、继承。

–学习Java的图形用户界面编程,如Swing组件、事件处理等。

2.技能目标:–能够运用Java编程语言编写简单的程序。

–能够运用面向对象的思想设计程序。

–能够使用Java图形用户界面库编写用户友好的界面。

3.情感态度价值观目标:–培养学生的编程兴趣,提高学生解决问题的能力。

–培养学生团队合作的精神,学会分享和交流。

–培养学生对技术的热爱,提高学生对计算机科学的认知。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java基本语法和逻辑思维能力的培养。

2.面向对象编程的基本概念和应用。

3.Java图形用户界面编程,包括Swing组件的使用和事件处理。

具体的教学大纲如下:1.第一课时:Java基本语法和逻辑思维能力的培养。

–数据类型、运算符、控制结构。

–简单的数学计算程序编写。

2.第二课时:面向对象编程的基本概念和应用。

–类和对象的概念。

–封装、继承的应用。

–简单的图形界面程序编写。

3.第三课时:Java图形用户界面编程。

–Swing组件的使用。

–事件处理机制。

–拼图游戏的实现。

三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

1.讲授法:用于讲解Java基本语法、面向对象编程概念和图形用户界面编程的基础知识。

2.讨论法:通过小组讨论,让学生深入理解面向对象编程的优势和应用。

3.案例分析法:分析实际的拼图游戏案例,让学生了解图形用户界面编程的实现方法。

4.实验法:让学生动手编写拼图游戏程序,巩固所学知识。

四、教学资源本节课的教学资源包括教材、参考书、多媒体资料和实验设备。

JAVA拼图大作业实验报告1

JAVA拼图大作业实验报告1

JAVA拼图大作业实验报告2016秋季学期《Java语言》大作业系统说明报告目录1项目目的与意义 (3)1.1项目背景说明 (3)1.2项目目的与意义 (3)2 软件开发环境与技术说明 (4) 2.1软件开发环境 (4)2.2软件开发技术描述 (4)3系统分析与设计 (5)3.1项目需求分析说明 (5)3.2系统设计方案 (5)4系统源代码 (8)4.1系统源代码文件说明 (8)4.2源代码 (8)5系统使用说明书 (41)6参考资料 (49)7附件说明 (49)1项目目的与意义1.1项目背景说明JAVA语言2016年学期期末大作业-44拼图游戏的设置1.2项目目的与意义目的:实现简单的4X4JAVA拼图游戏的简单功能,可以进行用户的登录和拼图游戏的完成,给用户以良好的游戏体验,再加入更多个性化的内容意义:从用户角度,设计一个简单但是十分考验人的小型拼图游戏,让人们在简单方便的操作中舒缓自己一天的疲惫,和朋友一起进行挑战,不断地突破,展现游戏的美丽,实现游戏的价值从开发者角度,这是对我半年JAVA语言学习的检测,同时我也自学了许多东西,比如数据库的链接,SQL语句和JAVA的各种函数,让我可以真正的体会到开发一个项目的过程和需要付出的不懈努力,也让我享受到了自己尽全力完成一个项目的过程和完成后的喜悦。

2 软件开发环境与技术说明2.1软件开发环境JAVA开发环境-EclipseJAVA支持包:import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;mysql-connector-java-5.1.40-bin.jar(MySql驱动jar 包)数据库环境:MySql数据库(使用的是Navicat图形界面)2.2软件开发技术描述1.拼图游戏界面设计主要使用了JAVA的GUI图形界面,主登录界面和账号注册界面使用的是流式FlowLayOut布局进行登录框和按钮的设置,而拼图游戏界面则是使用的网格式GridFlowOut布局.2.通过连接MySql数据库,(名称:user),创建数据表user_info 列名称为:username(账号),password(密码),score(过关时间), Count(过关所用步数);实现了游戏的账号注册和登录功能,以及每个账号成绩的记录和储存,并可以再推行界面中显示每个用户的游戏记录3.通过Timer类实现了拼图游戏计时功能4.图片存储在项目文件夹下image文件夹中,通过名字的巧妙设置实现了打乱图片顺序,切换图片,判断拼图是否完成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Web程序开发》课程大作业拼图游戏3011212046张杰2014.11一、题目说明拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。

在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。

本游戏使用Java语言设计,开发平台为JDK。

开发工具Eclipse。

JDK是Sun Microsystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的Java SDK。

JDK 是整个Java的核心,包括了Java运行环境,Java 工具和Java基础的类库。

JDK是学好Java的第一步。

从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。

二、题意分析因为要制作拼图游戏,所以首先要实现图片的导入。

这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。

然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。

Initgame()函数是自写函数,在函数体内,通过调用Math.random()函数产生随机数,用来达到图片位置摆放的随意性和随机性。

最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。

这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。

游戏操作流程:三、设计目的本游戏的设计目的在于休闲娱乐,玩家可以在学习、编程等工作后用来休息放松,让集中的心态得到释放,对于小孩可以通过精美的卡通的图片来吸引孩子的兴趣,加强动脑动手能力。

本游戏适玩人群老少皆宜。

四、设计特点本游戏主要充分运用图形用户界面将一张图片切割成大小相同的九块小图,运用其中的八块,将小图的顺序和位置打乱,通过将图片移动到剩余的一格空白处而改变图片的位置,最终拼成原始图片。

五、功能说明游戏功能图:本拼图游戏,运用了Java2中的图形处理技术和消息响应技术。

通过图形技术,实现图片的导入和分割。

通过消息响应机制,使程序可以响应用户的鼠标操作,进行拼图游戏的操作。

这个游戏主要分为四个模块,分别是游戏开始、查看图片、选择图片和退出游戏。

这四个摸块的功能各不一样,玩家如果在游戏过程中感觉拼图小块之间的接合不明显,玩家可以点击“查看”按钮来浏览拼图完成的效果图,从而使得游戏不会无从下手;玩家如果觉得当前拼图的画面不满意可以点击“选择”图片按钮来更换图片,或者想更改拼图的画面,玩家可以进入游戏文件夹进行更换图片文件,但是需要注意的是图片需要有格式,同时还需要将所要更改的图片切割成大小相同的九个小块,具体就不详细说了,游戏文件夹中会给大家附一个.txt文件,供大家更换图片使用,从而提高玩家乐趣。

六、主要功能程序段import java.awt.Rectangle;//引入类import java.awt.event.*;import javax.swing.*;class PaneButton extends JButton {// 继承按钮类实现加图片的方格PaneButton(Icon icon) {//构造方法进行初始化,设置图标super(icon);this.setSize(100, 100);//设置每个方格的大小}public void move(String direction, int sleep) {//方格的移动if (direction == "UP") {//方格向上移动this.setLocation(this.getBounds().x, this.getBounds().y - 100);} else if (direction == "DOWN") {//方格向下移动this.setLocation(this.getBounds().x, this.getBounds().y + 100);} else if (direction == "LEFT") {//方格向左移动this.setLocation(this.getBounds().x - 100, this.getBounds().y);} 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() {//构造方法进行初始化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++) {//循环为每个方格加载图片for (int j = 0; j < 3; j++) {//循环列icon = new ImageIcon("pictrue/pic_" + currentPID + "_"+ (i * 3 + j + 1) + ".jpg");//创建图标pane[i * 3 + j] = new PaneButton(icon);//创建方格在方格中加载图片pane[i * 3 + j].setLocation(j * 100, i * 100);//设置方格的位置this.add(pane[i * 3 + j]);//面板添加方格}}this.remove(pane[8]);// 移除多余的方格}public boolean isFinish() {//判断是否拼凑成功for (int i = 0; i < 8; i++) {int x = pane[i].getBounds().x;int y = pane[i].getBounds().y;if (y / 100 * 3 + x / 100 != i)return false;}return true;}public void reLoadPictrue() {//重新加载图片在重新选择图片时Icon icon;for (int i = 0; i < 3; i++) {//循环为每个方格加载图片for (int j = 0; j < 3; j++) {icon = new ImageIcon("pictrue/pic_" + currentPID + "_"+ (i * 3 + j + 1) + ".jpg");pane[i * 3 + j].setIcon(icon);}}}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);//随机产生一个数字对应空方格的上下左右移动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)) {//依次寻找左侧的按钮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)&& (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)&& (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)&& (pane[j].getBounds().y == y)) {pane[j].move("UP", 100);//方格向上移动一格nullPanel.setLocation(x, y);break;}}}}}if (!hasAddActionListener)//判断是否添加动作事件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))return true;elsereturn false;}public void mouseClicked(MouseEvent arg0) {//鼠标点击时调用}public void mouseEntered(MouseEvent arg0) {//鼠标进入组件区域时调用}public void mouseExited(MouseEvent arg0) {//控制鼠标不能移动出面板的范围}public void mouseReleased(MouseEvent arg0) {//鼠标按键在组件上释放时调用}public void mousePressed(MouseEvent event) {//鼠标按下时调用PaneButton button = (PaneButton) event.getSource();//获得鼠标按的方格按钮int x1 = button.getBounds().x;//获得该方格按钮的横坐标int y1 = button.getBounds().y;//获得该方格按钮的纵坐标int nullDir_X = nullPanel.getBounds().x;//得到空方格的横坐标int nullDir_Y = nullPanel.getBounds().y;//得到空方格的纵坐标if (x1 == nullDir_X && y1 - nullDir_Y == 100)//进行比较果满足条件则交换button.move("UP", 100);//方格向上移动else if (x1 == nullDir_X && y1 - nullDir_Y == -100)button.move("DOWN", 100);//方格向下移动else if (x1 - nullDir_X == 100 & y1 == nullDir_Y)button.move("LEFT", 100);//方格向左移动else if (x1 - nullDir_X == -100 && y1 == nullDir_Y)button.move("RIGHT", 100);//方格向右移动elsereturn;nullPanel.setLocation(x1, y1);//重新设置空方格的位置this.repaint();//重新加载if (this.isFinish()) {//进行是否完成的判断JOptionPane.showMessageDialog(this, "恭喜你,完成拼图");for (int i = 0; i < 8; i++){//循环撤消鼠标事件pane[i].removeMouseListener(this);}hasAddActionListener = false;}}}import java.awt.*;//引入类import java.awt.event.*;import javax.swing.*;public class TextImagePieceTogether extends JFrame implements ActionListener {//操作实现拼图的游戏的类PanelOfImage imagePanel;//声明图片面板JPanel panelOfSouth, panelOfLook;////声明南侧面板和查看面板Button startButton;//声明开始按钮Button lookButton;//声明查看按钮Button chooseButton;//选择按钮Container container;// 容器,得到内容面板public TextImagePieceTogether() {//构造方法进行初始化container = this.getContentPane();//获得内容面板startButton = new Button("开始");//创建开始按钮startButton.addActionListener(this);//添加监听事件lookButton = new Button("查看");lookButton.addActionListener(this);chooseButton = new Button("选择");chooseButton.addActionListener(this);panelOfLook = new JPanel();//创建查看面板panelOfLook.setLayout(null);//设置布局Icon icon = new ImageIcon("pictrue/pic_" + PanelOfImage.currentPID+ ".jpg");//创建图标JLabel label = new JLabel(icon);//创建图标标签label.setBounds(0, 0, 300, 300);//设置标签的位置panelOfLook.add(label);//添加标签panelOfSouth = new JPanel();//创建南侧面板panelOfSouth.setBackground(Color.red);//设置背景颜色panelOfSouth.add(startButton);//添加开始按钮panelOfSouth.add(lookButton);//添加查看按钮panelOfSouth.add(chooseButton);//添加选择按钮imagePanel = new PanelOfImage();//创建图片面板container.add(imagePanel, BorderLayout.CENTER);container.add(panelOfSouth, BorderLayout.SOUTH);this.setTitle("拼图游戏");//设置标题this.setLocation(300, 200);//设置位置this.setSize(308, 365);//设置大小this.setResizable(false);//设置是否可以通过某个用户操作调整this.setVisible(true);//设置可视this.setDefaultCloseOperation(3);//设置默认关闭操作}public void actionPerformed(ActionEvent event) {//按钮触发的事件Button button = (Button) event.getSource();//获得事件按钮源if (button == startButton) {//如果是开始按钮imagePanel.breakRank();//调用图片方格打乱方法} else if (button == lookButton) {//如果是查看事件if (button.getLabel() == "查看") {//如果按钮标签为"查看"container.remove(imagePanel);//容器移除图片面板container.add(panelOfLook);//容器添加查看标签panelOfLook.updateUI();//不用调整大小就可以出现新增删的组件container.repaint();//重绘button.setLabel("返回");//设置按钮标签} else {container.remove(panelOfLook);//容器移除查看面板container.add(imagePanel);//容器添加图片面板container.repaint();//重绘button.setLabel("查看");}} else if (button == chooseButton) {//如果是选择按钮Choice choice = new Choice();//创建选择器choice.add("--小猫--");//添加列表项choice.add("--QQ--");int i = JOptionPane.showConfirmDialog(this, choice, "选择图片",JOptionPane.OK_CANCEL_OPTION);//弹出对话框if (i == JOptionPane.YES_OPTION) {//选择对话框的确定按钮PanelOfImage.currentPID = choice.getSelectedIndex() + 1;//获得列表项的编号imagePanel.reLoadPictrue();//图片重载Icon icon = new ImageIcon("pictrue/pic_"+ PanelOfImage.currentPID + ".jpg");//获得图片图标JLabel label = new JLabel(icon);//根据图标设置标签label.setBounds(0, 0, 300, 300);//设置标签的方位panelOfLook.removeAll();panelOfLook.add(label);panelOfLook.repaint();}}}public static void main(String[] args) {//java程序主入口处new TextImagePieceTogether();//实例化对象}}七、运行结果游戏界面:开始游戏:查看全图:更换图片:八、编程经验本练习制作拼图游戏的实例,运用了Java2中的图形处理技术和消息响应技术。

相关文档
最新文档