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拼图游戏面向对象课程设计报告

图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、图片的存放位置出现错误,图片引用路径报错。

java拼图工作总结

java拼图工作总结

java拼图工作总结
《Java拼图工作总结》。

作为一名Java开发工程师,我在过去一段时间里参与了一项拼图项目的开发工作。

在这个项目中,我深入学习了Java编程语言,并且运用了许多Java技术来实
现拼图游戏的功能。

在这篇文章中,我将总结我在这个项目中所做的工作,并分享一些关于Java拼图工作的经验和教训。

首先,我在项目中学习了如何使用Java Swing库来创建图形用户界面。

通过使
用Swing库,我能够轻松地设计出一个美观、易用的拼图游戏界面,并且实现了
用户交互的功能。

我还学习了如何使用Java的事件处理机制来响应用户的操作,
比如点击、拖拽等操作,使得用户能够轻松地操作拼图游戏。

其次,我在项目中学习了如何使用Java的多线程技术来实现拼图游戏的计时和计步功能。

通过使用多线程技术,我能够在游戏进行的同时,实现计时器的功能,让用户能够在规定的时间内完成拼图游戏。

同时,我还实现了计步功能,让用户能够知道自己完成拼图游戏所用的步数,从而提高了游戏的趣味性和挑战性。

最后,我在项目中学习了如何使用Java的数据结构和算法来实现拼图游戏的逻辑功能。

通过使用数据结构和算法,我能够实现拼图游戏的随机打乱和还原功能,以及实现了游戏的自动检测和提示功能,让用户能够更加轻松地完成拼图游戏。

总的来说,通过这个项目,我不仅学习了许多关于Java编程语言的知识和技术,还提高了自己的编程能力和解决问题的能力。

我深刻体会到了Java拼图工作的乐
趣和挑战,也希望通过这篇文章能够与更多的Java开发工程师分享我的经验和教训,让大家一起共同进步。

感谢您的阅读!。

拼图游戏报告

拼图游戏报告

南京邮电大学计算机学院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拼图大作业实验报告

2016秋天学期《 Java语言》大作业系统说明报告编制:岳晓飞( 20153280)专业计算机科学与技术审察:班级信1501-2目录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 文件夹中,经过名字的奇妙设置实现了打乱图片次序,切换图片,判断拼图能否达成。

JAVA拼图游戏设计报告

