基于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课程设计

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

基于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课程设计拼图游戏

• 状态判断
通过调用public void checkStatus()方法来 检测拼图状态,判断是否拼图成功,确定游戏是否结 束。
• 附加功能
调用public void run()方法,给游戏过程添加计时进程。 建立线程,对游戏进行计时,并定义一个方法来对玩家 算分
• 程序界面
• 本游戏在Pintu类中创建应用程序窗体,实 例化绘图容器对象PicPanel和状态栏标签对 象,并引入时间处理机制对键盘事件进行 响应 • 在类PicPanel中实现图片的绘制,使用多线 程机制来计算时间的流逝,并响应鼠标事 件来实现图片的移动。
主程序实现过程
• • • • • • • • 1、定义程序实现所需的绘图容器类面板; 2、定义键盘触发事件,并设置监听器; 3、定义鼠标触发事件,并设置监听器; 4、装载主程序所需图片; 5、编写程序对装载图片进行分割初始化; 6、定义图片分割之后各小图片移动方向及实现方法; 7、对空白区域小图片进行设置; 8、建立线程,对游戏进行计时,并定义一个方法来对玩家算分
• 功能分析
1、由于要计算游戏的时间,需要引入线程,通
过实现Runnable接口和创建Thread类来实现线程 的功能。使用多线程机制来计算时间的流逝。引 入AWT绘图包,实现图片的绘制。 引入事件处理 机制,要求对鼠标事件,键盘事件进行相应,实 现移动图片,预览全图等功能。 2、 按键“Y”实现临时的原图整体预览。 按键 “1或者2或者3”实现大图选择。
Java课程设计
概要设计
• • • • • • • • •
选游功 题戏能 规分 则析
界 面 初 始 化
事 件 处 理
状 态 判 断
附 加 功 能
程 序 源 代 码

java课程设计拼图游戏

java课程设计拼图游戏

