JAVA拼图游戏论文

JAVA拼图游戏论文
JAVA拼图游戏论文

四川师范大学成都学院高级语言程序课程设计基于JAVA的拼图软件的设计

学生姓名彭长龙

学号2011101046

所在学院通信工程学院

专业名称通信工程

班级2011级1班

指导教师王敏

成绩

四川师范大学成都学院

二○一三年五月

课程设计任务书

学生姓名彭长龙学生学号2011101046

学生专业通信工程学生班级2011级1班

指导教师王敏职称助教

发题日期2013年03月15日完成日期2013年06月10日

设计题目基于JAVA的拼图软件的设计

设计目的:

(1)通过课程设计,学会使用java系统,包括对程序的调试、运行、保存等知识的运用。(2)通过课程设计,开发一个小游戏,并掌握研发全程。

(3)通过课程设计,培养发现问题、分析问题、解决问题的能力。

具体任务及要求:

设计任务:

①任务:设计一个简单的拼图游戏

功能要求:能够实现基本的拼图功能,以及退出,记录数据等功能;界面简洁。

②设计任务要完成设计、编码、测试等过程,给出设计思路、设计说明书、主要的代码的说明、使用说明书。源代码以及可运行的拼图程序。

具体要求:

①设计任务与要求

②总体方案与说明

③面向对象的设计(主要类的设计)

④源程序清单与注释

⑤小结与体会。

课程设计进度安排:

序号内容安排时间

1 选定课程设计题目03.15-3.20

2 构思程序结构03.21-04.20

3 编写并调试运行程序04.21-05.10

4 写课程设计论文05.11-05.25

5 修改并提交05.25-06.10

课程设计参考文献:

[1]唐大仕:Java程序设计[M],北方交通大学出版社,2007.05:P56-P62

[2]郑莉:Java语言程序设计[M],清华大学出版社,2007.01:P67-P75

[3]朱站立:Java程序设计实用教程[M],电子工业出版社,2006.10:P58-P70

[4]耿祥义:java2实用教程[M],清华大学出版社,2007.3:P81-P92

指导教师签字院长审核签字

基于JAVA的拼图软件的设计

内容摘要:

拼图游戏是一款非常经典的小游戏,因为它比较简单有趣,老少皆宜。拼图游戏的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

关键词:拼图游戏 Java语言开发

T he design of JAVA software based on the puzzle Abstract:

Jigsaw puzzle is a very classic game, because it is easy and fun, both old and young, are more suitable.

Jigsaw design language for each Java language designers to improve and advance is an excellent exercise opportunities. Puzzle design is more complex, its scope, and involves many more, if you do not think and design, would be difficult to successfully developed this game. In the design of the game involves display of the graphical interface and updating, data is collected and updated, and in the development of this game, class inheritance mechanism, and some design patterns you want to apply. Therefore, how to design and develop this jigsaw puzzle, for raising the level of Java development, and system design capabilities are of great help. During the process of design and development, you need to handle the inheritance relationships between the classes, also have to deal with each type of appropriate packaging, and also to coordinate the various logical dependencies between modules and data communication.

Keywords:Jigsaw puzzle Java language develop

目录

前言 (1)

1、开发工具介绍 (1)

2、需求分析 (1)

2.1开发环境与配置 (1)

2.2功能要求 (2)

2.3系统主要功能和主要功能描述 (2)

2.4 关键技术 (5)

3、详细设计 (6)

3.1 核心功能代码实现技术 (6)

3.2 程序的流程图 (7)

3.3 程序运行效果图 (8)

4、课程设计总结 (10)

附录源代码 (11)

参考文献 (22)

基于JAVA的拼图软件的设计

前言

拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

1 开发工具介绍

Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse 工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。

2 需求分析

2.1开发环境与配置

下载jdk1.6.0_16软件包,双击图标安装好JDK,将JDK安装后的bin目录路径复制下来,配置系统我环境变量。

2.2功能要求

●实现图片的切割及随机分布。

●实现拼图游戏的拼图功能。

●在菜单栏里添加开始游戏、退出游戏、图片选择、难度选择的功能。

2.3系统主要功能和主要功能描述

功能1:图片的放置