JAVA拼图游戏设计报告
本游戏使用 Java 语言设计,开发平台为 JDK。开发工具 Eclipse。JDK 是 Sun Microsystems 针对 Java 开发员的产品。自从 Java 推出以来,JDK 已经成为使 用最广泛的 Java SDK。JDK 是整个 Java 的核心,包括了 Java 运行环境,Java 工具和 Java 基础的类库。JDK 是学好 Java 的第一步。从 SUN 的 JDK5.0 开始, 提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提 高。
&& (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 文 件,供大家更换图片使用,从而提高玩家乐趣。

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。

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的图形用户界面设计,设计一个拼图游戏界面,能够实现基本的游戏功能。

3、要求:(1)游戏者可以选择不同的图片。

(2)按完成的时间计算成绩。

(3)记录拼图完成的总步数。

二、需求分析拼图游戏是一个简单的小程序,游戏规则如下:将一张大图打散成9张小图,然后在游戏里任意挑8张图,贴在3行3列的矩阵中的任意位置。

通过鼠标或键盘的方向键移动打乱的8张图片,让其复原成原来的顺序,玩家就胜利了,游戏就结束了。

在游戏结束之后,算出玩家的得分。

三、概要设计1、功能分析由于要计算游戏的时间,需要引入线程,通过实现Runnable 接口和创建Thread类来实现线程的功能。

使用多线程机制来计算时间的流逝。

引入AWT绘图包,实现图片的绘制。

引入事件处理机制,要求对鼠标事件,键盘事件进行相应,实现移动图片,预览全图等功能。

按键“Y”实现临时的原图整体预览。

按键“1或者2或者3”实现大图选择、2、界面初始化调用public void init()通过接收html数据,加载三张源图片,安装媒体监视器和鼠标键盘监听器,实现界面初始化;调用public void initData()将加载的一张大图分割成九个随机分布的小图部分;调用public void paint(Graphics g)划分提示信息区域和拼图区域;3、事件处理(1)鼠标事件调用public void mouseClicked(MouseEvent e)方法实现鼠标事件处理。

课程设计报告-拼图游戏

课程设计报告-拼图游戏

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拼图游戏面向对象课程设计报告

姓名Name学号Student No.20137045 班级Class代码总行数Code Lines 222项目名称Item1.实验目的本次课程设计旨在通过一个完整项目的开发,巩固面向对象程序设计、软件工程、数据库技术等课程的相关知识,加深学生对Java语言的理解,尤其是对面向对象思想、Java编码规范、JDBC访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。

2.实验内容本次课程设计选定的实验项目是使用JAVA语言编写一个拼图游戏并实现其基本功能。

不用自己手动切割图片,再进行加载。

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

利用了Graphics中的public abstract boolean drawImage()方法把img 中由(sx1, sy1)(sx2, sy2)指定的矩形区域画到observer 中由(dx1, dy1)(dx2, dy2)指定的矩形区域内进行构思拼图游戏的具体实现。

导入了一个可播放背景音乐的jar包,在玩游戏时可以欣赏背景音乐。

3.类图4.运行界面图1、游戏初始界面图2、游戏运行界面图3、拼图成功界面5.关键代码(要求在类的定义以及方法定义的前面给出相关描述信息)//定义一个Pintu类public class Jpgsaw extends JFrame{private Image image, buff; //原始图片,缓存图片private int[][] map = {{0, 1, 2},{3, 4, 5},{6, 7, 8}}; //定义数组map,给分割后的图片标号private Point point = new Point(2, 2); //记录第九块图片位置private int sx; //分割后每一个图片的宽度private int sy; //分割后每一个图片的高度private Canvas canvas; //加载图片容器,定义可以显式定位子元素使用坐标是相对 Canvas 区域的区域,绘制图形private Graphics gs; //gs画出Canvas图片坐标private Graphics gb; //gb画出buff图像private boolean isRunning = false; //游戏是否正在进行private JButton start = new JButton("开始新的游戏"); // 按钮1private JButton show = new JButton("显示正确图片"); //按钮2private JTextArea showStep = new JTextArea("显示步骤");//设置步骤显示private JPanel panel = new JPanel(); //一般轻量级面板容器,装在上面2个按钮private int steps = 0; // 记录移动的步骤public Jpgsaw(String title) { //构造方法,初始化变量super(title);//调用了当前类Jpgsaw的父类JFrame的构造方法try { //异常抛出image = ImageIO.read(new File("gg.jpg")); //装载图片} 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) {return; // 如果未运行,说明图片未分割,直接返回}int x = me.getX() / sx;//判断鼠标点击的图片在map中的编号int y = me.getY() / sy;int fx = (int) point.getX();//记录第九块图片(未显示图片)的位置int fy = (int) point.getY();int canMove = Math.abs(fx - x) + Math.abs(fy - y); // 如鼠标点击位置与第九块图片(可移动的位置)相邻,则canMove 必为 1if (canMove != 1 ){return; // canMove 不为1,不能移动图片}map[fx][fy] = map[x][y]; //点击图片坐标赋给第九块图片map[x][y] = 8; //第九块图片给掉点击图片point.setLocation(x, y); //point 坐标改变drawScreen(); //重绘屏幕,实现图片移动showStep.setText("移动步骤:" + ++steps); //步骤加一 }});//为Start按钮添加事件start.addActionListener(new ActionListener() {@SuppressWarnings("deprecation")public void actionPerformed(ActionEvent ae) {initMap();drawScreen();isRunning = true;steps = 0;showStep.setText("移动步骤:" + steps);show.setLabel("显示正确图片");}});//为show按钮添加事件show.addActionListener(new ActionListener() {@SuppressWarnings("deprecation")public void actionPerformed(ActionEvent ae) {if (show.getLabel().equals("继续游戏")) {drawScreen();isRunning = true;show.setLabel("显示正确图片");} else {gs.drawImage(image, 0, 0, canvas);isRunning = false;show.setLabel("继续游戏");}}});}//容器内游戏运行时图片的显示方法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、图片的存放位置出现错误,图片引用路径报错。

我的Java大作业实验报告

我的Java大作业实验报告

课程:面向对象与Java程序设计题目:备忘录系统实现指导老师:班级:学号:姓名:课程设计内容概述<一>目的:一学期的面向对象与Java程序设计的学习告一段落,我们学习了面向对象程序设计的主要原理和方法、Java最主要核心技术。

通过学习,我们掌握了面向对象程学设计的方法、原则和理论,具有了一定的面向对象设计和开发能力。

编程语言的学习过程是一件动手与理论结合的过程,在语言学习的过程中,重点和难点是是设计、思想以及创造。

大作业正是为我们提供了学以致用的平台,切实把我们的理论与动手实践相结合,让我们真正理解Java语言的精髓和编程技巧。

我们组本次的选题是“备忘录系统”,当前旨在扩展和完善当下备忘录的一些功能,用面向对象语言Java完成备忘录系统的基本功能及扩展功能。

<二〉任务:用面向对象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大作业要求+实验报告模板

至少8页纸,第18周结束前打印一份,电子版发到x7c8h5@。

题目二魔板游戏
设计内容:设计GUI界面的魔板游戏程序。

一、设计要求:
魔板由4*4或3*3个方格组成,其中一个格子是空的。

对于4*4的魔板,其他格子里随机放置15个编号为1~15的方块;对于3*3的魔板,其他格子里随机放置8个编号为1~8的方块。

用鼠标单击任何与空格子相邻的方块可以把该方块移入空格子。

通过不
断的移动方块,可以将方块一行一行按数字顺序依次排列。

魔板游戏也可以使用图像来替代数字,对于4*4的魔板,将图像分成4*4个方块,打乱顺序后,放入魔板,并将其中一个方格置为空。

最终目标是通过移动方块恢复为原始图像。

二、总体设计(10分)
该魔板游戏开发中共有几个源文件,各源文件之间的关系说明。

可包括框架图示。

一、主类说明(15分)
用表格的形式说明主类中各成员变量(成员变量的名称、变量类型、变量的描述)、方法(名称、功能、备注)。

二、其他各类的描述和说明。

(15分)
三、附主要源代码(60分)
GUI应用开发(JA V A)期末报告
学号:Y12209117
姓名:徐邦
班级:Y122091
老师:谢从华。

拼图游戏实验报告殷有军

拼图游戏实验报告殷有军

拼图游戏实验报告课程名称:Visual Basic课程设计姓名:殷有军学号:1003280137一、设计题目及要求:题目介绍:该程序的使用方法如下:①制定一幅完整的图片,将其分割为m×n个小图片并打乱顺序后重新排列,其中有一个没有图片的空档;②使用鼠标单击与空档相邻的图片使该图块与空档位置互换;③利用空档位置移动各块图片,最终恢复图片原貌,完成拼图。

游戏过程中可以打开参考图帮助查找各图片的正确位置。

二、用到的主要知识点和相关控件:拼图游戏用到的几个主要知识点和相关控件:1.pictureclip控件用来管理打开的图片并将其分为指定的行列图片,用到其picture属性,rows属性,cols属性等;2.加载image控件数组;3.“打开图片”和“颜色”对话框均由公共对话框commondialog控件实现。

三、设计重点与难点:我认为该拼图游戏的编程过程中存在以下难点:1.对于commond dialog控件和pictureclip控件的一些属性的理解;2.该拼图游戏中如何创建正确数量的image控件,并将这些控件进行有规则的排列;3.如何使pictureclip控件切割的图片能够附给相应的image控件,并能够体现随机性(我认为这是比较难也是很关键的地方);4.如何能够使空白处上下左右的图片能够正确移动到空白处;5.如何判断是否已经拼好。

四、遇到的问题和解决方法:在编程过程中遇到了很多难题,以下我就仅列举几个我所遇到的难题以及我想出的问题的解决办法:1.在编程中我遇到了自己大一没有学过的控件和一些不熟悉的属性,但是通过对图书馆资料的查询以及对MSDN的利用,让我很容易就查到了这些控件和属性,例如大一下学的窗体上的单位是缇,但是这次编程遇到的图片本身却定义为像素,通过MSDN了解到可以通过改变form窗体的scalemode属性可实现单位的转换,由缇变为像素。

2.这个游戏的编程过程中需要用到image控件数组,比较难的一个地方在于如何正确的加载image,并且放置在正确的位置上,通过For x=1To n-1Load frmmain.Image1(x)Next实现对image控件数组的加载通过c=325/frmmain.pc.Colsk=244/frmmain.pc.RowsFor m=1To frmmain.pc.RowsFor z=1To frmmain.pc.Colsfrmmain.Image1(ct).Left=(z-1)*cfrmmain.Image1(ct).Top=(m-1)*kct=ct+1NextNext实现对image的排列。

学位论文—基于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连接在一起,互相通信,共享全世界的计算机资源和信息。

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

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文件夹中,通过名字的巧妙设置实现了打乱图片顺序,切换图片,判断拼图是否完成。

3系统分析与设计3.1项目需求分析说明立足于用户的角度,首先,我们实现了个性化的服务,即账号的注册和登录功能,不同的用户可以进行使用,使游戏具备了最重要的竞技性,只有这样才不会让用户感到无聊,并且我们实现了4X4拼图游戏的基本功能,而且配有游戏的时间的所用步骤,可以实时地反映给游戏用户,让用户清楚地了解到自己的分数,同时还可以记录游戏过关的时间和步数,满足了用户的冲击记录的心理需求,调高了游戏的可玩性,不会被用户快速地玩腻。

3.2系统设计方案从用户的角度,我们需要有以下数据类型数据库user数据表user_info列名称类型长度数据username varchar 255 JAVA2016password varchar 255 Java2016score varchar 255 01:30count int 11 56username和password是用户的必有属性,可以进行登录和注册score和count 即用户所用的时间和步骤,双重分数完美呈现了每个人的实力从系统设计角度首先,最主要的是实现最最基本的游戏功能,即设计拼图游戏的核心程序1.拼图表格式的布局,容易让我想到使用按钮进行网格式布局2.为每个按钮添加背景图片(这些背景图片需要经过事先的裁剪),3.需要进行按钮背景图片的打乱,容易想到使用随机数RANDOM()函数,然后会想到在背景图片的名字上做文章来进行背景图片的随机设置4.我们把16个按钮存储在数组中,便于操作,然而数组最大的方便之处在于他的随机存储,我们可以通过下标访问任意一个按钮,于是想到把图片的名字与下标联系在一起,解决了图片的随机排列5.如何设置背景图片?我们需要有图片的路径,而图片的路径仅仅是图片名字的不同,所以我们将固定的图片存储路径存放到字符串数组中,然后通过循环进行图片的设置,SetIcon()函数可以做到这一切.6.切换下一张,实质还是背景图片的变化,所以我们继续在图片名字上做文章,设置一个表示数字代表是第几张的图片,把他设置到图片名字里面。

然后切换下一张被简化为改变一个数字(编程思路要清晰),数字变即路径变,也就是背景图发生变化总结:拼图-》背景图片的变化-》背景图片路径的变化-》图片名字的变化接下来,实现一个项目的登录和注册,我们需要数据库,而游戏的记录也需要数据库来存放,所以我么必须首先确立自己的数据库体系,如上所示,然后就是实现注册,将数据写入数据库和登录,在数据库中进行匹配,游戏记录的写入和读取。

在游戏成功时,获取当时的时间和步数,写入对应的用户的数据表中,然后另一个界面中设置表格,从数据库中读取信息,然后写入到表格里面进行展示最后,我考虑了游戏的一些具体实现,游戏界面的设计,如何才能让用户看得舒心,玩的自在,和暂停等实用小功能,无限满足用户的需求。

以上,就是我在设计拼图游戏是系统设计方案,以后还会不断地完善自己的程序!4系统源代码4.1系统源代码文件说明拼图游戏源代码结构-分为4个窗口介绍1.Frame1 主登录窗口(属性)包括3个标签组件,4个按钮组件,2个文本域组件和1个布局,4个按钮的鼠标点击监听事件(方法)包括1个函数来进行组件的添加和布局的设置,1个函数进行数据库的连接和读取,4个监听类进行事件的编写2.Frame2 注册窗口(属性)包括2个按钮,4个标签和3个文本域以及2个按钮的点击事件(方法)包括1个函数进行组件的添加和布局的设置,1个函数进行数据库的连接和写入,2个监听类进行点击事件的编写3.Frame3历史记录窗口(属性)包括1个表格(方法)包括1个函数进行表格的属性设置和数据库数据的读取并写入到表格中4.Frame4 游戏窗口(属性)包括4个按钮,3个标签,16个按钮和85张图片(方法)包括1个函数进行组件的添加和布局的设置,4个按钮的点击事件函数,1个计时器的计时事件其他:还有每个窗口中的字体的设置,面板位置的设置,等4.2源代码import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;public class Test {MyListenner1 myListenner1=new MyListenner1();MyListenner2 myListenner2=new MyListenner2();MyListenner3 myListenner3=new MyListenner3();MyListenner4 myListenner4=new MyListenner4();MyListenner5 myListenner5=new MyListenner5();MyListennerFanHui myListenner18=new MyListennerFanHui();JFrame frame=new JFrame();//登录主窗口JFrame frame2=new JFrame();//注册窗口JFrame frame5=new JFrame();//注册窗口JPanel pane00=new JPanel();//历史记录JPanel pane0=new JPanel();JPanel pane1=new JPanel();JPanel pane2=new JPanel();JPanel pane3=new JPanel();JPanel pane4=new JPanel();JPanel pane5=new JPanel();//注册界面JPanel pane6=new JPanel();//注册界面JPanel pane7=new JPanel();//注册界面JPanel pane8=new JPanel();//返回按钮JButton button7=new JButton("返回");JLabel lab=new JLabel("☆简易拼图游戏☆"); //注册界面JLabel lab1=new JLabel("游戏开始");//登录界面/注册JLabel lab7=new JLabel("☆账号注册界面☆");JLabel lab2=new JLabel("账号:");//注册JLabel lab3=new JLabel("密码:");//zhuceJLabel lab4=new JLabel("确认密码:");JTextField text1=new JTextField(10);//注册账号JPasswordField text2=new JPasswordField(10);//注册密码JPasswordField text3=new JPasswordField(10);JButton button6=new JButton("注册");JLabel lab5=new JLabel("账号");//登录JLabel lab6=new JLabel("密码");//dengluJButton button2=new JButton("进入游戏");JButton button1=new JButton("注册账号");JButton button3=new JButton("游戏记录");JButton button5=new JButton("退出游戏");JTextField text4=new JTextField(10);//登录账号JPasswordField text5=new JPasswordField(10);//登录密码GridLayout lay1=new GridLayout(2,2,5,3);GridLayout lay2=new GridLayout(4,2);FlowLayout lay3=new FlowLayout(FlowLayout.LEFT,15,20);Font font1=new Font("楷体",Font.BOLD,25);Font font0=new Font("楷体",Font.BOLD,30);int num=0;int Count=0;int a=0,b=0,c=0,d=0;JFrame frame4=new JFrame();MyListenner1_1 mylistenner11=new MyListenner1_1();MyListenner2_1 mylistenner12=new MyListenner2_1();MyListenner3_1 mylistenner13=new MyListenner3_1();MyListenner4_1 mylistenner14=new MyListenner4_1();MyListenner5_1 mylistenner15=new MyListenner5_1();MyTimerlisterner mytimerlisterner=new MyTimerlisterner(frame4);MyListennerJilu mylistenner16=new MyListennerJilu();JPanel pane1_1=new JPanel();JPanel pane1_2=new JPanel();JPanel pane1_3=new JPanel();JPanel pane1_4=new JPanel();JPanel pane1_5=new JPanel();JPanel pane1_6=new JPanel();Timer timer;//计时器//游戏界面按钮JButton button1_1=new JButton("开始");JButton button1_2=new JButton("下一张");JButton button1_3=new JButton("暂停");JButton button1_4=new JButton("返回");JButton EmptyButton=new JButton();JButton button_1[][]=new JButton[4][4];//游戏界面标签JLabel YuanTu=new JLabel();JLabel BuShu=new JLabel();JLabel ShiJian=new JLabel();JLabel BuShu_num=new JLabel("步数:"+Count);JLabel ShiJian_num=new JLabel();JLabel label_time=new JLabel("时间:"+"00:00");GridLayout TuLay=new GridLayout(4,4,0,0);FlowLayout LeftLay=new FlowLayout(FlowLayout.LEFT,0,15);void jiLu(){int number=0;String[] colname = {"编号","账号","时间","步数","日期"};String[][] data=new String[10][5];Connection conn=ConnectSql();String sql="select username,score,count from user_info";try {Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(sql);while(rs.next()){String username=rs.getString(1);String score=rs.getString(2);int count =rs.getInt(3);String num=""+number;String count1=""+count;if(count!=0){data[number][0] =num;data[number][1] =username;data[number][2] =score;data[number][3] =count1;data[number][4] ="";number++;}}} catch (SQLException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}JTable table = new JTable(data,colname);table.setEnabled(false);JScrollPane jsPane = new JScrollPane(table);pane00.add(jsPane,BorderLayout.CENTER);frame5.add(pane00);}private String[][] order() {String[][] exactnessOrder = new String[4][4];for (int i=0; i<4; i++) {for (int j=0; j<4; j++) {exactnessOrder[i][j] = "image/"+ num+ i+j+ ".jpg";}}return exactnessOrder;}//随机生成无序的图片给每个按钮private String[][] reorder() {String[][] exactnessOrder = new String[4][4];for (int i=0; i<4; i++) {for (int j=0; j<4; j++) {exactnessOrder[i][j] = "image/"+ num+ i+ j+ ".jpg";}}String[][] stochasticOrder = new String[4][4];for (int i=0; i<4; i++) {for (int j=0; j<4; j++) {while (stochasticOrder[i][j]==null) {int r = (int) (Math.random()*4);int c = (int) (Math.random()*4);if (exactnessOrder[r][c] != null) {stochasticOrder[i][j] =exactnessOrder[r][c];exactnessOrder[r][c] = null;}}}}return stochasticOrder;}//判断游戏是否完成public Boolean isSuccess(){int flag=1;String[][] exactnessOrder = order();for(int i=0;i<4;i++){for(int j=0;j<4;j++){if(!button_1[i][j].getIcon().equals(exactnessOrder[i][j] )){flag=0;}}}if(flag==0){return false;}else{return true;}}//数据库连接函数Connection ConnectSql(){String url = "jdbc:mysql://127.0.0.1/user?useUnicode=true&characterEncod ing=utf-8&useSSL=false";String username = "root";String password = "153478"; // 加载驱动程序以连接数据库try {Class.forName("com.mysql.jdbc.Driver" );returnDriverManager.getConnection( url,username, password );}//捕获加载驱动程序异常catch ( ClassNotFoundException cnfex ) {System.err.println("装载 JDBC/ODBC 驱动程序失败。

相关文档
最新文档