import java.awt.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import javax.swing.*;public class Pintu extends JFrame implements KeyListener{PicPanel picPanel;JLabel statusText = new JLabel("");JLabel statusimg = new JLabel("yuantu");public static void main(String[] args){Image img = Toolkit.getDefaultToolkit().getImage("D:/tierui/jsp/Pintu/src/img/pintu.jpg");Pintu pintu1 = new Pintu(img);pintu1.setVisible(true);}public Pintu(Image img) throws HeadlessException{picPanel = new PicPanel(img, statusText,statusimg);this.setLayout(new BorderLayout());add(picPanel, BorderLayout.CENTER);add(statusText, BorderLayout.SOUTH);setTitle("拼图游戏");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(600, 400);Dimension size = Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的标尺int screenWidth = size.width;int screenHeight = size.height;int x = (screenWidth - this.getWidth())/2;int y = (screenHeight - this.getHeight())/2;this.setLocation(x, y);addKeyListener(this);}public void keyPressed(KeyEvent e){int nDirection = picPanel.DIRECTION_NONE;switch (e.getKeyCode()){case KeyEvent.VK_DOWN:nDirection = picPanel.DIRECTION_DOWN;break;case KeyEvent.VK_UP:nDirection = picPanel.DIRECTION_UP;break;case KeyEvent.VK_LEFT:nDirection = picPanel.DIRECTION_LEFT;break;case KeyEvent.VK_RIGHT:nDirection = picPanel.DIRECTION_RIGHT;break;case KeyEvent.VK_F1: // F1键按下,重新开始游戏picPanel.initData();repaint();return;case KeyEvent.VK_Y: // 显示原图if (picPanel.bOnShowAll)picPanel.bOnShowAll = false;elsepicPanel.bOnShowAll = true;repaint();return;default:return;}boolean bCanMove = picPanel.move(nDirection);if (bCanMove){picPanel.nStep++;repaint();}}public void keyReleased(KeyEvent e){}public void keyTyped(KeyEvent e){}}class PicPanel extends JPanel implements MouseListener, Runnable{ BufferedImage[] m_Image = new BufferedImage[9]; // 9个用来装入拼图的图片对象Image m_ImgAll; // 总的大图片int m_nImageNo[][] = new int[3][3]; // 标志现在各个拼图的排列情况final int NO_IMAGE = -1; // 此位置没有拼图final int IMAGE_WIDTH = 120; // 每张拼图的宽final int IMAGE_HEIGHT = 120; // 每张拼图的高final int DIRECTION_UP = 1;final int DIRECTION_DOWN = 2;final int DIRECTION_LEFT = 3;final int DIRECTION_RIGHT = 4;final int DIRECTION_NONE = -1;final int DELTAX = 120; // 标志提示信息区的宽度Thread thTimer; // 计时器线程int nTime = 0; // 已经玩过的时间,以秒为单位boolean bWantStartNewGame = false; // 游戏是否结束,是否需要开始新游戏int nStep = 0; // 已经走的步数int nScore = 0; // 玩家所得的分数int m_nNumOfImg = 0; // 拼图底图所使用的图片的个数String m_sImgName = null; // 记录拼图底图的名字boolean bOnShowAll = false; // 预览的开关JLabel statusText;JPanel panel=new JPanel();public PicPanel(Image img, JLabel statusText,JLabel statusimg){this.statusText = statusText;setBackground(Color.white);m_sImgName = "pintu.jpg";MediaTracker mediaTracker = new MediaTracker(this); // 建立一个监视器.MediaTracker 类是一个跟踪多种媒体对象状态的实用工具类try{// 装载总的大图片m_ImgAll = Toolkit.getDefaultToolkit().getImage("D:/tierui/jsp/Pintu/src/img/" + m_sImgName);mediaTracker.addImage(m_ImgAll, 1);//addImage方法-向此媒体跟踪器正在跟踪的图像列表添加一个图像。

2020年基于JAVA的拼图游戏的毕业设计开题报告

2020年基于JAVA的拼图游戏的毕业设计开题报告

基于Java的拼图游戏的毕业设计开题报告怎么样写基于Java的拼图游戏的开题报告?下文是精心准备的毕业设计开题报告相关资料,希望大家阅读!1.任务:使用JavaSwing组件开发一个拼图游戏图形界面应用软件,要求具有区分难度,统计积分,背景音乐等功能。

要求:(1)明确需求,学习使用OOA方法对项目需求进行分析。

使用OOD方法对项目进行设计。

使用OOP方法对项目进行编码实现。

(2)必须具备背景音乐、难度划分、统计积分等功能(3)玩家操作界面要简洁,游戏界面要美观。

(4)可增添更多的游戏附加功能。

2.毕业设计的具体工作内容:技术要求:在本设计中,对于图片的分割、拼凑、判断图片是否可以移动等都是设计的关键。

对于分割图片是用像素点来实现的,同时对图片进行了自动缩放,这样一来就可以使得图片分割后看起来更连贯。

拆分图片后,把分好的图片存储到一个image数组中,对于可移动的块其实是按钮,每个按钮上都有一个icon,通过随机把image数组中的图片通过imageIcon的转化后附给一个按钮,并将按钮数组首先附给一个向量,然后用随机数来确定对应向量的值,然后再附给对应数组按钮,同时去除该值。

也就是说在附值的时候图片顺序不变,变的而是数组按钮的顺序。

对于图片的是否拼图成功的提示,主要是在每个按钮中加个String的属性值,而且对于正确的排序的值与正在排的各个值比较,一旦所有的按钮对应的值与正确的排序一致,则为成功。

八数码问题是该游戏软件的设计重点,八数码问题用于拼图游戏中图片的拆分方法。

也就是说,当运用到八数码问题后,按照八数码函数进行运算,才能保证图片拆分后,经过用户的拼凑,最终可以完成整个拼图游戏,而不会无解。

工作要求:(1)学习或复习面向对象基本知识和Java相关知识。

(2)认真阅读项目需求及设计需求,做好需求分析和软件设计工作。

(3)编写软件测试用例,在编码过程中进行测试工作。

(4)设计游戏界面,并编写相应代码。

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的拼图游戏实现

Electronic Technology & Software Engineering 电子技术与软件工程• 237Program Design •程序设计【关键词】拼图游戏 Java 程序 Java 开发1 引言目前,影响学生注意力的各种外界因素很多,采用传统的单纯讲授知识点的授课模式进行教学,这一方式已无法满足当下课堂需求,这种方式下知识点的讲解以及授课采用的案例之间相互孤立,无联系,致使学生在学习时感觉知识点零碎、杂乱,从而无法吸引学生的兴趣,同时现实中的工作流程通常都是相互联系的,项目开发同样也相互联系,采用零碎,孤立的方式既无法吸引学生,也不符合现实中的工作流程。

为了能够提升学生兴趣,对接现实工作过程,在实施Java 课程授课时,采用项目化教学,以一个或几个项目为依据,通过讲解引导学生独立完成具体项目,这样课堂之间相互联系,同时以项目为中心讲解知识点,可以使学生感受到学有所用,使学生在实践过程中提升理论知识水平,还能够更好的培养学生运用知识解决问题的能力。

拼图游戏是一款简单有趣的小游戏,课堂上学习Java 语言时选择拼图游戏为导入,既能够吸引学生,提升学生兴趣,又能够充分将Java 知识点融合与游戏,在进行Java 课堂教学时需要通过以简单有趣的游戏项目贯穿课堂,教师讲解引导,学生作为主体完善提升,教师在教学实施时将游戏项目分解,学生在完成项目模块的同时掌握Java 知识点,通过按照任务要求,分步骤分模块实施,使学生可以在参与项目实施的过程,感受近于真实的开发环境,以此来激发学生的学习兴趣,最终实现学生分析问题、解决问题的能力的提升。

本文主要介绍课堂实施之简单拼图游戏的项目实现,以简单项目为媒介,在教学过程基于Java 的拼图游戏实现文/秦鹏珍中逐步带领学生掌握Java 编程基础语法知识,使学生建立Java 编程思想,在关注学生知识增长的同时,也关注学生相关能力目标的达成。

2 游戏设计要实现简单拼图游戏主要要完成以下三部分设计,包括游戏界面设计,游戏规则设计,游戏按钮功能实现设计,因此课堂实施时也主要按照三大模块实施,通过游戏界面的设计与完成要使学生掌握Java 中类的定义,树立面向对象思想,通过游戏规则设计,游戏按钮功能实现设计可以使学生掌握Java 基础语法知识,包括变量命名规则,数据类型,流程控制语句等,同时要掌握接口的定义、继承和实现,事件的处理机制。

Java小项目之拼图游戏

Java小项目之拼图游戏

Java⼩项⽬之拼图游戏⾸先声明,代码是⾃创的,如有雷同,不胜荣幸!先谈谈思路: 1.设计界⾯。

2.素材的处理。

3.设计图⽚加载区域的图⽚加载处理类。

4.设计按钮组中的按钮初始化⽅法。

5.设计按钮组中的随机图⽚加载⽅法。

6.设计重置按钮⽅法。

7.设计按钮监听器。

8.设计判定胜利的条件的⽅法。

1.界⾯的设计: a.使⽤了Windows Builder插件,安装⽹页:WindoswBuilder - /windowbuilder/WB/integration/4.6/ b.页⾯的整体整体样式: ⼀个JFram中添加三个带标题的JPanel,将整个分割为游戏选项区域,图⽚展⽰区域和游戏区域。

每个区域都有各⾃的控件,其中需要注意的是图⽚展⽰区域放置了⼀个JLable来加载展⽰图⽚。

c.代码:我将源码放在了com.rookie.view包下,并且类名为GameView。

1package com.rookie.view;23import java.awt.EventQueue;45import javax.swing.JFrame;6import javax.swing.JPanel;7import javax.swing.border.EmptyBorder;8import javax.swing.JMenuBar;9import javax.swing.JMenu;10import javax.swing.JMenuItem;11import javax.swing.JOptionPane;121314import java.awt.event.ActionListener;15import java.util.Timer;16import java.util.TimerTask;17import java.awt.event.ActionEvent;18import javax.swing.GroupLayout;19import javax.swing.GroupLayout.Alignment;20import javax.swing.border.TitledBorder;2122import com.rookie.dao.PicloadDao;23import com.rookie.dao.GameDao;2425import javax.swing.UIManager;26import java.awt.Color;27import ponentPlacement;28import javax.swing.JLabel;29import javax.swing.JRadioButton;30import javax.swing.ButtonGroup;31import javax.swing.JComboBox;32import javax.swing.DefaultComboBoxModel;33import javax.swing.JTextField;34import javax.swing.JButton;35import javax.swing.SwingConstants;3637public class GamerView extends JFrame {3839/**40 *41*/42private static final long serialVersionUID = 1L;43private JPanel mainPanel;44private final ButtonGroup buttonGroup = new ButtonGroup();45private static JTextField textField_time;46private static JButton bt_GameBegin = null;47private static JLabel jl_loadImage = null;48private static JComboBox comboBox_SelectPic = null;49private static JRadioButton rb_simple = null;50private static JRadioButton rb_difficulty = null;51private static JPanel panel_beginGame = null;52private static GameDao gameChoseDao;53private static int time = 0;54private static Timer timer;55/**56 * Launch the application.57*/58public static void main(String[] args) {59 EventQueue.invokeLater(new Runnable() {60public void run() {61try {62 GamerView frame = new GamerView();63 frame.setVisible(true);64 } catch (Exception e) {65 e.printStackTrace();66 }67 }68 });69 }7071/**72 * Create the frame.73*/74public GamerView() {75 setResizable(false);76 setTitle("\u62FC\u56FE\u6E38\u620F(\u6D4B\u8BD5\u7248)");77 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);78 setBounds(100, 100, 710, 550);7980 JMenuBar menuBar = new JMenuBar();81 setJMenuBar(menuBar);8283 JMenu m_About = new JMenu("\u5173\u4E8E");84 menuBar.add(m_About);8586 JMenuItem mI_aboutMe = new JMenuItem("\u56E2\u961F\u4ECB\u7ECD");87 mI_aboutMe.addActionListener(new ActionListener() {88public void actionPerformed(ActionEvent e) {89 showAboutActionListener(e);90 }91 });92 m_About.add(mI_aboutMe);93 mainPanel = new JPanel();94 mainPanel.setBorder(new EmptyBorder(5, 5, 5, 5));95 setContentPane(mainPanel);9697 JPanel panel_checkGame = new JPanel();98 panel_checkGame.setBorder(new TitledBorder(null, "\u6E38\u620F\u9009\u9879\uFF1A", TitledBorder.CENTER, TitledBorder.TOP, null, Color.RED));99100 JPanel panel_loadPic = new JPanel();101 panel_loadPic.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u539F\u56FE\u52A0\u8F7D\uFF1A", TitledBorder.CENTER, TitledBorder.TOP, null, Color.RED)); 102 panel_loadPic.setToolTipText("");103104 panel_beginGame = new JPanel();105 panel_beginGame.setBorder(new TitledBorder(null, "\u6E38\u620F\u5F00\u59CB\uFF1A", TitledBorder.CENTER, TitledBorder.TOP, null, Color.RED));106 GroupLayout gl_mainPanel = new GroupLayout(mainPanel);107 gl_mainPanel.setHorizontalGroup(108 gl_mainPanel.createParallelGroup(Alignment.TRAILING)109 .addGroup(gl_mainPanel.createSequentialGroup()110 .addContainerGap()111 .addGroup(gl_mainPanel.createParallelGroup(Alignment.TRAILING)112 .addComponent(panel_checkGame, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 674, Short.MAX_VALUE)113 .addGroup(Alignment.LEADING, gl_mainPanel.createSequentialGroup()114 .addComponent(panel_loadPic, GroupLayout.PREFERRED_SIZE, 336, GroupLayout.PREFERRED_SIZE)115 .addPreferredGap(ComponentPlacement.UNRELATED)116 .addComponent(panel_beginGame, GroupLayout.PREFERRED_SIZE, 332, GroupLayout.PREFERRED_SIZE)))117 .addContainerGap())118 );119 gl_mainPanel.setVerticalGroup(120 gl_mainPanel.createParallelGroup(Alignment.LEADING)121 .addGroup(gl_mainPanel.createSequentialGroup()122 .addContainerGap()123 .addComponent(panel_checkGame, GroupLayout.PREFERRED_SIZE, 83, GroupLayout.PREFERRED_SIZE)124 .addPreferredGap(ComponentPlacement.UNRELATED)125 .addGroup(gl_mainPanel.createParallelGroup(Alignment.BASELINE)126 .addComponent(panel_loadPic, GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)127 .addComponent(panel_beginGame, GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE))128 .addContainerGap())129 );130131 jl_loadImage = new JLabel("");132 jl_loadImage.setIcon(null);133 panel_loadPic.add(jl_loadImage);134135136137 GroupLayout gl_panel_beginGame = new GroupLayout(panel_beginGame);138 gl_panel_beginGame.setHorizontalGroup(139 gl_panel_beginGame.createParallelGroup(Alignment.LEADING)140 .addGap(0, 320, Short.MAX_VALUE)141 );142 gl_panel_beginGame.setVerticalGroup(143 gl_panel_beginGame.createParallelGroup(Alignment.LEADING)144 .addGap(0, 322, Short.MAX_VALUE)145 );146 panel_beginGame.setLayout(gl_panel_beginGame);147148 JLabel label = new JLabel("\u6E38\u620F\u96BE\u5EA6\uFF1A");149 label.setForeground(Color.BLUE);150151 rb_simple = new JRadioButton("\u7B80\u5355");152 buttonGroup.add(rb_simple);153154 rb_difficulty = new JRadioButton("\u56F0\u96BE");155 buttonGroup.add(rb_difficulty);156157 rb_simple.setSelected(true);158159 JLabel label_1 = new JLabel("\u56FE\u7247\u9009\u62E9\uFF1A");160 label_1.setForeground(Color.BLUE);161162 comboBox_SelectPic = new JComboBox();163 comboBox_SelectPic.setModel(new DefaultComboBoxModel(new String[] {"\u98CE\u666F", "\u7F8E\u5973", "\u8C6A\u8F66", "\u6E38\u620F"}));164 comboBox_SelectPic.setMaximumRowCount(5);165166 JLabel label_2 = new JLabel("\u6E38\u620F\u65F6\u95F4\uFF1A");167 label_2.setForeground(Color.BLUE);168169 textField_time = new JTextField();170 textField_time.setHorizontalAlignment(SwingConstants.RIGHT);171 textField_time.setText("0");172 textField_time.setEditable(false);173 textField_time.setColumns(10);174175 JLabel lblNewLabel = new JLabel("\u79D2");176 lblNewLabel.setForeground(Color.BLUE);177178 bt_GameBegin = new JButton("\u5F00\u59CB\u6E38\u620F");179 bt_GameBegin.addActionListener(new ActionListener() {180public void actionPerformed(ActionEvent eve) {181 buttonClickAction(eve);182 }183 });184 GroupLayout gl_panel_checkGame = new GroupLayout(panel_checkGame);185 gl_panel_checkGame.setHorizontalGroup(186 gl_panel_checkGame.createParallelGroup(Alignment.LEADING)187 .addGroup(gl_panel_checkGame.createSequentialGroup()188 .addContainerGap()189 .addComponent(label)190 .addGap(6)191 .addGroup(gl_panel_checkGame.createParallelGroup(Alignment.TRAILING)192 .addComponent(rb_difficulty)193 .addGroup(gl_panel_checkGame.createSequentialGroup()194 .addComponent(rb_simple)195 .addPreferredGap(ComponentPlacement.RELATED)))196 .addGap(18)197 .addComponent(label_1)198 .addPreferredGap(ComponentPlacement.UNRELATED)199 .addComponent(comboBox_SelectPic, GroupLayout.PREFERRED_SIZE, 69, GroupLayout.PREFERRED_SIZE)200 .addGap(32)201 .addComponent(label_2)202 .addPreferredGap(ComponentPlacement.UNRELATED)203 .addComponent(textField_time, GroupLayout.PREFERRED_SIZE, 41, GroupLayout.PREFERRED_SIZE)204 .addPreferredGap(ComponentPlacement.RELATED)205 .addComponent(lblNewLabel)206 .addGap(52)207 .addComponent(bt_GameBegin, GroupLayout.PREFERRED_SIZE, 93, GroupLayout.PREFERRED_SIZE)208 .addContainerGap(76, Short.MAX_VALUE))209 );210 gl_panel_checkGame.setVerticalGroup(211 gl_panel_checkGame.createParallelGroup(Alignment.LEADING)212 .addGroup(gl_panel_checkGame.createSequentialGroup()213 .addGroup(gl_panel_checkGame.createParallelGroup(Alignment.LEADING)214 .addGroup(gl_panel_checkGame.createSequentialGroup()215 .addComponent(rb_simple)216 .addPreferredGap(ComponentPlacement.RELATED, 7, Short.MAX_VALUE)217 .addComponent(rb_difficulty))218 .addGroup(gl_panel_checkGame.createSequentialGroup()219 .addContainerGap()220 .addGroup(gl_panel_checkGame.createParallelGroup(Alignment.BASELINE)221 .addComponent(label_1)222 .addComponent(comboBox_SelectPic, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) 223 .addComponent(textField_time, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)224 .addComponent(lblNewLabel)225 .addComponent(label_2)226 .addComponent(bt_GameBegin, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE)))227 .addGroup(gl_panel_checkGame.createSequentialGroup()228 .addGap(22)229 .addComponent(label)))230 .addContainerGap())231 );232 panel_checkGame.setLayout(gl_panel_checkGame);233 mainPanel.setLayout(gl_mainPanel);234 }235236private void showAboutActionListener(ActionEvent e) {237// TODO Auto-generated method stub238 JOptionPane.showMessageDialog(null, "QQ:523980553");239 }240241private void buttonClickAction(ActionEvent eve) {242// TODO Auto-generated method stub243//设置按钮标题244if( bt_GameBegin.getText().equals("开始游戏") ) {245 beginGame();246 timer = new Timer();247 timer.scheduleAtFixedRate(new MyTase(), 0, 900);248 }249else {250 resetGame();251252 }253254 }255256public static void beginGame() {257 bt_GameBegin.setText("重置游戏");258//获取ComBox选项259int picId = comboBox_SelectPic.getSelectedIndex();260//加载图⽚261 PicloadDao pic = new PicloadDao();262 pic.loadPic(picId, jl_loadImage);263//获取难易度264if(rb_simple.isSelected()) {265 gameChoseDao = new GameDao();266 gameChoseDao.initButton(panel_beginGame);267 gameChoseDao.randomLoadPic(picId);268269 }else if(rb_difficulty.isSelected()) {270271 }272 }273274public static void resetGame() {275 bt_GameBegin.setText("开始游戏");276 rb_simple.setSelected(true);277 comboBox_SelectPic.setSelectedIndex(0);278 textField_time.setText(""+0);279 jl_loadImage.setIcon(null);280 gameChoseDao.resetButton();281 time = 0;282 timer.cancel();283 }284285class MyTase extends TimerTask{286 @Override287public void run() {288// TODO Auto-generated method stub289 time ++;290 textField_time.setText("" + time);291if(time == 60) {292 JOptionPane.showMessageDialog(null, "挑战失败");293 resetGame();294 }295 }296 }297 }代码被分成了⼏部分:⼀部分是界⾯的初始化,这些都可以通过Windows builder来完成,但是从按下“开始游戏”的按钮后,之后的任务都需要⼿动写代码,例如事件的处理,开始游戏和重置游戏的⽅法书写,计时器的书写。

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

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

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

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

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

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

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

JAVA课程设计 拼图游戏

JAVA课程设计  拼图游戏

拼图游戏1.游戏规则介绍(1)本游戏中有一个格子是空的,其他格子内随机放置由要拿来拼图切割成的8个小图片。

在开始游戏之前,会出现一张完整的图片,点击“菜单”里面的“开始”,进行拼图游戏,通过将空格旁边的小图片与空格交换位置(不断的移动方块),来实线拼图,直到方块一行一行的按图片的原始样子拼好即可完成该游戏。

在移动过程中,窗口右边会显示移动的步数。

(2)游戏拼完后,会弹出一个信息框,询问是否再玩一局,点击“Yes”将再打开一个游戏开始的界面,可以继续新的一局游戏,点击“No”将结束游戏,关闭所有窗口。

2.游戏实现的功能(1)点击运行程序,将弹出一个窗口,显示一张完整的图片。

(2)菜单栏的菜单,会出现3个菜单项:“开始”、“重新开始”、“结束”。

点击“开始”,即开始一局游戏;“在游戏的任何时候点击”重新开始“,即结束当前游戏,重新开始一局新的游戏;点击“退出“,立即退出游戏,关闭窗口。

(3)在游戏过程中,游戏界面右边会同步显示当前的步数。

游戏的一些界面:(1)主界面:(2)菜单项:(3)帮助--->关于(4)点击开始(5)游戏过程(6)游戏成功(7)破纪录3.程序实现Pt类:(1)建立一个类Pt,public class Pt extends JFrame implements KeyListener{}。

该类继承父类JFrame,实现KeyListener接口。

(2)Pt类的构造函数Pt()。

定义窗口参数,添加菜单栏和多个标签;调用读文件函数read (),读取该游戏的最高记录,并将该记录输出到标签上;为各个菜单添加事件,鼠标点击“开始”菜单,将调用star()函数,游戏开始,点击“重新开始”,将关闭当前窗口并重新打开游戏,点击“退出游戏”,将立即退出游戏;点击“帮助- 关于”,将新建About类的一个对象,弹出游戏说明的窗口。

(3)Pt类的star()函数。

将未开始的完整图片设为不可见;加入键盘监视器;调用生成0~8随机序列的函数,返回随机序列;根据该随机序列调用加入图标函数putLabel(),将9个方块加上图片;定义一个一维int型数组number[],记录随机序列,供后面判断是否拼图成功。

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

基于Java的拼图游戏设计

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

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

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

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

游戏前可以先预览看看。

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

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

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

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

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

目录1 开发环境及相关技术的介绍 (1)1.1 开发环境 (1)1.2 Java语言特点 (1)2 游戏实现功能解析及界面 (1)2.1游戏规则介绍 (1)2.2游戏实现功能 (2)2.2.1主窗口界面 (2)2.2.2主窗口菜单 (3)2.2.3 游戏过程中的出现的相关窗体 (6)3 游戏程序实现 (8)3.1 程序类主要功能介绍 (8)3.2 程序源代码 (9)4 小结 (27)基于Java的拼图游戏设计1 开发环境及相关技术的介绍1.1 开发环境操作系统:Microsoft Windows XP程序语言:Java开发环境:JDK-6u6-windows-i586-P1.2 Java语言特点1). 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。

Java的数据类型与机器无关。

2). 安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。

它提供了安全管理器,防止程序的非法访问。

3). 面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

4). 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。

