Java如何js实现拼图游戏戏

java拼图游戏 怎么实现自动完成功能,请给指教???
[问题点数:20分,结帖人kuno321]
java拼图游戏 怎么实现自动完成功能,请给指教???
[问题点数:20分,结帖人kuno321]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长![基于Java的拼图游戏]-百度传课
基于Java的拼图游戏
9389次学习 / 满意度93.94%
第 1 章 本章的标题java实现简单美女拼图游戏
转载 &更新时间:日 11:48:28 & 投稿:hebedich
这篇文章主要介绍了java实现简单美女拼图游戏的相关资料,需要的朋友可以参考下
拼图小游戏,学习阶段。很多不足,改进了一下
演示图片:
J_Puzzle.java
import java.awt.BorderL
import java.awt.C
import java.awt.C
import java.awt.D
import java.awt.F
import java.awt.G
import java.awt.GridBagC
import java.awt.GridBagL
import java.awt.I
import java.awt.P
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.T
import java.io.F
import java.io.IOE
import java.util.R
import javax.imageio.ImageIO;
import javax.swing.ImageI
import javax.swing.JB
import javax.swing.JF
import javax.swing.JM
import javax.swing.JMenuB
import javax.swing.JMenuI
import javax.swing.JOptionP
import javax.swing.JP
import javax.swing.KeyS
class J_JPanel extends JPanel
private static final long serialVersionUID = 1L;
int showpicture=0;
@SuppressWarnings("static-access")
public J_JPanel()throws IOException
J_Puzzle a = new J_Puzzle();
if(a.changetime==-1)
showpicture = 1;
File f = new File("样图"+showpicture+".jpg");
m_image = ImageIO.read(f);
public void paintComponent(Graphics g)
g.drawImage(m_image, 0, 0, 360, 360, this);
public class J_Puzzle extends JFrame implements ActionListener
private static final long serialVersionUID = 1L;
static int changetime = 0;
Container c = getContentPane();
JButton b[] = new JButton[16];
ImageIcon ic[][] = new ImageIcon[2][15];
public J_Puzzle() throws IOException
super("拼图小游戏");
String pic_name[] = new String[15];
for(i = 0;i & 2;i ++)
for(j = 0;j & 15;j ++)
pic_name[j] = String.valueOf(j+1+i*15)+".jpg";
ic[i][j] = new ImageIcon(pic_name[j]);
JMenuBar mBar = new JMenuBar();
setJMenuBar(mBar);
int k = 0;
JMenu []m = {new JMenu("菜单(M)"),new JMenu("帮助(H)")};
char mC[][] = {{'M','H'},{'S','X','C','Z'},{'E','T'}};
JMenuItem mItem[][] = {{new JMenuItem("开始(S)"),new JMenuItem("重置(X)"),new JMenuItem("背景更换(C)"),new JMenuItem("退出(Z)")},{new JMenuItem("查看样图(E)"),new JMenuItem("关于(T)")}};
for(i = 0;i & 2;i ++)
mBar.add(m[i]);
m[i].setMnemonic(mC[0][i]);
if(i==0)k = 0;
else k = 1;
for(j = 0;j & 4-i-k;j ++)
m[i].add(mItem[i][j]);
mItem[i][j].setMnemonic(mC[i+1][j]);
mItem[i][j].setAccelerator(KeyStroke.getKeyStroke("ctrl"+mC[i+1][j]));
mItem[i][j].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
JMenuItem mItem = (JMenuItem)e.getSource();
if(mItem.getText().equalsIgnoreCase("重置(X)")||mItem.getText().equalsIgnoreCase("开始(S)"))
int location[][] = {{17,13},{17,103},{17,193},{17,283},{107,13},{107,103},{107,193},{107,283}
,{197,13},{197,103},{197,193},{197,283},{287,13},{287,103},{287,193},{287,283}};
int rd_number[] = new int[16];
rd_number = randomnumber();
for(i = 1;i & 16;i ++)
b[i].setLocation(location[rd_number[i-1]-1][0],location[rd_number[i-1]-1][1]);
else if(mItem.getText().equalsIgnoreCase("背景更换(C)"))
changetime++;
for(i = 0;i & 15;i ++)
b[i+1].setIcon(null);
b[i+1].setIcon(ic[changetime][i]);
if(changetime==1)
changetime = -1;
else if(mItem.getText().equalsIgnoreCase("退出(Z)"))
int a = JOptionPane.showConfirmDialog(null, "您确定退出游戏?");
System.exit(0);
else if(mItem.getText().equalsIgnoreCase("查看样图(E)"))
JFrame jj = new JFrame("样图");
jj.setSize(360, 360);
jj.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/3-360,
Toolkit.getDefaultToolkit().getScreenSize().height/4);
jj.setVisible(true);
Container c1 = jj.getContentPane();
c1.add(new J_JPanel(),BorderLayout.CENTER);
catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
if(mItem.getText().equalsIgnoreCase("关于(T)"))
JOptionPane.showMessageDialog(null, "简单拼图小游戏\n制作人:菜鸟");
m[0].insertSeparator(1);m[1].insertSeparator(1);
GridBagLayout gr = new GridBagLayout();
c.setLayout(gr);
int gx[] = {0,1,2,3};
int gy[] = {0,1,2,3};
Dimension d = new Dimension(90,90);
GridBagConstraints gc = new GridBagConstraints();
for(i = 1;i & 5;i ++)
if(i==4)k1=4;
else k1=5;
for(j = 1;j & k1;j ++)
gc.gridx = gx[j-1];
gc.gridy = gy[i-1];
gc.fill = GridBagConstraints.NONE;
s_number = String.valueOf(j+(i-1)*4);
b[j+(i-1)*4] = new JButton(s_number,ic[0][j+(i-1)*4-1]);
b[j+(i-1)*4].setPreferredSize(d);
b[j+(i-1)*4].setFont(new Font("宋体",Font.PLAIN,0));
gr.setConstraints(b[j+(i-1)*4],gc);
c.add(b[j+(i-1)*4]);
for(i = 1;i &16;i ++)
b[i].addActionListener(this);
public void actionPerformed(ActionEvent e)
JButton b = (JButton)e.getSource();
Point p = b.getLocation();
Point p1 =
for(j = -1;j & 2;j ++)
if(p.y+j*90&283||p.y+j*90&13)
Component a = c.getComponentAt(p.x, p.y+j*90);
if(a.getHeight()!=90)
p1 = new Point(p.x,p.y+j*90);
for(j = -1;j & 2;j ++)
if(p.x+j*90&287||p.x+j*90&17)
Component a = c.getComponentAt(p.x+j*90, p.y);
if(a.getHeight()!=90)
p1 = new Point(p.x+j*90,p.y);
if(p1!=null)
b.setLocation(p1.x, p1.y);
if(check()==true)
JOptionPane.showMessageDialog(null, "恭喜您成功了");
/*产生随机数*/
public int[] randomnumber()
Random rd = new Random();
int n[] = new int[15];
for(int i = 0 ;i & 15;i ++)
int temp = rd.nextInt(15)+1;
for(int j = 0;j &j ++)
if(n[j]==temp)
/*判断是否排序成功*/
public boolean check()
Point location[] = new Point[16];
boolean bo =
int count=0;
for(int i = 0;i & 4;i ++)
for(int j = 0;j & 4;j ++)
location[i*4+j] = new Point(17+j*90, 13+i*90);
for(int i = 0;i & 15;i ++)
if(b[i+1].getLocation().x==location[i].x&&b[i+1].getLocation().y==location[i].y)
if(count==15)
public static void main(String args[]) throws IOException
J_Puzzle app = new J_Puzzle();
app.setDefaultCloseOperation(EXIT_ON_CLOSE);
app.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/3, Toolkit.getDefaultToolkit().getScreenSize().height/4);
app.setSize(400,440);
app.setVisible(true);
app.setResizable(false);
以上所述就是本文的全部内容了,希望对大家学习java能够有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具一、创建java 窗口有两种方式
& &1.继承java JFrame窗口类,添加main方法,并创建对象,将窗口显示出来
import javax.swing.JF
public class TestFrame extends JFrame{
private static final long serialVersionUID = 6272024L;
public static void main(String[] args){
TestFrame myFrame = new TestFrame();
myFrame.setBounds(100, 100, 600, 600);//设置窗口坐标和大小
myFrame.setVisible(true);//将窗口显示出来
&2.创建类,在类里面添加JFrame对象,设置窗口显示属性为true
import javax.swing.JF
public class TestFrame {
public static void main(String[] args){
JFrame myFrame = new JFrame();
myFrame.setBounds(100, 100, 600, 600);//设置窗口坐标和大小
myFrame.setVisible(true);//将窗口显示出来
  二、创建完窗口,我们就该往里面添加相关的操作元件,按钮,输入框,菜单栏,单选按钮,多选按钮,表格等,还有按钮事件和监听事件等。
    基于我们要做个拼图游戏,用户可以选择自己本地的图片来做拼图背景,还可以选择拼图的难度,我们可以做一个选择图片的按钮和一个下拉选择按钮来选择游戏级别,也可以做简单的做几个级别的按钮来实现等级的选择,这里呢我们只是简单的做了几个级别的按钮来选择级别,大家知道原理即可,后期如果自己想优化成自己想要的方式都可以的。
& & & & & 下面是添加菜单栏的后的代码
import java.awt.I
import java.awt.MenuB
import java.awt.event.ActionE
import java.awt.event.ActionL
import javax.swing.ImageI
import javax.swing.JB
import javax.swing.JFileC
import javax.swing.JF
import javax.swing.JL
import javax.swing.JMenuB
import javax.swing.JOptionP
public class TestFrame extends JFrame{
private static final long serialVersionUID = 6272024L;
public static void main(String[] args){
TestFrame myFrame = new TestFrame();
myFrame.setVisible(true);//将窗口显示出来
public TestFrame(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭,当关闭窗口时,程序即结束
setBounds(100, 100, 600, 600);//设置窗口坐标和大小
JMenuBar menuBar = new
JMenuBar();//创建一个菜单栏
setJMenuBar(menuBar);
JButton button = new JButton("选择图片");
menuBar.add(button);
JButton button_1 = new JButton("4格模式");
menuBar.add(button_1);
JButton button_2 = new JButton("9格模式");
menuBar.add(button_2);
JButton button_3 = new JButton("16格模式");
menuBar.add(button_3);
JButton button_4 = new JButton("32格模式");
menuBar.add(button_4);
下一节呢,我们将对按钮添加上事件,并添加上显示图片的面板.效果图先给大家看下
阅读(...) 评论()

我要回帖

更多关于 js实现简单拼图游戏 的文章

 

随机推荐