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. 团队协作与项目管理:- 项目任务分配- 团队沟通与协作- 项目进度管理本教学内容根据课程目标,结合教材相关章节,以科学性和系统性为原则进行组织。

java课程设计拼图csdn

java课程设计拼图csdn

java课程设计拼图csdn一、教学目标本章节的教学目标旨在让学生掌握Java编程基础,学会使用Java编写简单的拼图游戏。

通过本章节的学习,学生将能够:1.理解Java编程的基本概念和语法;2.掌握Java中面向对象编程的思想和方法;3.学会使用Java编写图形用户界面(GUI)程序;4.掌握拼图游戏的基本逻辑和实现方法。

二、教学内容本章节的教学内容主要包括以下几个部分:1.Java编程基础:介绍Java编程的基本概念和语法,包括数据类型、运算符、控制结构、数组等;2.面向对象编程:讲解Java中的类、对象、继承、多态等面向对象编程的基本概念和方法;3.GUI编程:介绍Java中的Swing库,讲解如何使用Swing编写图形用户界面程序;4.拼图游戏实现:讲解拼图游戏的基本逻辑,包括图块的生成、拼图规则的实现等,并引导学生动手编写拼图游戏程序。

三、教学方法为了达到本章节的教学目标,我们将采用以下几种教学方法:1.讲授法:讲解Java编程基础、面向对象编程和GUI编程的基本概念和方法;2.案例分析法:分析拼图游戏的实现案例,引导学生理解和掌握游戏逻辑的实现方法;3.实验法:安排实验课,让学生动手编写拼图游戏程序,巩固所学知识。

四、教学资源为了支持本章节的教学,我们将提供以下教学资源:1.教材:《Java编程思想》或《Java核心技术》;2.参考书:提供一些关于Java编程、面向对象编程和GUI编程的参考书籍;3.多媒体资料:提供一些关于Java编程和GUI编程的教学视频和演示文稿;4.实验设备:提供计算机实验室,让学生在实验课上进行编程实践。

五、教学评估本章节的教学评估将采用以下几种方式:1.平时表现:评估学生在课堂上的参与程度、提问和回答问题的表现等,占总评的20%;2.作业:布置相关的编程作业,评估学生的编程能力和理解程度,占总评的30%;3.考试:安排一次期末考试,测试学生对Java编程基础和拼图游戏实现的掌握程度,占总评的50%。

拼图游戏java课程设计

拼图游戏java课程设计

拼图游戏java 课程设计一、教学目标本课程的目标是让学生了解和掌握Java编程语言的基本知识,通过拼图游戏的项目实践,培养学生的编程能力、逻辑思维能力和问题解决能力。

知识目标包括Java语言的基本语法、数据结构、控制流程、文件操作等;技能目标包括使用Java开发工具进行代码编写、调试和运行;情感态度价值观目标包括培养学生的团队合作意识、创新精神和对计算机科学的兴趣。

二、教学内容教学内容主要包括Java语言的基本语法、数据结构、控制流程、文件操作等。

具体安排如下:1.第一章:Java语言概述,介绍Java语言的发展历程、特点和应用领域;2.第二章:基本语法,学习Java语言的基本数据类型、运算符、表达式和语句;3.第三章:面向对象编程,学习类的定义、创建对象、继承、多态和封装;4.第四章:数据结构,学习数组、链表、栈和队列的基本概念和应用;5.第五章:控制流程,学习条件语句、循环语句和异常处理;6.第六章:文件操作,学习文件的读写、目录的操作和文件过滤器。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

在讲授基本语法和概念时,通过生动的案例进行讲解,让学生更好地理解和掌握;在实践环节,引导学生动手编写代码,通过实验法培养学生的实际操作能力。

同时,鼓励学生进行小组讨论,共同解决问题,培养团队合作意识。

四、教学资源教学资源包括教材、多媒体资料和实验设备。

教材选用《Java编程思想》作为主教材,辅助以《Java核心技术》等参考书;多媒体资料包括教学PPT、视频教程等,通过图文并茂的方式帮助学生理解;实验设备包括计算机、网络和编程工具,为学生提供实践操作的环境。