5). 健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。

Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。

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

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

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

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

游戏前可以先预览看看。

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

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

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

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

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

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

如图4所示。

“新游戏”:单击可以开始游戏,如图2所示游戏进行状态。

“成绩记录”:单击可以查看游戏者的游戏成绩记录。

如图5所示。

初始的成绩记录。

“图片预览”:在游戏过程中可以单击预览图片,对照着拼,如图6所示。

“退出游戏”:游戏者要结束游戏可直接单击退出游戏。

图4 开始菜单图5初始成绩记录图6 图片预览(2)“选择”菜单。

包括了,“等级”、“背景图片”。

如图7所示。

当运行游戏时,如果没有把“background”这个文件夹放入主程序的目录下,在运行游戏选择背景图片时,将没有图片可选,界面如图8所示,这是可以按照“初始状态”界面上的提示进行操作。

若正常的有“background”在主程序路径下的话,运行游戏选择背景图片的话,就可以选择图片了,界面如图9所示。

“等级”:在游戏者开始游戏之前,要进行游戏等级选择,共有困难、普通、简单三种选择。

其图片的切割块数,会根据选择的等级不同,而有所不同。

简单的是一共8个小图片。

“背景图片”:这里保存了所要拼的所有图片。

在游戏前要进行选择。

图7 图8图9(3)“关于”菜单。