新建工程PinTu,要求在工程中创建一个窗体类PinTu和类Play,在窗体类中编写图片放置方法septic,该功能属于基本功能,供其他方法所调用,为实现拼图游戏的图片选择、难度设置、开始游戏等功能作准备。

在septic方法中主要实现的功能是将图片切割成m行n列,并存放在pic 数组中;定义数组按扭btn[][],并且判断控件里是否为空,如果为空则分配m+1行n列的控件空间;如果存在则不分配空间这样有助于拼图游戏控件多少以及大小的改变。将pic中存放的图片通过for循环放置在btn控件中。

图片放置方法的代码如下:

public void setpic() //图片放置

{

isover.setText("拼图状态:未开始");

step=0;

lstep.setText("拼图步数:"+step+"步");

w=280/m;

h=290/n;

Image[] a=splitImage(perimage1,1,1,100,100);

perimagea=new ImageIcon(a[0]);

if(pregtn1==null)

pregtn1=new JButton(perimagea);

else

pregtn1.setIcon(perimagea);

pregtn1.setBounds(200,5,100,100);

this.add(pregtn1);

pic=new ImageIcon[m*n]; //分配空间大小

if(btn==null) //如果为空就不重新分配控件

btn=new JButton[m+1][n]; //分配控件空间

p=new Rectangle[m+1][n]; //坐标

Image[] t=splitImage(perimage1,m,n,w,h);

for(int i=0;i<(m+1)*n;i++)

{

int x=i/n,y=i%n; //下标转换

if(btn[x][y]==null)

btn[x][y]=new JButton();

btn[x][y].setBounds(y*w+5,x*h+40,w,h); //设置数组按扭的位置

if(m==5)

btn[x][y].setBounds(y*w+5,x*h+60,w,h);

btn[x][y].addActionListener(this); //添加事件

this.add(btn[x][y]); //在窗体上加入这些按扭

}

for (int i=1;i

{

btn[0][i].removeActionListener(this); //在按扭上添加事件

btn[0][i].setVisible(false);

}

int temp[]=ran(m*n); //随机数组

for (int i=0;i

{

pic[i]=new ImageIcon(t[i]); //图片转换

}

for (int i=0;i

{

btn[(i/n)+1][(i+n)%n].setIcon(pic[temp[i]]);

}

btn[0][0].setBackground(Color.blue); //设置背景颜色

btn[0][0].setIcon(null); //设为空

this.repaint(); //刷新

}

功能2:开始游戏

在菜单中添加菜单选项开始游戏,通过对该菜单选项进行动作事件的监听,实现ActionListener接口,调用setpic方法,实现图片重新放置,游戏重新开始。

功能3:图片选择

通过FileDialog df=new FileDialog (this,”图片选择”,

FileDialog.LOAD);这个语句实现图片选择窗口,进行图片选择,将图片的控件设为空,然后再调用setpic图片放置方法将控件上的图片进行刷新。

图片选择功能实现的代码如下:

if(e.getSource()==item3)

{

FileDialog df=new FileDialog(this,"图片选择”,FileDialog.LOAD);

df.setVisible(true);

perimage1=df.getDirectory()+df.getFile();

if(df.getFile()==null)

return;

for(int j=0;j<(m+1)*n;j++)

{

int x1=j/n,y1=j%n;

btn[x1][y1].removeActionListener(this);

}

setpic();

return;

}

功能4:难度设置

在窗体上添加菜单栏menubar,然后在菜单栏上添加操作、设置、关于的菜单,在设置菜单中添加难度设置的菜单选项。

设置三个难度,难度一3*3为简单,难度二4*4为一般,难度三5*5为偏难。在三个难度中添加动作监听事件

nandu1.addActionListener(this);nandu2.addActionListener(this); nandu3. addAction Listener(this)。

在接口方法重写中实现难度设置功能,以难度2为例,代码如下:

if(e.getSource()==nandu2)

{

nandu1.setSelected(false);

nandu2.setSelected(true);

nandu3.setSelected(false);

for(int i=0;i<(m+1)*n;i++)

{

int x=i/n,y=i%n;

this.remove(btn[x][y]);

}

m=n=4;

btn=null;

setpic();

return;

}

功能5:键盘事件的响应

在窗体类上用implement实现KeyListener接口,重写接口所有方法,在接口的KeyPressed添加控件上、下、左、右移动的方法。通过if语句判断键盘键盘事件,如果按下左键,则是用

if(y>0&&btn[x][y].isVisible()&&btn[x][y].getIcon()==null)语句判断控件,如果为真,则进行向左移动。,每进行一次移动都要进行判断是否拼图完整。

2.4 关键技术

●继承JFrame实现窗体的设置。

●实现ActionLiatener的接口从而实现动作事件的监听。

●通过对btn控件添加监听事件来实现拼图游戏中的控件上下移动。

3 详细设计

3.1 核心功能代码实现技术

实现拼图游戏窗体的显示,代码如下:

public void init()

{

this.setTitle("拼图游戏"); //菜单显示

this.setLayout(null);

this.setBounds(400,50,300,480);

isover.setBounds(80,10,120,20);

lstep.setBounds(100,50,100,20);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setJMenuBar(menubar);

this.add(isover);

this.add(lstep);

menubar.add(menu1); //添加菜单

menubar.add(menu2);

menubar.add(menu3);

menu1.add(item1);

menu1.add(item2);

menu2.add(item3);

menu2.add(item4);

menu3.add(item5);

item4.add(nandu1);

item4.add(nandu2);

item4.add(nandu3);

nandu1.setSelected(true); //设置单选菜单默认值

this.setVisible(true);

item2.addActionListener(this); //注册监听事件

item3.addActionListener(this);

item4.addActionListener(this); nandu1.addActionListener(this); nandu2.addActionListener(this); nandu3.addActionListener(this); item1.addActionListener(this); setpic();

}

3.2 程序的流程图

如下图3.2-1为本次设计的程序流程图:

图3.2-1 程序流程图

游戏结束

窗体显示

图片放置

动作事件的监听

事件响应

开始游戏

拼图完整

3.3 程序运行效果图

如图3.3-1图3.3-2为不同难度设置的效果图:

图3.3-1 3*3的简单难度的效果图

图3.3-2 4*4的一般难度的效果图

如图3.3-3为实现图片选择功能的效果图,如图3.3-4为正在进行拼图游戏的效果图:

图3.3-3 图片选择后的效果图

图3.3-4 正在游戏效果图

4 课程设计总结

经过这段时间的学习我收获不小,总结起来有如下几点:

1.更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。对于这种面向对象的编程思想,使刚入门的人很快就能写出自己的程序。

2.锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。都是通过自己查帮助文档,或通过网络进行学习和了解到的。和别人在一起交流是一件很快了的事。

3.体会到写程序最重要的是程序思想,而不是单纯的写代码。如何解决类之间的关联和继承关系,如何组织类是很关键的。此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。

附录源代码

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;// 布局方式为GridLayout

private 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 = new Random().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"))

{

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 (),读取该游戏的最高记录,并将该记录输出到标签上;为各个菜单添加事件,鼠标点击“开

C#面向对象课程设计--拼图游戏

《C#程序设计》课程设计 题目:拼图游戏 专业:计算机科学与技术 学号: 姓名: 指导老师: 完成日期: 2012/12/26

《C#课程设计》评分标准 题目:拼图游戏专业:计算机科学与技术学号:姓名:

目录 1 前言 (4) 2 需求分析 (4) 要求 (4) 任务 (4) 运行环境 (4) 开发工具 (4) 3 概要设计与详细设计 (5) 系统流程图 (5) 结构功能图 (5) 4 编码与实现 (6) 编码分析 (6) 具体代码实现(附源代码) (9) 5 课程设计总结 (18) 参考文献 (19)

1.前言 拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个C#语言设计者进行语言提高和进阶都是一个很好的锻炼机会。拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高C#开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。一个3×3的魔板,有一个格子是空的,其他格子内随机放置1-8共8个编号的方块,通过单击任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到方块按照图片的原来的顺序排好。 2 需求分析 要求 (1)用C#语言实现程序设计; (2)利用PictureBox控件来实现图片的移动 (3)超过200步提示重新来 (4)界面友好(良好的人机互交),程序要有注释。 任务 (1)制作流程图 (2)编写代码; (3)程序分析与调试。 运行环境 (1)WINDOWS2000/XP/win7系统 (2)编译环境 开发工具

基于Android 益智拼图游戏设计毕业论文

基于Android 益智拼图游戏设计毕业论文 目录 摘要........................................................... I I Abstract....................................................... I II 1 绪论. (1) 1.1 课题开发的背景 (1) 1.2 课题意义 (1) 2 Android架构与开发平台搭建 (2) 2.1 Android的系统架构 (2) 2.2 Window下Android开发环境的搭建 (4) 3 流程介绍与概要设计 (5) 3.1 游戏流程介绍 (5) 3.2 系统概要设计 (6) 3.2.1 界面布局模块 (6) 3.2.2 难度选择模块 (6) 3.2.3 图片选择模块 (7) 3.2.4 步数和时间模块 (7) 3.2.5 游戏实现模块 (7) 4 系统详细设计与实现 (8) 4.1 界面布局实现 (8) 4.1.1 选择界面布局 (8) 4.1.2 游戏界面布局 (9) 4.2 游戏功能实现 (11) 4.2.1 难度选择 (11) 4.2.2 图片选择 (12) 4.2.3 步数和时间设置 (13) 4.2.4 拼图的实现 (14)

5 系统测试 (17) 5.1 Android仿真器介绍 (17) 5.2 功能模块测试 (17) 5.3 出现的错误及解决方案 (20) 6 总结与展望 (21) 参考文献 (22) 附录 (23) 致谢 (33)

基于Android益智拼图游戏设计 摘要 随着移动设备的日益普及,使用Android技术开发手机软件受到越来越多人的青睐。在此背景下,本课题开发了一款Android平台下的手机游戏——益智拼图。 本文首先对Android的研究背景,系统架构以及开发环境进行介绍,然后就玩家对游戏的需求进行一定的分析,最后运用Android技术实现拼图游戏的开发,并合理布局游戏界面,使游戏界面更加美观和人性化,实现了游戏的基本功能,最终可以让玩家享受拼图游戏的乐趣。 关键词:Android;拼图游戏;Activity;架构

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;// 布局方式为GridLayout private 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 = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的列 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) {

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

姓名Name 学号 Student No. 20137045 班级 Class 代码总行数Code Lines 222 项目名称 Item 1.实验目的 本次课程设计旨在通过一个完整项目的开发,巩固面向对象程序设计、软件工程、数据库技术等课程的相关知识,加深学生对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("开始新的游戏"); // 按钮1 private JButton show = new JButton("显示正确图片"); //按钮2 private 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));//设置字体

Java语言实现拼图游戏源代码

Java语言实现拼图游戏源代码 /* * JA V A小游戏-拼图我做的第一个小游戏 * Cell类是继承的按钮类,并加上相应图形,形成方格 *MyCanvas是一个面板,加载Cell类的对象(方格),是这三个类中的核心*/ import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Icon; import javax.swing.JButton; public class MyMainFrame extends JFrame implements ActionListener { MyCanvas myCanvas; JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板Button start,preview,set;//定义开始,预览,设定按钮 Container container;//容器,得到内容面板 public MyMainFrame() {//初使化 container=this.getContentPane(); start=new Button("开始"); start.addActionListener(this); preview=new Button("预览");

java拼图游戏图片插入与分割

public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight) { try { Image img; ImageFilter cropFilter; // 读取源图像 BufferedImage bi = ImageIO.read(new File(srcImageFile)); int srcWidth = bi.getHeight(); // 源图宽度 int srcHeight = bi.getWidth(); // 源图高度 if (srcWidth > destWidth && srcHeight > destHeight) { Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT); destWidth = 200; // 切片宽度 destHeight = 150; // 切片高度 int cols = 0; // 切片横向数量 int rows = 0; // 切片纵向数量 // 计算切片的横向和纵向数量 if (srcWidth % destWidth == 0) { cols = srcWidth / destWidth; } else { cols = (int) Math.floor(srcWidth / destWidth) + 1; } if (srcHeight % destHeight == 0) { rows = srcHeight / destHeight; } else { rows = (int) Math.floor(srcHeight / destHeight) + 1; } // 循环建立切片 // 改进的想法:是否可用多线程加快切割速度 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { // 四个参数分别为图像起点坐标和宽高 // 即: CropImageFilter(int x,int y,int width,int height) cropFilter = new CropImageFilter(j * 200, i * 150, destWidth, destHeight); img = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter)); BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(img, 0, 0, null); // 绘制缩小后的图 g.dispose(); // 输出为文件

MFC课程设计之拼图游戏设计报告

拼图游戏 实验报告 一、实验目的

1、通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。 2、通过实践进一步领会程序设计的特点和应用,提高运用C++ 以及面向对象知识解决实际问题的能力,初步掌握MFC变成的基本功能。 3、通过实践掌握用C++ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。 二、小组分工 为了发挥组内同学的各自特长,我们小组分工如下: 1、苏嘉彬——前期进行系统需求分析,系统结构设计,完成拼图界面的设计工作, 后期完成课程设计报告 2、嵇鹏飞(组长)——完成主要程序的编写工作(图形分割、存储、拼图) 3、依代吐力·艾尼——搜集资料,完成计时器的设计工作,软件接口的设计及测 试 三、程序设计思路 1、初步方案讨论 拼图游戏是同学们喜欢的益智游戏之一,带着浓厚的兴趣,我们选择拼图游戏设计 作为我们小组本次MFC课程设计的课题。在讨论中,有的同学希望用单文档(SDI) 的形式完成本次设计,有的同学则偏向于用对话框(Dialogue)的形式,最终我们小组 讨论决定最终的设计采用对话框形式实现拼图功能。 2、方案变更、疑难解决 (1)最初我们决定采用对话框形式来实现拼图的基本功能,但是在实施过程中出 现了几次很严重的错误:Debug Assertion Failed,缺少ivewers.dll文件等等,在最后的 尝试中我们发现如果采用单文档(SDI)形式写拼图的话,可以实现最基本的功能,因 此我们最终决定使用单文档来完成该课程设计。 (2)一开始我们讨论决定采用的方式是将位图读入后再进行图片的分割,而在实 际的操作过程中由于图片的分割有一定的困难,因此我们最后采用的方式是将位图进行 分割完毕后再逐个用Brush在指定位置上进行绘画,实现图形的分割。 3、系统需求分析 (1)系统功能 简单的拼图游戏应该有拼图、计时、判断拼图成功、游戏者用时统计排名等功能, 拼图内部还应该有难度选择、相邻拼图块自动拼图等功能。图1所示是拼图游戏的用例 图,表明拼图游戏的主要功能。 图1 (

java拼图游戏代码

Puzzle类: package com.eavan; public class Puzzle { public static void main(String[] args) { // TODO Auto-generated method stub new PuzzleWin(); } } PuzzleWin类: /** * 可以为游戏添加一个计时的功能,让时间成为一个判定标准* 可以分析一下为什么图片不清楚 * 可以向怎么能够让选择图片和选择难度没有顺序性(较容易)* */ package com.eavan; import java.awt.Color; import java.awt.FileDialog; import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.HeadlessException; import java.awt.Image; import java.awt.Transparency; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel;

C++课程设计报告 - 拼图游戏

目录 一、需求分析 (1) 1.课程设计目的 (1) 2.程序所实现的功能 (1) 二、设计内容 (1) 1. 主模块图 (1) 2.1. 主程序流程图 (2) 2.2 用例图 (2) 2.3主程序调用关系图 (3) 2.4函数主要调用关系图 (3) 三、设计方案论述 (3) 四、调试分析 (4) 1.实际完成的情况 (4) 2.程序的性能分析 (4) 3.上机过程中出现的问题及其解决方案 (4) 4.程序中可以改进、扩充的功能及设计实现构想 (4) 五、用户手册 (4) 六、设计总结 (5) 七、程序中主要的功能函数 (6) 八、主要参考文献 (6) 九、附录 (6)

一、需求分析 1.课程设计目的 (1)运用C++语言设计拼图游戏具有极强的实践性,加强我们对C++课程基础知识点的理解掌握和灵活运用理能力,培养实际分析问题能力,养成良好的编程习惯;了解C++面向对象的设计方法与技巧,有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养分析实际问题和解决问题的能力,具备使用面向对象程序设计开发工具设计实际系统的能力。 (2)进一步领会程序设计的特点和应用,提高运用C++ 以及面向对象知识解决实际问题的能力,初步掌握MFC编程的基本功能,掌握一种可视化编程的方法,学习使用CStatic控制操作位图,加强对C++面向对象程序设计的理解。 (3)掌握用C++ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识,学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。 (4)锻炼实际的编程能力,提高调查资料、查阅技术文献、资料以及编写软件设计文档的能力,提高自学编程的能力。 2.程序所实现的功能 (1)本程序除了实现了拼图所要求的基本功能外,还添加了背景音乐、计算步数和游戏所用的时间,当游戏开始时背景音乐自动循环播放,步数随player操作自动增加,时间自动增加。 (2)进入游戏界面后,player可以在菜单栏中选择游戏的难度、图片风格和拼图图像,亦可以自定义图片,若选择“简单”,程序将图片分成9块,若选择“困难”,程序将图片分成16块. (3)单击“重置”或按F3菜单项会弹出一个对话框让用户确认是否重置游戏。 (4)单击任意图象,图像将随机排列,并开始计时和记步,用户通过鼠标单击空格周围的图片来改变其位置,用户没单击一次,步数增加一次。 (5)游戏中用户可通过单击“提示”菜单项或按F4来查看图像的缩略图及游戏相关信息。 (6)游戏状态栏显示用户所用时间及步数,成功时状态栏给出提示信息和所花费时间、步数,用户可选择其他图像或难度进行游戏。 二、设计内容 1.主模块图

java拼图游戏设计报告

《Web程序开发》课程 大作业 拼图游戏 3011212046 张杰 2014.11

一、题目说明 拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。 本游戏使用Java语言设计,开发平台为JDK。开发工具Eclipse。JDK是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 二、题意分析 因为要制作拼图游戏,所以首先要实现图片的导入。这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。Initgame()函数是自写函数,在函数体内,通过调用Math.random()函数产生随机数,用来达到图片位置摆放的随意性和随机性。最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。 游戏操作流程: 开始游戏 操作游戏 游戏完成

拼图游戏案例的设计

拼图游戏案例的设计 摘要:拼图游戏的设计,首先考虑窗口布局,因为在窗口的上部需要边界布局,而 那二十五个小按钮需要采用网格布局,因而直接将组件添加到Jframe窗口中是不可行的,可以通过将窗口上部和下部的组件分别添加到两个面板Jpanel中,将两个面板加到Jframe窗口中。然后实现图片的随机排放,通过循环生成图片正确摆放顺序的二维数组和图片随机摆放顺序的二维数组来实现。最后,实现图片的移动,通过两个按钮的行索引想减得绝对值与列索引想减得绝对值的和是否为1,来判断被点击按钮与空白按钮是否相邻,如果相邻,则令显示空白图片的按钮显示被单击按钮显示的图片,令被单击的按钮显示空白的图片。 关键字:Java软件拼图游戏Jpanel面板 引言:拼图游戏是一种弹性很好且耐玩的游戏,它可以启发智力及帮助其养成解决 事情的能力。玩拼图有助于手眼协调,它能训练和了解“部分”与“全部”的关系—可以知道许多的“部分”能拼凑出一个“全部”,以及“一个全部”是由“许多部分”所组成的。拼图平面组合的概念—积木是立体的组合,而拼图是一种平面组合的概念,在局限的2D范围内拼出一个物品,一个合乎与逻辑的东西。拼图游戏需要耐心的操作和手眼协调能力,只要一不协调就不能将数据块放在正确的位置。 一基础知识 JButton(按钮)组件:通过SetText(String text)方法设置按钮的标签文本,通过setIcon(Icon defaultIcon)方法设置按钮在默认状态下显示的图片。JButton组件只是在按下和释放两个状态之间进行切换,当Button按钮被点击时,会触发ActionEvent事件,此事件由ActionListener(事件监听器)接受并做处理,因而调用按钮的addActionListener(ActionEvent e)方法,为该按钮指定监听者。 Jlabel(标签)组件:Jlabel组件用来显示文本和图像,通过setText(String text)方法设置标签显示的文本,通过setIcon(Icon icon)方法设置标签显示图片。BorderLayout布局管理器:由BorderLayout类实现的布局管理器称为边界布局管理器,它的布局方式是将容器划分为五个部分,即NORTH(容器顶部)、WEST(容器左侧)、CENTER(容器中间)、EAST(容器右侧)、SOUTH(容器底部)。如果组件容器采用了边界布局管理器,在将组件添加到容器时,需要设置组件的显示位置,通过方法add(Component comp,Object constraints)添加并设置,该方法的第一个参数为欲添加的组件对象,第二个参数为组件的显示位置。 GridLayout布局管理器:由GridLayout类实现的布局管理器称为网格布局管理器,它的布局方式是将容器按照用户的设置平均划分成若干网,通过构造方法GridLayout(int rows,int cols)创建网格布局管理器对象是,参数rows用来设置网格的行数,参数cols用来设置网格的列数。 JPanel面板:如果将所有的组件都添加到Jframe窗体提供的默认组件容器中,则在一个界面中的所有组件只能采用一种布局方式,很难得到一个美观的界面,并且有些布局方式只能管理有限个组件。通过使用Jpanel面板,首先将面板和组件添加到Jframe窗体中,然后再将子面板和组件添加到上级面板中,这样就可以向面板中添加无数个组件,并且通过对每个面板采用不同的布局管理器,解决众多组件间的布局问题。Jpanel面板默认采用FlowLayout布局管理器。 Java程序的Application类型:特点是“Java应用”是可以独立运行的java程序。需要经过三个步骤:编写源文件,一个java应用程序必须有一个类含有public static void main (String args[])方法,这个类是应用程序的主类,源文件的名字和主类的名字完全相同。编译java源程序,创建源文件后,就要使用编译器(javac.exe)对其进行编译。运行java程序,从主类的main方法开始执行。 二拼图游戏设计思路与步骤 题目要求:所谓拼图游戏,是指将一个完整的图片分割成若干个规则的小图片,然后将这些小图片随机地拼接在一起,然后由玩家按照原图重新拼接出正确的图片。程序运行界面如下图所示,左上角的图片为供玩家参考的原图,下面每一个小网格都是一个小图片,在开始游戏时这些小图片是杂乱无章的,在图中有一个网格是空白的,玩家可以通过单击与其相邻的网格,即位于其上、下、左、右的四个网格,将被单击网格中显示的小图片移动到空白网格中,然后被单击的网格将变为空白,经过这样反复的移动,将会将图片重新拼接成原图像。当点击按钮“下一局”时,每个移动模块中的图片自动随机更新。 第 1 页共6 页第 2 页共6 页

毕业论文--基于安卓系统的拼图游戏设计

毕业论文 设计(论文)题目:基于Android 益智拼图游戏设计

目录 摘要........................................................... I V Abstract ......................................................... V 1 绪论. (1) 1.1 课题开发的背景 (1) 1.2 课题意义 (1) 2 Android架构与开发平台搭建 (2) 2.1 Android的系统架构 (2) 2.2 Window下Android开发环境的搭建 (4) 3 流程介绍与概要设计 (5) 3.1 游戏流程介绍 (5) 3.2 系统概要设计 (6) 3.2.1 界面布局模块 (6) 3.2.2 难度选择模块 (6) 3.2.3 图片选择模块 (7) 3.2.4 步数和时间模块 (7) 3.2.5 游戏实现模块 (7) 4 系统详细设计与实现 (8) 4.1 界面布局实现 (8) 4.1.1 选择界面布局 (8) 4.1.2 游戏界面布局 (9) 4.2 游戏功能实现 (11) 4.2.1 难度选择 (11) 4.2.2 图片选择 (12) 4.2.3 步数和时间设置 (13) 4.2.4 拼图的实现 (14) 5 系统测试 (17) 5.1 Android仿真器介绍 (17)

5.2 功能模块测试 (17) 5.3 出现的错误及解决方案 (20) 6 总结与展望 (21) 参考文献 (22) 附录 (23) 致谢 (33)

基于Android益智拼图游戏设计 摘要 随着移动设备的日益普及,使用Android技术开发手机软件受到越来越多人的青睐。在此背景下,本课题开发了一款Android平台下的手机游戏——益智拼图。 本文首先对Android的研究背景,系统架构以及开发环境进行介绍,然后就玩家对游戏的需求进行一定的分析,最后运用Android技术实现拼图游戏的开发,并合理布局游戏界面,使游戏界面更加美观和人性化,实现了游戏的基本功能,最终可以让玩家享受拼图游戏的乐趣。 关键词:Android;拼图游戏;Activity;架构

C语言课程设计_拼图游戏

C语言课程设计--拼图游戏 一、实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完整的图片。要求如下: 1.游戏的初始界面如图一,单击空格键进入游戏,进入游戏之后系统将完成的图片分 成大小相同的15分并随机摆放成如图二。 图一 图二

2.启动游戏,单击空格键进入游戏。通过鼠标单击周围有空格的方块来移动方块,直 到全图拼接成图二中右下角的图案样式,游戏结束,重新回到图一界面。 3.游戏的原理是定义一个4 * 4的方块矩阵(二维数组),前15个的值按顺序从1-15依 次递增,第16个留空为0。按照这个顺序排列的矩阵值代表游戏胜利。初始化的时 候,将该16个矩阵值随机排布即得到本局关卡。为0的空位代表附近上下左右的4 个方块可以移动过来 4.每次单击鼠标左键,方块移动一格。鼠标必须移动到方块范围内单击才能有效移动 方块。 二、实验指南 实验一开始实验 【实验任务】 步骤一、打开FunCode,创建一个的C语言项目; 步骤二、导入Puzzle模板。 【实验思路】 按实验指导完成。 【实验指导】 1、打开FunCode,点击“项目”菜单,选择“创建C语言工程” 注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。 2、点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“Puzzle” 模板,点击“导入到工程”按钮,如图二。

图一图二 3、导入成功后的,界面如下图所示: 实验二单击空格键,开始游戏 【实验内容】 步骤、启动游戏显示“空格开始”,单击空格键进入游戏初始界面。 【实验思路】 系统会自动响应d OnKeyDown函数来响应键盘按下消息,这部分代码实现在main.cpp 里。我们要做的就是通过在main.cpp的dOnKeyDown函数里实现我们的代码。当用户单击键盘上的空格键之后,设置GameBegin即“空格开始”精灵不可见。 【实验指导】

java语言实现拼图游戏源代码

java语言实现拼图游戏源代码 Java语言实现拼图游戏源代码 /* * JAVA小游戏,拼图我做的第一个小游戏 * Cell类是继承的按钮类,并加上相应图形,形成方格 *MyCanvas是一个面板,加载Cell类的对象(方格),是这三个类中的核心 */ import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Icon; import javax.swing.JButton; public class MyMainFrame extends JFrame implements ActionListener { MyCanvas myCanvas; JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板 Button start,preview,set;//定义开始,预览,设定按钮

基于Java的拼图游戏设计

目录 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-P 1.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语言的拼图游戏,有一个格子是空的,其他格子内随

java拼图游戏完整代码

// Cell.java package cn.itcast.picture.ui; import javax.swing.Icon; import javax.swing.JButton; /* * 图片小方格类 */ public class Cell extends JButton { //带有图片的小方格 public Cell(Icon icon) { super(icon); //设置小方格大小 this.setSize(150, 150); } //带有图片和文字的小方格 public Cell(String text, Icon icon) { super(text, icon); //设置小方格大小 this.setSize(150, 150); this.setHorizontalTextPosition(CENTER);//设置文字水平居中显示 this.setVerticalTextPosition(CENTER);//设置文字垂直居中显示 } // public void move(String direction) { switch (direction) { case "UP": this.setLocation(this.getBounds().x,this.getBounds().y-150); break; case "DOWN": this.setLocation(this.getBounds().x,this.getBounds().y+150); break; case "LEFT": this.setLocation(this.getBounds().x-150,this.getBounds().y); break; case "RIGHT": this.setLocation(this.getBounds().x+150,this.getBounds().y);

相关文档
最新文档