五、教学评估教学评估主要包括平时表现、作业和考试三个部分。

平时表现占30%,主要评估学生的课堂参与度、提问和回答问题的积极性等;作业占30%,主要评估学生的代码编写能力、问题解决能力和团队合作精神;考试占40%,主要评估学生对Java语言基本概念和编程技能的掌握程度。

java拼图游戏的课程设计

java拼图游戏的课程设计

java拼图游戏的课程设计一、课程目标知识目标:1. 学生能理解Java编程语言中面向对象的基本概念,包括类、对象、继承和封装。

2. 学生能够掌握Java中事件处理、图形用户界面(GUI)设计和数组的使用,以实现拼图游戏功能。

3. 学生能够运用算法思维,实现拼图游戏的逻辑和图像的随机打乱、移动和复原。

技能目标:4. 学生能够运用Eclipse或其它IDE创建Java项目,编写、调试和运行拼图游戏的代码。

5. 学生通过实践,提高问题解决能力,能够独立完成类似规模的小型程序开发。

6. 学生能够进行基本的代码重构,提升代码的可读性和可维护性。

情感态度价值观目标:7. 学生通过团队合作开发拼图游戏,培养团队协作能力和沟通技巧。

8. 学生在游戏编程中体会编程的乐趣,增强对计算机编程和信息技术学科的兴趣和热情。

9. 学生通过编程实践,培养创新意识和动手能力,增强自信心和成就感。

本课程针对高中年级学生设计,他们已经具备了一定的编程基础和逻辑思维能力。

课程性质为实践性较强的信息技术课程,旨在通过拼图游戏的开发,使学生将理论知识与实践操作相结合,提升实际编程能力。

教学要求注重培养学生的自主学习和问题解决能力,鼓励学生在实践中创新,形成积极的情感态度和价值观。

通过具体学习成果的分解,后续教学设计和评估将更有针对性和有效性。

二、教学内容1. 面向对象基础:- 类的定义与使用- 对象的创建与操作- 继承与多态的概念及应用- 封装原则及实现方法2. Java图形用户界面(GUI)设计:- Swing库的简介与使用- JFrame、JPanel等容器组件的应用- 常用组件如按钮、标签、文本框等的添加与布局3. 事件处理机制:- 事件监听器与适配器的使用- 鼠标事件、键盘事件的处理- 事件响应与拼图游戏逻辑的结合4. 数组与算法:- 数组的声明、创建与操作- 图像数组的使用与拼图布局- 算法思维训练,实现拼图打乱、移动与复原5. 编程实践:- 使用Eclipse或其它IDE创建Java项目- 分步骤编写拼图游戏代码,实现游戏功能- 代码调试与优化,提高程序性能与可读性6. 团队合作与沟通:- 分组进行项目开发,明确分工与协作- 交流编程思路与问题解决方案- 提交项目报告,分享开发经验教学内容依据课程目标,结合课本知识体系进行组织,确保科学性和系统性。

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

软件设计报告-拼图游戏

软件设计报告-拼图游戏

软件设计报告-拼图游戏软件设计报告题目:拼图游戏专业数字媒体技术学生姓名班级学号日期2013年5月目录一、序言 (1)二、项目开发计划书 (1)2.1技术可行性 (1)2.2人员可能性 (1)2.3代码工作量 (1)2.4开发环境 (1)三、项目分析 (1)3.1设计目标 (1)3.2程序功能需求概述 (1)四、软件测试报告 (6)五、不足分析 (9)六、小结 (9)附1:代码 (10)附2:附录 (9)一、序言鉴于拼图游戏是一款较为经典的游戏,我们组选取了拼图游戏,借助Java - Eclipse这样一个开发环境完成此次软件工程实验项目。

二、项目开发计划书2.1技术可行性我们组成员系统的学习了软件工程和Java 的相关知识,具备一定的系统分析与设计能力,熟悉Java的设计与操纵;早期的大部分工作已经完成,所以后面的工作相对轻松:指导老师林巧民老师多年从事软件工程和程序设计的教学与研究工作,因而该系统的实现在技术上是可行的。