包括了“帮助”、“关于”两个下拉菜单。

如图10所示。

图10“关于”菜单“帮助”:在游戏时,可以单击查看游戏的简单规则,界面如图11所示。

“关于”:可查看该游戏的版本、作者、与作者的Email的相关信息,界面如图12所示。

图11 “帮助”信息框图12 下拉单“关于”的消息框2.2.3 游戏过程中的出现的相关窗体(1)提示信息窗口当游戏者运行游戏时,如果没有把“background”这个文件夹放入主程序的目录下,在运行游戏选择背景图片时,将没有图片可选,若此时直接“开始”->“新游戏”,将会弹出如下提示信息框。

如图13所示。

图13 提示信息框(2)拼图成功界面若选择abc.jpg图片拼图时,若拼图成功,界面如图14所示。

图14 拼图成功(3)成绩记录输入框当游戏者完成拼图游戏后,将出现一个成绩记录框(“输入”框),输入游戏者的姓名。

如图15所示。

输入后单击确定按钮,将弹出总的成绩记录框。

如图16所示。

图15(a) 输入前图15 (b) 输入后图16 成绩记录框3 游戏程序实现3.1 程序类主要功能介绍该游戏程序中包括11个类。

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

其中主要的类实现的功能如下:1)ButtonClick.class该类主要是实现鼠标事件,让玩家在用鼠标点击能够移动拼图的小图片,移动到周围空格的地方2)CardFrame.class该类主要实现,初始界面的相关提示信息。

