「拼图讲解java」拼图玩法介绍

博主:adminadmin 2023-01-06 10:30:09 1049

今天给各位分享拼图讲解java的知识,其中也会对拼图玩法介绍进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用JAVA编写一个图片的拼图游戏

说说思路:

1 本身他不是一个完整的图片,应该被切分成数组,该数组为拼图成功的标准

2 将该数组复制,然后打散元素的顺序

3 初始化一个二维数组方格矩阵

4 允许用户通过鼠标事件将 备选图案中的某个元素放置到二维数组方格矩阵中,并记载其顺序

5 直到所有的方格被填满,与答案数组的元素顺序比较,给出结果

以上是实现拼图的关键思路,其他情况还要考虑,如允许从方格中撤出图像或者与其他图像调整位置,仅代表个人不成熟的想法,希望对你能有所帮助,祝你好运!

这是java拼图游戏代码中的一部分,谁能帮我解读一下啊 我根本看不明白啊

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;

//以上均引用不同的package内的类

public class MyMainFrame extends JFrame implements ActionListener {//MyMainFrame类extends “JFrame”类实现 ActionListener的方法

MyCanvas myCanvas; //初始化对象MyCanvas类

JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板

Button start,preview,set;//定义开始,预览,设定按钮

Container container;//容器,得到内容面板

public MyMainFrame() {//初使化

container=this.getContentPane(); //得到当前对象的ContentPane,并且把它赋给container

start=new Button("开始");//创建并初始新的Button(按钮)对象,赋给start

start.addActionListener(this); //在这个按钮对象中添加监听器,范围是当前对象

preview=new Button("预览");//同上,创建新的Button对象。。。。。

preview.addActionListener(this);//同上。。。。。

set = new Button("设置"); //同上。。。。。(感觉代码都差不多吧?呵呵)

set.addActionListener(this);//同上

panelPreview=new JPanel(); 创建新的JPanel(面板)对象

panelPreview.setLayout(null); //设置面板对象的布局为空

Icon icon=new ImageIcon("pic/pic_"+MyCanvas.pictureID+".jpg"); //创建并初始新的图标对象。图标的图片路径是pic目录下的pic与通过MyCanvas.pictureId取得字符串再与.jpg合并后的名称。例如(pic/pic_1234.jsp)

JLabel label=new JLabel(icon); //定义新的JLable(java标签),并初始

label.setBounds(0,0,300,300); //设置标签的范围(长x轴,宽y轴,长多,宽多少)

panelPreview.add(label); //面板对象中添加label这个对象

panelNorth=new JPanel(); //定义新的JPanel

panelNorth.setBackground(Color.red); //设置JPanel的背景色

panelNorth.add(start); //Jpanel加入按钮

panelNorth.add(preview); //同上

panelNorth.add(set); //同上

myCanvas=new MyCanvas(); //实例化MyCanvas

container.add(myCanvas,BorderLayout.CENTER);//在容器(前边定义好了这个对象)中添加myCanvas,设置它的布局为居中

container.add(panelNorth,BorderLayout.NORTH);//添加Jpanel,布局为北(也就是上)

this.setTitle("拼图小游戏-"); //设置这个对象的题目叫。。。。。

this.setLocation(300,200); //设置它的初始位置

this.setSize(308,365); //设置大小

this.setResizable(false); //设置是否可以改变窗口的大小(否)

this.setVisible(true); //是否可以显示(是)

this.setDefaultCloseOperation(3); //(swt和swing本人用的少)这个好像是按钮的初始样式是哪种吧。自己改下

}

public static void main(String[] args) {//类进口,也就是主程序的进口

// TODO 自动生成方法存根

new MyMainFrame(); //实例化主框架

}

public void actionPerformed(ActionEvent arg0) {//对三个按钮事件的处理

// TODO 自动生成方法存根

Button button=(Button)arg0.getSource(); //取得通过监听得到的动作时间对象的源(getSource具体得到的是啥,我也不太清楚)

if(button==start){ //判断。如果监听到的是按start按钮

myCanvas.Start(); //启动myCanvas

}else if(button==preview){ //如果是preview按钮

if(button.getLabel()=="预览"){ //如果按钮的标签是"预览"

container.remove(myCanvas); //容器销毁myCanvas

container.add(panelPreview); //然后容器添加panelPreview对象

panelPreview.updateUI(); //panelPreview对象的upDateUI方法

container.repaint(); //调用容器重新画图的命令

button.setLabel("返回"); //标签设置成"返回"

}else{ //如果以上两个if都不是,执行下边的语句

container.remove(panelPreview); //cantainer销毁p....这个对象

container.add(myCanvas); //添加m...这个对象

container.repaint(); //容器重新画图

button.setLabel("预览"); //设置标签名称为"预览"

}

}else if(button==set){//修改所选图片 //如果间听到的是按set这个键的时候

Choice pic = new Choice(); //Choice实例化对象(这个是啥类,我也不知道,名字上看是选择?)

pic.add("小猫"); //添加小猫

pic.add("小猪"); //添加小猪

pic.add("云"); //添加云

pic.add("QQ"); //添加qq

pic.add("卡通"); //添加卡通

pic.add("花"); //花

int i=JOptionPane.showConfirmDialog(this, pic, "选择图片", JOptionPane.OK_CANCEL_OPTION);//定义一个int类型的对象i,赋值成后边的那些

if(i==JOptionPane.YES_OPTION){ //如果对象i与JOptionPane对象的YES...相等,则执行下列代码

MyCanvas.pictureID=pic.getSelectedIndex()+1; //MyC....这个类的pic...这个属性等于pic.get......这个方法的结果+1

myCanvas.reLoadPictrue(); //myCanvas对象重新读取图片

Icon icon=new ImageIcon("pic/pic_"+MyCanvas.pictureID+".jpg"); //定义新的图标对象

JLabel label=new JLabel(icon); //初始新的标签(标签中加入图标)

label.setBounds(0,0,300,300); //标签设置范围

panelPreview.removeAll(); //调用pane....对象的remo...方法

panelPreview.add(label); //对象pan...调用add方法

panelPreview.repaint(); //调用。。。。对象重新画的方法

}

}

}

}

------------------------

不太熟悉java的swt和swing,自己改下吧

另外,虚机团上产品团购,超级便宜

JAVA拼图中行列怎么变化的

整个程序不就是最后的那个方法是关键。。。大概意思应该是通过 传值过来的行列值 ,然后和一开始设定的行列值比较,如果 n的值等于1 ,返回 TURE ,也就是要嘛图案移动了 一行,或者一列,

如果返回值是false 就是行列值没变

java 数字拼图 算法

要想得到最优的就需要使用广度优先搜索,九宫的所有排列有9!种,也就是362880种排法,数据量是非常大的,使用广度搜索,需要记住每一个结点的排列形式,要是用数组记录的话会占用很多的内存,可以把数据进行适当的压缩。使用DWORD形式保存,压缩形式是每个数字用3位表示,这样就是3×9=27个字节,由于8的二进制表示形式1000,不能用3位表示,使用了一个小技巧就是将8表示为000,然后用多出来的5个字表示8所在的位置,就可以用DWORD表示了。用移位和或操作将数据逐个移入,比乘法速度要快点。定义了几个结果来存储遍历到了结果和搜索完成后保存最优路径。

拼图讲解java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于拼图玩法介绍、拼图讲解java的信息别忘了在本站进行查找喔。