2.2人员可能性程序的设计、编写与调试由杜宗泽、沙杰。

文档的编写与整理,后期测试由陈凯负责。

2.3代码工作量预计需一个星期左右。

2.4开发环境开发环境:Java - Eclipse三、项目分析3.1设计目标按照软件工程的规范,以Java - Eclipse为前端开发工具,设计并实现一个拼图游戏。

3.2程序功能需求概述(1)实现载入3幅图片;(2)设置字体;(3)初始化界面;(4)添加鼠标监听事件;(5)面板初始化;(6)单击鼠标时产生的事件;(7)鼠标进入某个区域时产生的事件;(8)鼠标突出某个区域时产生的事件;(9)移动鼠标时产生的事件;(10)拖动鼠标时产生的事件;(11)按下鼠标时产生的事件;(12)放开鼠标时产生的事件;(13)转换坐标;(14)图片初始化;(15)判断程序是否结束;(16)游戏初始化。

四、软件测试报告在Java - Eclipse环境中调试、运行程序点击运行后出现如下画面:单击选取美女头像,初始状态如下图:此时可根据需要单击左上角“小程序”菜单进行功能选择,如下图:五、不足分析(1)4x4拼图难度较大;(2)右下角会有一块空缺,鉴于能力有限,未能完善。

拼图java课程设计

拼图java课程设计

拼图java课程设计一、课程目标知识目标:1. 掌握Java基本语法和编程结构,如变量、数据类型、运算符、控制语句等。

2. 学会使用Java中的面向对象编程思想,包括类、对象、继承、封装、多态等概念。

3. 理解Java异常处理机制,能够编写具有良好错误处理能力的程序。

4. 掌握Java图形用户界面编程,能够设计和实现简单的拼图游戏界面。

技能目标:1. 培养学生运用Java编程解决问题的能力,能够独立完成拼图游戏的代码编写和调试。

2. 提高学生的逻辑思维能力,通过设计拼图游戏的算法,锻炼学生的算法设计和实现技巧。

3. 培养学生团队合作能力,分组完成拼图游戏项目,学会与他人协作、沟通和解决问题。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生学习Java及相关计算机技术的积极性。

2. 培养学生面对困难时的坚持和毅力,鼓励学生在编程过程中不断尝试、克服困难。

3. 培养学生的创新意识,鼓励学生在拼图游戏中发挥创意,设计出独特的游戏玩法和界面。

课程性质:本课程为实践性较强的Java编程课程,以项目为导向,注重培养学生的编程能力和团队合作精神。

学生特点:学生具备一定的计算机基础和编程能力,对Java编程有一定了解,具有较强的学习兴趣和动手能力。

教学要求:教师应注重理论与实践相结合,引导学生通过实际操作掌握Java编程知识,关注学生个体差异,提供有针对性的指导。

同时,鼓励学生积极参与团队协作,提高沟通与表达能力。

通过本课程的学习,使学生能够独立完成拼图游戏项目,达到预期学习成果。

二、教学内容1. Java基本语法和数据类型- 变量和常量的定义与使用- 基本数据类型及类型转换- 运算符与表达式- 控制语句(条件语句、循环语句)2. 面向对象编程基础- 类与对象的概念- 构造方法与成员方法- 封装、继承和多态- 抽象类与接口3. 异常处理- 异常的概念与分类- try-catch语句- 异常的抛出与自定义异常4. Java图形用户界面编程- Swing组件及布局管理器- 事件处理机制- 图形绘制与图像处理5. 拼图游戏设计与实现- 游戏规则与界面设计- 游戏逻辑实现(数据存储、移动判断、胜利条件等)- 图像切割与重组- 游戏测试与优化教学内容安排和进度:1. Java基本语法和数据类型(2课时)2. 面向对象编程基础(4课时)3. 异常处理(2课时)4. Java图形用户界面编程(4课时)5. 拼图游戏设计与实现(6课时)教材章节关联:1. Java基本语法和数据类型(教材第1、2章)2. 面向对象编程基础(教材第3、4章)3. 异常处理(教材第5章)4. Java图形用户界面编程(教材第6章)5. 拼图游戏设计与实现(教材第7章)三、教学方法1. 讲授法:- 对于Java基本语法、数据类型、面向对象编程基础等理论知识,采用讲授法进行教学,结合教材内容,系统讲解相关概念、原理和编程技巧。

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的拼图游戏设计毕业设计