3)GameOver.class该类主要实现游戏过程中的计时、暂停、结束等功能,游戏结束时的信息。

4) Data.class该类主要实现保存游戏者的游戏成绩记录的相关数据。

5)Grades.class该类主要实现成绩记录的初始化,在拼图成功后可记录游戏者姓名的功能,并直接提取等级、步数与时间等信息的功能。

保存成绩记录信息,以便游戏者查看。

6)MenuFrame.class该类主要实现有主菜单与子菜单的功能。

并设置相关的快捷键功能。

7)Puzzle.class该类是该游戏程序的主程序,从游戏界面大小到游戏过程中出现的所有信息框等相关功能都都到了实现,调用相关类实现其功能。

8)ShowImage.class该类主要实现图片的提取与切割的功能。

3.2 程序源代码1)Arg.javapublic interface Arg{public static final String path = "background";public static final String rc = "Game.rc";}2) ButtonClick.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JOptionPane;public class ButtonClick implements ActionListener{private JButton [][] button;private point pint;private int row;private int cal;private int [][] matrix;private GameOver gOver;private boolean end;public ButtonClick(JButton [][] b, point p, int [][] m, int r, int c, GameOver g){button = b;pint = p;matrix = m;row = r;cal = c;gOver = g;end = false;}public void actionPerformed(ActionEvent e){if (end || !pint.neighbor(row, cal))return;int r = pint.getRow();int c = pint.getCal();button[r][c].setIcon(button[row][cal].getIcon());button[row][cal].setIcon(null);pint.set(row, cal);int t = matrix[r][c];matrix[r][c] = matrix[row][cal];matrix[row][cal] = t;end = gOver.judge();}}3) CardFrame.javaimport java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowAdapter;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;public abstract class CardFrame extends MenuFrame{private CardLayout card;private Container con;protected JPanel [] panel = {new JPanel(), new JPanel()};public CardFrame(){con = this.getContentPane();card = new CardLayout();con.setLayout(card);panel[0].setLayout(null);JLabel label;label = new JLabel("请输入你的图片到");label.setBounds(10, 15, 190, 30);panel[0].add(label);label = new JLabel("\"背景图片\"文件夹。

相关文档
最新文档