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拼图小游戏答辩
} return true; }
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(5)如何实现图片的切换?
public void actionPerformed(ActionEvent arg0) { //对三个按钮事件的处理 Button button=(Button)arg0.getSource(); // 获得事件按钮源
通过鼠标点击相邻图片,所点击的图片与空白按 钮互换位置,完成拼图的移动。
具体代码
(3)如何实现图片的移动?
1.鼠标事件
public void mouseP方格的鼠标按下事件
Cell button=(Cell)event.getSource(); // 获得鼠标按的方格按钮
cell=new Cell[9];// 创建九个方格 Icon icon;// 声明图标 for (int i = 0; i < 3; i++) {//循环为9个方格加载 图片,并初使化坐标,形成三行三列 for(int j=0;j<3;j++){ icon=new ImageIcon(“pictrue/pic_”+pictureID+“_”+(i*3
(4)如何判断游戏结束的标 志?
public boolean isFinish(){//判断是否拼合成功 for(int i=0;i<8;i++){ int x=cell[i].getBounds().x; int y=cell[i].getBounds().y; if(y/100*3+x/100!=i)
MFC拼图游戏答辩
R
出品人 :
程 序 演 示
特 色 介 绍
主 要 功 能 介 绍
课 题 要 求 达 到 的 目 :负责程序框架构建及功能代码的输入, 并调试程序,完成部分实验报告。
同志:负责输入部分代码,完善程序的细节, 完成部分实验报告。 同志:负责输入部分代码,查找相关资料, 完成部分实验报告。
特色介绍
我们也实现了缜密的逻辑: 1.如某些功能执行后一些按钮灰化。 2.用户在游戏的过程中可以得到一些 提示。 3.程序实现了最小化功能。
特色介绍
课题要求达到的目标
将一张图片切分成若干小片,打乱顺序任意 显示。用户可以用鼠标拖动各小片到正确位置以 恢复原来的图像。要求有不同的难度等级,切分 成不同的片数。完成拼图后,提交,程序应该判 断是否拼成了一幅完整的图形。本游戏还应有图 片还原的功能。
主要功能介绍
特色介绍
我们使用了3种控件, 分别是: group box控件, picture控件和 push button控件。 同时我们还自学了 添加音乐的功能。
基于Java的拼图游戏设计毕业设计
Java课程设计——拼图游戏基于Java的拼图游戏设计游戏实现功能解析及界面游戏规则介绍1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其他格子内随机放置由要拿来拼图的图片切割成的若干个小图片,图片的切割按照一定的公式计算,因为,该通过单击任意一个与空格子相邻的方块可以把该方游戏中设有拼图游戏的等级,根据不同的等级,按照公式会切割成不同的小图片块数。
2)在开始游戏之前,可以选择游戏等级后再点击“开始”菜单里的“新游戏”,进行拼图游戏,通过将空格旁边的小图片移入空格子内(不断的移动方块),来实现拼图,直到方块一行一行的按图片的原始样子拼好即可完成该游戏。
3)游戏拼完后,会弹出一个“信息”框,显示你玩游戏所用的步数与时间,点击“确定”后,会弹出一个“输入”框,可以在里面输入游戏者的姓名,单击“确定”后会弹出游戏的记录框。
4)游戏的简单规则在游戏界面的“关于”菜单内的“帮助”信息框内已经简单介绍了。
游戏前可以先预览看看。
游戏实现功能主窗口界面1)游戏初始状态当游戏刚运行时,会出现如下界面,本游戏中已经存在了三张图片,如过游戏者想拼自己感兴趣的图片的话,可以将自己的图片放入到“background”(背景图片)文件夹中,再进行“选择”->“背景图片”中选择你自己的图片,然后选择“等级”->“困难”或“普通”或“简单”,进行等级选择,最后选择“开始”->“新游戏”就可以拼自己想拼的图了。
初始窗口如图1所示:图1 游戏初始窗口2)游戏进行状态当游戏者选择好图片与等级后,就可以进行拼图游戏了及进入游戏的进行状态。
3)游戏暂停状态当游戏者,在游戏过程中半途暂停游戏的话,将出现如图3所示的游戏暂停状态的界面。
当游戏者又想继续游戏时,直接单击界面上的“继续”字样,就可以继续游戏了。
图2 游戏暂停状态主窗口菜单在游戏的主窗口菜单中包括如下几个菜单:(1)“开始”菜单。
包括了,“新游戏”、“成绩记录”、“图片预览”、“退出游戏”。
java本科答辩问题及回答
java本科答辩问题及回答Java本科答辩问题主要围绕以下几个方面:●专业知识:答辩委员会会考察学生对Java语言的掌握程度,包括语法、语义、编程规范、常用类库等。
●设计能力:答辩委员会会考察学生的设计能力,包括系统的设计、架构的设计、算法的设计等。
●开发能力:答辩委员会会考察学生的开发能力,包括代码的编写、测试、部署等。
●创新性:答辩委员会会考察学生的创新性,包括项目的创新点、解决方案的创新性等。
以下是一些常见的Java本科答辩问题及回答:1.请介绍一下Java语言的基本概念。
答:Java语言是一种面向对象、编译型、解释型、多线程的程序设计语言。
2.请介绍一下Java语言的语法特点。
答:Java语言的语法特点包括:●使用驼峰命名法。
●使用分号结尾语句。
●使用关键字来表示变量类型、方法类型等。
●使用括号来表示方法调用、循环语句等。
3.请介绍一下Java语言的继承机制。
答:Java语言的继承机制是基于类的继承。
子类可以继承父类的所有成员,包括属性、方法、构造函数等。
4.请介绍一下Java语言的多态性。
答:Java语言的多态性是指在同一类型的变量中可以保存不同类型的对象。
5.请介绍一下Java语言的垃圾回收机制。
答:Java语言使用垃圾回收机制来自动回收不再使用的对象。
6.请介绍一下Java语言的常用类库。
答:Java语言提供了丰富的常用类库,包括:●ng:提供基本的数据类型、方法、类等。
●java.util:提供常用的工具类,如集合类、日期时间类等。
●java.io:提供输入输出操作的类。
●:提供网络编程的类。
7.请介绍一下您设计的Java项目。
答:在介绍项目时,可以从以下几个方面进行说明:●项目的背景和目的。
●项目的设计和实现。
●项目的测试和部署。
●项目的创新点。
8.请回答以下问题:请解释一下Java语言中的“final”关键字。
请解释一下Java语言中的“static”关键字。
请解释一下Java语言中的“synchronized”关键字。
java答辩问题
java答辩问题在Java答辩中,可能会涉及以下一些常见问题:1. Java是什么?Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)开发并于1995年正式发布。
它提供了一套跨平台的解决方案,可在不同的操作系统上运行。
Java广泛应用于开发各种类型的应用程序,如Web应用程序、桌面应用程序、移动应用程序等。
2. Java的特性有哪些?Java具有以下特性:- 简单性:Java语法简洁易懂,易于学习和使用。
- 面向对象:Java是一种完全的面向对象语言,支持封装、继承和多态等概念。
- 跨平台性:Java的核心思想是“一次编写,到处运行”,即通过Java虚拟机(JVM)实现跨平台性。
- 健壮性:Java具有强大的异常处理和内存管理机制,可确保程序的稳定性和安全性。
- 高性能:Java通过即时编译和垃圾回收等技术实现高性能。
- 多线程:Java提供多线程编程支持,方便编写并发程序。
- 安全性:Java有一套完善的安全机制,包括类加载器、安全管理器等,以确保程序的安全运行。
3. Java虚拟机(JVM)是什么?Java虚拟机(JVM)是Java程序运行的环境,它通过将Java字节码翻译成机器码来实现Java程序的执行。
JVM负责内存管理、垃圾回收、线程管理等,它是Java跨平台性的关键所在。
不同操作系统上的JVM会根据目标平台的特点进行适当的优化和适配,以确保Java程序能够在不同平台上运行。
4. 什么是Java的垃圾回收机制?Java的垃圾回收机制是自动管理内存的一种机制。
Java虚拟机会自动监测和回收程序中不再使用的对象的内存空间,使开发人员无需手动管理内存。
垃圾回收器负责在程序执行过程中定期检查内存,释放不再使用的对象所占用的内存空间,以提高内存利用率和程序的性能。
5. Java中的异常处理机制是什么?Java的异常处理机制用于处理程序运行时出现的错误和异常情况。
java移动开发技术课程设计答辩问题
Java移动开发技术课程设计答辩问题1. 引言移动应用的普及和发展给我们的生活带来了巨大的便利和乐趣。
在这个背景下,学习和掌握Java移动开发技术成为了非常重要的一项能力。
本文将围绕Java移动开发技术课程设计答辩问题展开讨论,全面深入地介绍与任务名称相关的内容。
2. Java移动开发技术概述Java是一种跨平台的编程语言,具有广泛的应用领域,其中包括移动应用开发。
Java移动开发技术主要涉及两个方面:Android开发和J2ME(Java 2 Platform, Micro Edition)开发。
2.1 Android开发Android是一个基于Linux内核的操作系统,主要用于手机、平板电脑等移动设备。
Android应用程序使用Java编写,并且通过Dalvik虚拟机来执行。
Android提供了丰富的API和库,使得开发者可以轻松地创建各种功能强大的应用程序。
在Android开发中,我们需要掌握以下基本知识:•Android组件:Activity、Service、Broadcast Receiver、Content Provider等。
•布局:使用XML文件定义界面布局。
•用户界面:使用控件和布局来构建用户界面。
•数据存储:使用SQLite数据库或文件存储数据。
•网络通信:使用HTTP协议进行网络通信。
•多线程编程:避免阻塞主线程,提高应用的响应速度。
2.2 J2ME开发J2ME是Java平台的一个子平台,专门用于开发嵌入式设备上的应用程序。
J2ME应用程序通常运行在资源受限的设备上,如手机、PDA等。
相比Android开发,J2ME开发更加简单,并且可以在更多类型的设备上运行。
在J2ME开发中,我们需要了解以下内容:•MIDP(Mobile Information Device Profile):定义了一组核心API和功能,用于在移动设备上运行Java应用程序。
•CLDC(Connected Limited Device Configuration):定义了一组最小化的Java库和虚拟机规范,适用于资源受限的设备。
答辩中关于java可问的问题
答辩中关于java可问的问题
1. Java是什么?它有什么特点和优势?
2. Java的运行环境是什么?请说明Java的运行原理。
3. 请解释一下Java的内存管理机制。
4. Java的线程是什么?如何创建和控制线程?
5. 什么是Java异常?它们的分类和处理方式有哪些?
6. Java的反射机制是什么?它的主要应用场景是什么?
7. Java中的集合框架有哪些?请简要介绍一下它们的主要特点。
8. Java中的输入输出流是怎样使用的?请举例说明。
9. 什么是Java的多态性?如何实现?
10. 请解释一下Java中的类加载机制。
11. Java中的设计模式有哪些?请列举几个常用的设计模式及
其应用场景。
12. 请给出一些提高Java程序性能的方法。
13. Java中的垃圾回收机制是什么?请解释一下垃圾回收的流程。
14. 请解释一下Java中的锁机制及其常用API。
15. 什么是Java的网络编程?请简要介绍一下Java的Socket 编程。
16. Java中的数据库操作是如何进行的?请介绍一下Java数据库连接(JDBC)的使用。
17. 请解释一下Java中的面向对象编程的特点和优势。
18. Java中的序列化和反序列化是什么?它们的作用是什么?如何实现?
19. Java中的AOP是什么?它的应用场景有哪些?
20. 请解释一下Java中的泛型是什么?如何利用泛型提高代码的安全性和可读性?。
拼图游戏_java课设_含可运行程序
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
图3 游戏初始界面
单击start按钮开始游戏,界面自动加载并切割图片,玩家此时就可以通过鼠标来完成游戏了,单击空白区域旁边的图快就会移动,移动方向是向着空缺块移动,也就是说孔雀块四周都是可移动的块,而不是紧邻空缺块的图快则不能移动,结果如图4所示。
沈阳大学
图4 开始后的界面
当玩家想有提示信息时可单击数字提示,单击后会在图块上出现带有顺序的数字,玩家可以通过数字更加容易的完成拼图游戏,如图5所示。
沈阳大学
如果不想显示数字提示则可单击清除提示,结果则如同上图4所示。
图5 数字提示界面图
在游戏中,玩家每移动一块图快,状态栏中的步数就会自动加1,并在游戏状态中显示出来,游戏完成时会弹出一个对话框,提示玩家完成拼图游戏并显示所用步数,完成游戏结果图如图6所示。
图6 完成游戏对话框
玩家若想换一个图片进行游戏,则可通过image下拉框实现,玩家可以根据自己的
沈阳大学
兴趣爱好进行选择,如图7所示
图7 image下拉框
例如可以选择下拉框中的唯美,运行界面则如图8所示
图8 唯美拼图界面
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学。
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拼图小游戏答辩
(3)如何实现图片的移动?
1.鼠标事件
if(x1==x2&&y1-y2==100)//如果满足条件则进行交换 button.move("UP",100);// 方格向上移动 else if(x1==x2 && y1-y2==-100) button.move("DOWN",100);// 方格向下移动 else if(x1-x2==100 && y1==y2) button.move("LEFT",100);;// 方格向左移动 else if(x1-x2==-100 && y1==y2) button.move("RIGHT",100);// 方格向右移动 else return;//不满足就不进行任何处理三、实源自的游戏功能三、实现的游戏功能
附加功能: 可选择从 预设的图片中选择图片 拼图
三、实现的游戏功能
游戏结束界面
四、算法设计
要实现游戏的上述功能,很显然有以下几个关 键问题要考虑:
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(5)如何实现图片的切换?
int i=JOptionPane.showConfirmDialog(this,pic, "选 择图片", JOptionPane.OK_CANCEL_OPTION); //弹出对话框 if(i==JOptionPane.YES_OPTION){ // 选择对话框的确定按钮 MyCanvas.pictureID=pic.getSelectedIndex()+1; // 获得列表项的编号 myCanvas.reLoadPictrue();// 图片重载
基于Javascript网页拼图游戏答辩提纲
基于Javascript语言的程序开发—网页拼图游戏1 选题的目的与意义为了真切地体会到拼图游戏在各种编译语言下的效果,这里选择JavaScript语言进行网页游戏的程序开发,结合所学对游戏程序做出详尽分析。
从基本的数字拼图、图像拼图到复杂的记忆拼图游戏开发,结合JavaScript脚本语言的各种算法设计和对象描述,有逻辑地由浅入深地解析JavaScript脚本语言在网页拼图游戏中的应用。
在最终的探讨下看到用JavaScript语言中的循环算法、数组和字符串可以实现拼图的网页布局,利用各种函数对象来实现网页拼图的动态操作。
2 论文的写作思路1. 引言2. 网页拼图游戏概述3. 网页程序设计语言概述4. 数字拼图游戏5. 图像拼图游戏6. 配对记忆游戏7. 附录其中1~3部分为语言工具和涉及对象分析部分,4~6部分为论文核心部分,通过过程介绍,完成整个的网页拼图游戏,第7部分为完整代码设计部分。
3 课题内容及要点1. 数字拼图游戏。
2. 图像拼图游戏。
3. 配对记忆游戏是一个考验记忆力的游戏。
在项目中除了HTML和JavaScript基本知识外涉及的技术主要包括数组和键盘事件等。
数组与循环的结合,可以缩短和简化程序,因为可以利用下标值设计一个循环,高效地处理多种情况。
游戏界面中的游戏设置区通常不会发生改变,因此采用静态的页面设计即可,而游戏操作区的表格形状及游戏信息需随游戏的进程而不断变化,因而采用动态页面。
所有的拼图都是一个个数字块构成的,这些数字必须满足逆序数为偶数,才能实现拼图游戏。
4 功能介绍数字拼图网页需实现的功能有:(1) 初始时n个数字随机分布在不同的单元格中,显示一个可变行列的表格;(2) 用户通过上下左右四个方向键互换数字和临近空白单元格,实现数字的移动;(3) 点击“重置”按钮可以打乱顺序重新拼图;(4) 在下拉列表中选择行和列,设置游戏难度;(5) 游戏完毕后弹出提醒对话框。
java拼图游戏计算机毕业设计论文
基于Java的拼图游戏 (2)摘要 (2)1 绪论 (4)1.1 课题背景 (4)1.2 目的和意义 (5)1.3 可行性分析 (6)2 技术及工具介绍 (6)2.1 Eclipse (6)2.2 awt (7)2.2 swing (7)2.3 SWT (8)3 需求分析 (8)3.1 面向对象方法介绍 (8)3.2 功能需求 (10)3.3 用户界面需求 (10)4 程序设计 (11)4.1 总体设计方案 (11)4.2 系统流程图设计 (12)4.3 详细设计 (13)5 程序实现 (18)5.1 游戏主界面设计与实现 (18)5.2 游戏游戏菜单设计与实现 (18)5.3 选择菜单设计与实现 (20)5.4 帮助菜单的设计与实现 (23)6 软件测试 (25)6.1 测试的目的及相关问题 (25)6.2 测试方法 (25)6.3 测试用例 (26)6.4 测试分析和总结 (29)结论 (29)参考文献 (30)致谢 (31)英文原文 (32)中文翻译 (47)基于Java的拼图游戏摘要拼图游戏是一种可变性很高且游戏性很强的游戏,在平时空闲的时候可以自己制定图片享受智力拼图游戏的乐趣,空闲之余不妨放松一下。
拼图是一种不分年龄不分性别都能玩的游戏,它不仅可以开发智力且帮助大家提高动脑解决问题的能力,而且可以娱乐身心,放松情绪。
玩拼图还有助于手眼协调,玩家能锻炼整体和部分的协调关系,发现其中的乐趣。
本课题主要是用Eclipse Swing对一小型程序进行开发研究。
选择一个进行游戏的图片,单击图片碎块可以进行移动,然后恢复图片原来形状,本游戏主要考察玩家的反应能力和应变能力,在游戏之余提高观察能力。
本游戏中通过分析JAVA游戏的开发流程,对功能进行设计。
该游戏主要实现了开始游戏,更改图片,游戏难度选择,记录统计,背景音乐等功能。
游戏界面美观,操作简单,功能齐全,是广大游戏爱好者都喜欢的一款游戏,具有一定的游戏性和娱乐性。
俄罗斯方块答辩
10
12
工作小结
岁月匆匆,一个月的工作已经结束了。在这一 个月里,我们的编程技术又提升了一个台阶,拥 有了更良好的编程思维。 在接下来的时间中,我们将进一步学习和实践 java,也将更加努力的完成导师所布置的每一个 任务。
11
12
——计通卓越班(Java实验组)
2
12
软件简介
制作难点
刚开始着手感觉逻辑性太强
制作流程
构思这个游戏所需要的类 在编程中由构思的类逐个添加代码
如何储存图形结构类型
处理图形和显示结果的关系
编译运行,检查错误
3
12
基本逻辑框架
shapefactory 产 生 图 形 shape 接 处理按键的事件 受 图 形 Groude Gamepanel 触发事件 Controller
Gamepanel
5
12
方块的移劢和碰撞
用controller调用shape移动的方法。 调用isMoveDownable ()能否移动来判断是否接触窗 口下线和障碍物 调用Ground 的accept方法是不能移动的方块变成障碍物 并在GamePanel显示出来
6
12
方块的消行
• Ground中Obstacles数组存放障碍物并在Gamepanel中显 示出来; • 循环判断每一行的障碍物是否满行 满行调用delete函数 • isFull()判断最上面一行是否满行判断游戏是否结束
已经成功消行
7
12
软件展示
8
12
游戏运行视频
9
12
改善计划
1.继续优化代码,完成一些实用功能的添加。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(4)如何判断游戏结束的标志?
public boolean isFinish(){//判断是否拼合成功 for(int i=0;i<8;i++){ int x=cell[i].getBounds().x; int y=cell[i].getBounds().y; if(y/100*3+x/100!=i) //判断是否每一个位置都恢复到初始位置 return false; } return true; }
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(5)如何实现图片的切换?
public void actionPerformed(ActionEvent arg0) { //对三个按钮事件的处理 Button button=(Button)arg0.getSource(); // 获得事件按钮源 if(button==start){// 如果是开始按钮 myCanvas.Start(); // 调用图片方格打乱方法 }
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(3)如何实现图片的移动?
通过鼠标点击相邻图片,所点击的图片与空白按 钮互换位置,完成拼图的移动。 具体代码
(3)如何实现图片的移动?
1.鼠标事件
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(1)如何加载图片?
cell=new Cell[9];// 创建九个方格 Icon icon;// 声明图标 for (int i = 0; i < 3; i++) {//循环为9个方格加载图片,并初使化 坐标,形成三行三列 for(int j=0;j<3;j++){ icon=new ImageIcon(“pictrue/pic_”+pictureID+“_”+(i*3+j+1)+“.jpg”);// 根据指定URL创建图标 cell[i*3+j]=new Cell(icon);// 创建方格在方格中加载图片 cell[i*3+j].setLocation(j*100,i*100);// 设置方格的位置 this.add(cell[i*3+j]);// 面板添加方格
(5)如何实现图片的切换?
else if(button==preview){// 如果是查看事件 if(button.getLabel()=="预览"){ // 如果按钮标签为"预览" container.remove(myCanvas);// 容器移除图片面板 container.add(panelPreview);// 容器添加预览标签 panelPreview.updateUI(); // 不用调整大小就可以出现新增删的组件 container.repaint();// 重绘 button.setLabel("返回");// 设置按钮标签 }
(3)如何实现图片的移动?
1.鼠标事件
if(x1==x2&&y1-y2==100)//如果满足条件则进行交换 button.move("UP",100);// 方格向上移动 else if(x1==x2 && y1-y2==-100) button.move("DOWN",100);// 方格向下移动 else if(x1-x2==100 && y1==y2) button.move("LEFT",100);;// 方格向左移动 else if(x1-x2==-100 && y1==y2) button.move("RIGHT",100);// 方格向右移动 else return;//不满足就不进行任何处理
(3)如何实现图片的移动?
1.鼠标事件
cellNull.setLocation(x1,y1);// 重新设置空方格的位置 this.repaint();
(3)如何实现图片的移动?
2.move方法
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); }
(5)如何实现图片的切换?
Icon icon=new ImageIcon("pictrue/pic_"+MyCanvas.pictureID+".jpg"); // 获得图片图标 JLabel label=new JLabel(icon);// 根据图标设置标签 label.setBounds(0,0,300,300);// 设置标签的方位 panelPreview.add(label); panelPreview.repaint(); } } } }
(5)如何实现图片的切换?
int i=JOptionPane.showConfirmDialog(this,pic, "选 择图片", JOptionPane.OK_CANCEL_OPTION); //弹出对话框 if(i==JOptionPane.YES_OPTION){ // 选择对话框的确定按钮 MyCanvas.pictureID=pic.getSelectedIndex()+1; // 获得列表项的编号 myCanvas.reLoadPictrue();// 图片重载
Java拼图小游戏
2015/1/5
一、实训要求
利用java的图形用户界面设计,设计简单的 拼图游戏
二、程序流程图
三、实现的游戏功能
三、实现的游戏功能
附加功能: 可选择从 预设的图片中选择图片 拼图
三、实现的游戏功能
游戏结束界面
四、算法设计
要实现游戏的上述功能,很显然有以下几个关 键问题要考虑:
(5)如何实现图片的切换?
else{
container.remove(panelPreview); // 容器移除预览面板 container.add(myCanvas);// 容器添加图片面板 container.repaint();// 重绘 button.setLabel("预览");// 设置按钮标签 } }
public void mousePressed(MouseEvent event) { //方格的鼠标按下事件 Cell button=(Cell)event.getSource(); // 获得鼠标按的方格按钮 int x1=button.getBounds().x; //得到所单击方格的坐标 int y1=button.getBounds().y; int x2=cellNull.getBounds().x;//得到空方格的坐标 int y2=cellNull.getBounds().y;
五、核心代码分析
1.如何加载图片? 2.如何实现拼图的随机排列? 3.如何实现图片的移动? 4.如何判断游戏结束的标志? 5.如何实现图片的切换选择?
(2)如何实现拼图的随机排列?
关键代码: int direction=(int)(Math.random()*4); //随机产生一个0-3的数字,对应空方格的上下 左右移动
(5)如何实现图片的切换?
else if(button==set){//如果是选择按钮,修改所选 图片 Choice pic = new Choice();// 创建选择器 pic.add("小猫");// 添加列表项 pic.add("小猪"); pic.add("云"); pic.add("QQ"); pic.add("卡通"); pic.add("花");