Java课程设计——拼图游戏基于Java的拼图游戏设计游戏实现功能解析及界面游戏规则介绍1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其他格子内随机放置由要拿来拼图的图片切割成的若干个小图片,图片的切割按照一定的公式计算,因为,该通过单击任意一个与空格子相邻的方块可以把该方游戏中设有拼图游戏的等级,根据不同的等级,按照公式会切割成不同的小图片块数。

2)在开始游戏之前,可以选择游戏等级后再点击“开始”菜单里的“新游戏”,进行拼图游戏,通过将空格旁边的小图片移入空格子内(不断的移动方块),来实现拼图,直到方块一行一行的按图片的原始样子拼好即可完成该游戏。

3)游戏拼完后,会弹出一个“信息”框,显示你玩游戏所用的步数与时间,点击“确定”后,会弹出一个“输入”框,可以在里面输入游戏者的姓名,单击“确定”后会弹出游戏的记录框。

4)游戏的简单规则在游戏界面的“关于”菜单内的“帮助”信息框内已经简单介绍了。

游戏前可以先预览看看。

游戏实现功能主窗口界面1)游戏初始状态当游戏刚运行时,会出现如下界面,本游戏中已经存在了三张图片,如过游戏者想拼自己感兴趣的图片的话,可以将自己的图片放入到“background”(背景图片)文件夹中,再进行“选择”->“背景图片”中选择你自己的图片,然后选择“等级”->“困难”或“普通”或“简单”,进行等级选择,最后选择“开始”->“新游戏”就可以拼自己想拼的图了。

初始窗口如图1所示:图1 游戏初始窗口2)游戏进行状态当游戏者选择好图片与等级后,就可以进行拼图游戏了及进入游戏的进行状态。

3)游戏暂停状态当游戏者,在游戏过程中半途暂停游戏的话,将出现如图3所示的游戏暂停状态的界面。

当游戏者又想继续游戏时,直接单击界面上的“继续”字样,就可以继续游戏了。

图2 游戏暂停状态主窗口菜单在游戏的主窗口菜单中包括如下几个菜单:(1)“开始”菜单。

包括了,“新游戏”、“成绩记录”、“图片预览”、“退出游戏”。

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拼图课程设计

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拼图课程设计一、课程目标知识目标:1. 学生能理解Java语言中面向对象编程的基本概念,掌握类与对象的关系及其应用。

2. 学生能运用Java编程实现拼图游戏的基本逻辑,理解二维数组的使用。

3. 学生能够掌握Java中事件处理机制,实现对用户操作的响应。

技能目标:1. 学生通过编写拼图游戏代码,提高问题分析能力和编程实践技能。

2. 学生能够运用所学知识解决实际问题,培养创新意识和逻辑思维能力。

3. 学生通过小组合作完成项目,提升团队协作和沟通能力。

情感态度价值观目标:1. 学生在探索拼图游戏的编程过程中,培养对计算机编程的兴趣和热情。

2. 学生在项目实施中,学会面对挑战,培养坚持不懈、勇于尝试的精神。

3. 学生通过课程学习,认识到编程在生活中的应用,提升信息素养和社会责任感。

二、教学内容本课程以《Java编程思想》教材中面向对象编程为基础,结合拼图游戏的实际案例,组织以下教学内容:1. 面向对象编程基础:复习类与对象的概念,重点讲解封装、继承和多态性。

- 教材章节:第3章《面向对象的基本概念》,第4章《类与对象》。

2. 二维数组的使用:介绍二维数组的定义、初始化和使用,通过案例展示二维数组在拼图游戏中的应用。

- 教材章节:第6章《数组与字符串》,重点讲解二维数组部分。

3. 事件处理机制:讲解Java中事件处理的基本原理,以及如何在拼图游戏中实现鼠标和键盘事件处理。

- 教材章节:第11章《事件处理》。

4. 图形用户界面(GUI)设计:介绍Swing库中常用组件的使用,设计拼图游戏的界面。

- 教材章节:第10章《图形用户界面》。

5. 拼图游戏编程实践:将所学知识应用于实际项目中,分组完成拼图游戏的编程与实现。

- 教材章节:综合应用前面所学内容。

教学内容按照以上安排,逐步引导学生从理论到实践,掌握Java编程的基本技能,并在项目实践中培养解决问题的能力。

三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高教学效果:1. 讲授法:教师通过PPT和板书,系统地讲解面向对象编程的基本概念、二维数组的使用和事件处理机制等理论知识。

java课程设计-拼图游戏代码

java课程设计-拼图游戏代码

package love;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Random;import javax.swing.*;public class Games extends JFrame implements ActionListener {private JButton buttons[][];//存储按键的数组private Container container;//一个容器private GridLayout layout;//布局方式为GridLayoutprivate int count =0,is[]=new int[8];//count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组public Games() {super("拼图游戏");//设置标题layout = new GridLayout(3, 3);// 3行3列container = getContentPane();//该容器的布局方式,及其重要,否则产生空引用异常container.setLayout(layout);//将该布局方式作用于容器buttons = new JButton[3][3];//给按键数组分配储存空间int locate1,locate2;//locate1用来指示当前产生的元素locate2用来指示locate1之前的元素for (locate1 = 0; locate1 < 8; locate1++) {//该方法作用是产生1到8这8个数,随机分配给数组,即无序排列int g = new Random().nextInt(8) + 1;//随机产生一个空白按键,即不显示的那个is[locate1] = g;for (locate2 = locate1 - 1; 0 <= locate2; locate2--) {if (is[locate1] == is[locate2])break;}if (locate2 != -1)locate1--;}int temp = 0;int r = new Random().nextInt(3);//随机产生一个0到3的数,代表空白按键的行int l = newRandom().nextInt(3);//随机产生一个0到3的数,代表空白按键的列for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (r == i && l == j) {//空白按键设置为9,不显示buttons[i][j] = new JButton("9");container.add(buttons[i][j]);buttons[i][j].setVisible(false);} else {buttons[i][j] = new JButton("" + is[temp++]);//将数组的值作为显示的8个按键的名字container.add(buttons[i][j]);}buttons[i][j].addActionListener(this);//注册监听事件}}setSize(300, 300);//设置显示容器区域大小setVisible(true);}public void actionPerformed(ActionEvent event) {//事件处理,由于计算量小该处将所有按键单独分析JButton b = (JButton) event.getSource();if (b == buttons[0][0]) {if (buttons[0][1].getText().equals("9")) {buttons[0][1].setText("" + buttons[0][0].getText());buttons[0][1].setVisible(true);buttons[0][0].setText("9");buttons[0][0].setVisible(false);count++;} else if (buttons[1][0].getText().equals("9")) {buttons[1][0].setText("" + buttons[0][0].getText());buttons[1][0].setVisible(true);buttons[0][0].setText("9");buttons[0][0].setVisible(false);count++;}}else if (b == buttons[0][1]) {if (buttons[0][0].getText().equals("9")) {buttons[0][0].setText("" + buttons[0][1].getText());buttons[0][0].setVisible(true);buttons[0][1].setText("9");buttons[0][1].setVisible(false);count++;} else if (buttons[0][2].getText().equals("9")) { buttons[0][2].setText("" + buttons[0][1].getText()); buttons[0][2].setVisible(true);buttons[0][1].setText("9");buttons[0][1].setVisible(false);count++;} else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[0][1].getText()); buttons[1][1].setVisible(true);buttons[0][1].setText("9");buttons[0][1].setVisible(false);count++;}} else if (b == buttons[0][2]) {if (buttons[0][1].getText().equals("9")) {buttons[0][1].setText("" + buttons[0][2].getText()); buttons[0][1].setVisible(true);buttons[0][2].setText("9");buttons[0][2].setVisible(false);count++;} else if (buttons[1][2].getText().equals("9")) {buttons[1][2].setText("" + buttons[0][2].getText()); buttons[1][2].setVisible(true);buttons[0][2].setText("9");buttons[0][2].setVisible(false);count++;}} else if (b == buttons[1][0]) {if (buttons[0][0].getText().equals("9")) {buttons[0][0].setText("" + buttons[1][0].getText()); buttons[0][0].setVisible(true);buttons[1][0].setText("9");buttons[1][0].setVisible(false);count++;} else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[1][0].getText()); buttons[1][1].setVisible(true);buttons[1][0].setText("9");buttons[1][0].setVisible(false);count++;} else if (buttons[2][0].getText().equals("9")) { buttons[2][0].setText("" + buttons[1][0].getText()); buttons[2][0].setVisible(true);buttons[1][0].setText("9");buttons[1][0].setVisible(false);count++;}} else if (b == buttons[1][1]) {if (buttons[0][1].getText().equals("9")) {buttons[0][1].setText("" + buttons[1][1].getText()); buttons[0][1].setVisible(true);buttons[1][1].setText("9");buttons[1][1].setVisible(false);count++;} else if (buttons[1][0].getText().equals("9")) { buttons[1][0].setText("" + buttons[1][1].getText()); buttons[1][0].setVisible(true);buttons[1][1].setText("9");buttons[1][1].setVisible(false);count++;} else if (buttons[1][2].getText().equals("9")) { buttons[1][2].setText("" + buttons[1][1].getText()); buttons[1][2].setVisible(true);buttons[1][1].setText("9");buttons[1][1].setVisible(false);count++;} else if (buttons[2][1].getText().equals("9")) {buttons[2][1].setText("" + buttons[1][1].getText()); buttons[2][1].setVisible(true);buttons[1][1].setText("9");buttons[1][1].setVisible(false);count++;}} else if (b == buttons[1][2]) {if (buttons[0][2].getText().equals("9")) {buttons[0][2].setText("" + buttons[1][2].getText()); buttons[0][2].setVisible(true);buttons[1][2].setText("9");buttons[1][2].setVisible(false);count++;} else if (buttons[2][2].getText().equals("9")) { buttons[2][2].setText("" + buttons[1][2].getText()); buttons[2][2].setVisible(true);buttons[1][2].setText("9");buttons[1][2].setVisible(false);count++;} else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[1][2].getText()); buttons[1][1].setVisible(true);buttons[1][2].setText("9");buttons[1][2].setVisible(false);count++;}} else if (b == buttons[2][0]) {if (buttons[1][0].getText().equals("9")) {buttons[1][0].setText("" + buttons[2][0].getText()); buttons[1][0].setVisible(true);buttons[2][0].setText("9");buttons[2][0].setVisible(false);count++;} else if (buttons[2][1].getText().equals("9")) { buttons[2][1].setText("" + buttons[2][0].getText()); buttons[2][1].setVisible(true);buttons[2][0].setText("9");buttons[2][0].setVisible(false);count++;}}else if (b == buttons[2][1]) {if (buttons[2][0].getText().equals("9")) {buttons[2][0].setText("" + buttons[2][1].getText()); buttons[2][0].setVisible(true);buttons[2][1].setText("9");buttons[2][1].setVisible(false);count++;} else if (buttons[2][2].getText().equals("9")) { buttons[2][2].setText("" + buttons[2][1].getText()); buttons[2][2].setVisible(true);buttons[2][1].setText("9");buttons[2][1].setVisible(false);count++;} else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[2][1].getText()); buttons[1][1].setVisible(true);buttons[2][1].setText("9");buttons[2][1].setVisible(false);count++;}} else if (b == buttons[2][2]) {if (buttons[2][1].getText().equals("9")) {buttons[2][1].setText("" + buttons[2][2].getText()); buttons[2][1].setVisible(true);buttons[2][2].setText("9");buttons[2][2].setVisible(false);count++;} else if (buttons[1][2].getText().equals("9")) { buttons[1][2].setText("" + buttons[2][2].getText()); buttons[1][2].setVisible(true);buttons[2][2].setText("9");buttons[2][2].setVisible(false);count++;}}if (buttons[0][0].getText().equals("1")//假如1到8已经排列完成,则执行该语句&& buttons[0][1].getText().equals("2")&& buttons[0][2].getText().equals("3")&& buttons[1][0].getText().equals("4")&& buttons[1][1].getText().equals("5")&& buttons[1][2].getText().equals("6")&& buttons[2][0].getText().equals("7")&& buttons[2][1].getText().equals("8")) {JOptionPane.showMessageDialog(null, "您一共花费了" + count + "步完成了游戏!");//弹出对话框,显示共移动步数System.exit(0);//退出程序}}public static void main(String[] args) {Games game = new Games();game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}。

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

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

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

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

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

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

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

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.实验法:让学生动手编写拼图游戏程序,巩固所学知识。

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

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

目录一、题目介绍、、、、 (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)按完成得时间计算成绩。

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

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

在游戏结束之后,算出玩家得得分.三、概要设计1、功能分析由于要计算游戏得时间,需要引入线程,通过实现Runnable 接口与创建Thread类来实现线程得功能。

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

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

引入事件处理机制,要求对鼠标事件,键盘事件进行相应,实现移动图片,预览全图等功能.按键“Y”实现临时得原图整体预览。

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

调用Public int directionCanMove(int nCol,int nRow)方法检测那个方向没有拼图而可以向之移动。

ﻩ调用publicvoid move(intnCol,intnRow,intnDirection)方法实现鼠标激活拼图移动。

(2)键盘事件调用public void keyPressed(KeyEvente)方法实现键盘事件处理。

ﻩ调用public void initImageAgain(intnImgNo)方法实现重新加载另一张大图.调用public booleanmove(int nDirection)方法实现判断指定拼图就是否可以往方向nDirection移动。

4、状态判断动过调用public void checkStatus()方法来检测拼图状态,判断就是否拼图成功,确定游戏就是否结束。

5、附加功能调用public voidrun()方法,给游戏过程添加计时进程。

6、程序流程图四、详细设计1、编写、html代码〈html><head〉〈meta —equiv=”Content-Type" content=”text/html;charset=gb 2312">〈title>拼图游戏</title></HEAD>〈body〉拼图游戏<hr>这就是一个拼图游戏。

玩家应该将打散得小图拼成一张大图。

<br〉玩家可以通过鼠标与键盘来移动小图,移动得次数与拼成〈br>一张大图所化费得时间作为游戏得分得依据。

<br>成绩=1000-时间(秒)-移动步数*10<br〉按F1键重新开始该游戏,按Y健可以预览整个得图片<hr〉〈appletcode="pintu、class"width=”480"height=”360”〉<!——param标签NumOfImgparam得标签表示有多少张图片ﻩ剩下得param标签为每张图得名字--><param name=NumOfImg value=”3"><paramname=Image1 value="pintu"〉<param name=Image2 value="pintu2"〉〈param name=Image3value=”pintu3”〉〈/applet〉</body〉</html>2、编写、java代码1、界面设计与附加功能import java、applet、*;importjava、awt、*;importjava、awt、event、*;import java、net、*;//Download bypublicclass pintu extends Applet implementsMouseListener,K eyListener,Runnable{Image[]m_Image=newImage[9];//9个用来装入每个拼图得图片对象Image m_ImgAll;//总得大图片intm_nImageNo[][]=new int[3][3];////标志现在各个拼图得排列情况ﻩfinal intNO_IMAGE=—1;//此位置没有拼图,表示空白拼图final int IMAGE_WIDTH=120;//每张拼图得宽final intIMAGE_HEIGHT=120;////每张拼图得高ﻩfinal intDIRECTION_UP=1;ﻩfinal int DIRECTION_DOWN=2;final int DIRECTION_LEFT=3;ﻩfinal int DIRECTION_RIGHT=4;finalint DIRECTION_NONE=—1;final int DELTAX=120;//标志提示信息区得宽度boolean bWantStartNewGame=false;//游戏就是否结束,就是否需要开始新游戏int nStep=0;//已经走得步数int nTime=0;//已经玩过得时间,以秒为单位Thread thTimer;//计时器线程int nScore=0;//玩家所得得分数intm_nNumOfImg=0;//拼图底图所使用得图片得个数String m_sImgName[]=new String[9];//记录拼图底图得名字boolean bOnShowAll=false;//预览得开关AudioClip m_audioClip1,m_audioClip2;//装载要播放得声音对象public void init()/{ﻩString param=getParameter("NumOfImg”);try{m_nNumOfImg=Integer、parseInt(param);}catch(Exception e){m_nNumOfImg=1;System、out、println("Can’t convert the par am’s nameto int、");}for(inti=0;i<m_nNumOfImg;i++){m_sImgName[i]=getParameter(”Image"+(i+1))+"、jpg";//用字符串数组m_sImgName分别保存三个大图及其规范命名:p//pintu、jpg pintu1、jpg pintu2、jpgSystem、out、println(m_sImgName[i]);}System、out、println(param);MediaTrackermediaTracker=new MediaTracker(this);//为这个拼图界面设置一个监视器ﻩﻩﻩﻩm_ImgAll=getImage(getDocumentBase(),"img/”+m_sImgName [0]);//从装载总得大图片ﻩmediaTracker、addImage(m_ImgAll,1);//为向此媒体跟踪器正在跟踪得图像列表中添加一个图像,//并分配一个表示号1 给这个图像ﻩtryﻩ{ﻩﻩmediaTracker、waitForID(1);//加载所跟踪得图像列表中得某一个标识号所对应得得一个图像ﻩﻩ}ﻩﻩcatch(Exceptione)ﻩ{ﻩﻩﻩSystem、out、println("图片装载出错");ﻩ}if(mediaTracker、isErrorAny())System、out、println("图片装载出错");for(int i=0;i〈9;i++){m_Image[i]=createImage(IMAGE_WIDTH,IMAGE_HEIGHT);Graphicsg=m_Image[i]、getGraphics();int nRow=i%3;int nCol=i/3;g、drawImage(m_ImgAll,0,0,IMAGE_WIDTH,IMAGE_HEIGHT,nRow*IMAGE_WIDTH,nCol*IMAGE_HEIGHT,(nRow+1)*IMAGE_WIDTH,(nCol+1)*IMAGE_HEIGHT,this);System、out、println("init”+i);}//将一个大图切割成九个小图System、out、println(”init over”);ﻩﻩthTimer=new Thread(this);//为线程分配内存空间thTimer、start();//开始线程initData();m_audioClip1=getAudioClip(getCodeBase(),”au/move、au”);m_audioClip2=getAudioClip(getCodeBase(),”au/notm ove、au”);addMouseListener(this);ﻩﻩaddKeyListener(this);publicvoidinitData(){System、out、println("run initData");int[]nHasDistrib=newint[9];//为每个小图分配一个数字标识,用来判定该小图就是否被随机编一个二维数组号for(inti=0;i<9;i++)nHasDistrib[i]=0;ﻩfor(int j=0;j〈3;j++)ﻩ{ﻩﻩfor(inti=0;i〈3;i++)ﻩﻩ{int nCount=j*3+i;int nImgNo=—1;do{nImgNo=(int)(Math、random()*9);}while(nHasDistrib[nImgNo]==1);//1代表已经分配了这张图片到二维数组中得随机位置m_nImageNo[i][j]=nImgNo;nHasDistrib[nImgNo]=1;System、out、println("test、、”);}}m_nImageNo[(int)(Math、random()*3)][(int)(Math、random()*3)]=NO_IMAGE;nStep=0;nTime=0;//清空计时器ﻩ}public void run(){while(Thread、currentThread()==thTimer){try{thTimer、sleep(990);String sTemp="您玩了”+nTime+"秒得时间,”;if(nTime>200)sTemp=sTemp+”时间用得很长了,您可要加油啦!”;else sTemp=sTemp+”别紧张,慢慢来。

相关文档
最新文档