java实现九宫格拼图游戏

本文实例为大家分享了java实现九宫格拼图游戏的具体代码,供大家参考,具体内容如下

设计步骤:

先将框架构思出来,首先将拼图游戏的雏形实现,即一个界面,九个按钮,按钮上的图片显示出自己想要的图片。

(1)其次构思移动版块的问题,想到按钮直接互换是极为麻烦的一件事,所以采用更换按钮上的图片。按钮类上有两个属性,a[9]表示按钮的位置,b[9]表示按钮上图片的编号, 空白快图片编号为8标记,点击按钮之后,点击事件得到点击的块数在哪(1-9),if -else判断相邻是否为标记的空白快。方法简单但是代码量长。

(2)在完成了上述游戏的灵魂——移动算法之后。接下来便是加入一个判断是否胜利的算法了。在上一段中我们提到有两个按钮属性 a,b来记录信息,在未打乱之前,ab对应,值相等。那么我们在每一次的鼠标点击拼图按钮之后进行一次判断,是否每一个a[i]都对应着自身b[i]值,如果是的话就给出胜利信号。

(3)完成了结束条件后,我们再设计一个开始游戏,打乱拼图的算法。一开始先考虑了随机置入图片的方法,但是在八数码问题中,随机置入的话会存在奇偶性,有一半的几率是没有解法的。如果采用此法,我不得不再写一个判断随机打乱之后是否有解的算法。这样会非常麻烦,并且与我之前写的版块内容不兼容。由于我们写好了移动算法,所以我们随机移动可移动的版块若干次,次数足够多的情况下便可以做到打乱拼图的效果,并且保证此法必然有解。

(4)在第三步完成之后,新增了一个点击锁click,初始化为零。当且仅当有效移动之后click自增1。在结束条件中新增一个点击锁是否大于零的判断条件,这样我们就可以避免在游戏未开始时随机点击一个方块就给出胜利。

(5)添加还原图片功能。在每一次完成游戏之后,或者感觉太难想从头来过,按照人们的思维,总想点击一键还原。还原的算法有智能的搜索算法,有广度,深度,a+等,输入人工智能中的八数码问题,还有最简单的直接“重置”,我采用代码量少的重置,留下八数码当成提示功能。思想是先将按钮显示的图片重置,再还原按钮的两个属性。

(5)在上述功能实现之后,此设计初具备一个拼图游戏的功能了。在兴趣之下想做提示功能,本意想做出根据当前局面。搜索出最佳的步骤并提示,但是对广度搜索的学习不够,只能算出最短步骤次数,还不会将最短路径回溯显示出来。所以只能做出简单的提示,搜索的过程显示在eclipse控制台。

以上便是本程序的设计步骤,源代码于下,可直接运行,图片位置需要自己设置。

package 拼图;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

import javax.imageio.ImageIO;
import javax.swing.*;
class Palace{                           //算出最短步数
 String start;//初始字符串
 String end;//目标字符串
 int result=-1;//最终结果
 public int Palacea(String shuju){
  this.start = shuju;
  end = "12345678.";
  HashMap<String, Integer> memery = new HashMap<>(100000);//用于保存之前状态,key代表状态字符串,value代表到key状态所用的最小步数
  Queue<String> process = new LinkedList<String>();//bfs用到的队列
  memery.put(start,0);//放入初始字符串
  process.offer(start);//放入初始字符串
  while(result==-1){//当没有搜索到结果是继续搜索
   String cur = process.poll();
   char[] a=cur.toCharArray();
   int count=0;
   for(int b=0;b<a.length;b++) {
    count++;
    System.out.print(a[b]+"  ");
    if(count%3==0)System.out.println();
    }
   System.out.println("++++++++++++++");
   int tmp = 0;
   while(cur.charAt(tmp)!='.'){
    tmp++;
   }
   int[] d = {-3,3,-1,1};//方向数组,分别表示上下左右
   for(int i=0;i<4;i++){
    int p = tmp+d[i];
    int chengji = tmp*p;
    if(p>-1&&p<9&&chengji!=6&&chengji!=30){        //2-->3,3-->2,5-->6,6-->5跨行了,要去掉
     String change = cur;
     char c = cur.charAt(p);
     change = cur.replace('.', '*');//交换String中的两个字符,借助中间字符‘*'
     change = change.replace(c,'.');
     change = change.replace('*',c);
     if(change.equals(end)){//找到了目标状态
      result = memery.get(cur)+1;
     }
     if(!memery.containsKey(change)){//如果之前没有这种状态
      memery.put(change,memery.get(cur)+1);
      process.add(change);//存入队列
     }
    }
   }
  }
  System.out.println(result);
       return result;
 }
}
class tu extends JButton {
int ID;
int nowID;
 int IMAGEWIDTH;
 int IMAGEHEIGHT;
int nowx;
int nowy;
Icon icon;
public tu(Icon icon) {
 this.setIcon(icon);
}
public tu(Icon icon, int id, int imagewidth, int height,int nowx,int nowy,int nowid)//构造函数初始化,传入两个参数,一个是图像的图标,一个是该按钮的数组ID
{
 this.setIcon(icon);
    this.ID = id;
    this.nowID = nowid;
    this.IMAGEWIDTH = imagewidth;
    this.IMAGEHEIGHT = height;
    this.setSize(IMAGEWIDTH, IMAGEHEIGHT);
    this.nowx=nowx;
    this.nowy=nowy;
    this.icon=icon;
}
public Icon geticon() {
    return icon;
}
public int getID() {
    return ID;
}
public int getnowID() {
    return nowID;
}
public int getx()
{
    return this.getBounds().x;
}

public int gety()
{
    return this.getBounds().y;
}
public int getnowx()
{
    return nowx;
}
public int getnowy()
{
    return nowy;
}
}

 class pintus extends JFrame  implements  MouseListener,  ActionListener {
 private JButton strat,strat1,strat2,yuan,restart,save,readsave,tishi;      //按钮
 private JLabel raw;      //按钮
 private tu tu[]=new tu[9];              //标签
 private tu tuz[]=new tu[9];
 JLabel tishikuan;                         //标签
 private int ID;
 ImageIcon icon1=null;
 int jishu=0;
 JPanel j1=new JPanel();//新建中间容器
 JPanel j2=new JPanel();
 JPanel j3=new JPanel();
 public pintus() {
  BufferedImage tutu=null;
  ImageIcon icon = null;

  BufferedImage  bufnew=null;
  int w=0;
  int h=0;
  int m = 0;
   //jframe设置基本属性
  setTitle("05林-拼图游戏");           

  添加布局
  j1.setLayout(new GridLayout(3, 3));  //设置中间流式布局
  //j2.setLayout(new GridLayout(1, 4));  //设置中间流式布局
  ///图片切割并存入
   try {
    tutu = ImageIO.read(new File("C:\\Users\\czldd\\eclipse-workspace\\拼图\\src\\拼图\\原.png"));
    w=tutu.getWidth()/3;
    h=tutu.getHeight()/3;
     setSize(tutu.getWidth(),tutu.getHeight()+175);        // //jframe设置大小属性
     //System.out.println(w+" "+h);
  } catch (IOException e) {
         System.out.println("错误");
   e.printStackTrace();
  }

   for(int i = 0; i < 3 ;i++)
         {
             for(int j = 0; j < 3; j++)
             {
              m=j*3+i;
           bufnew = tutu.getSubimage(w*i, h*j, w, h);
                 icon = new ImageIcon(bufnew);
                 tu [m]=new tu(icon,m,w,h,i,j,m);
                 tu [m].setLocation(w*j, h*i);
                 tuz [m]=new tu(icon,m,w,h,i,j,m);
                 tuz [m].setLocation(w*j, h*i);
                 if(m==8)
                 {
                  icon=new ImageIcon("C:\\Users\\czldd\\eclipse-workspace\\拼图\\src\\拼图\\白.png");
                  tu[m]=new tu(icon,m,w,h,i,j,m);
                  tuz[m]=new tu(icon,m,w,h,i,j,m);
                  }
             }
         }

  j2.add(strat=new JButton("简单"));
  j2.add(strat1=new JButton("中等"));
  j2.add(strat2=new JButton("复杂"));
  j2.add(yuan=new JButton("还原"));
  j2.add(tishi=new JButton("提示"));
  //j2.add(restart=new JButton("重置"));
  //j2.add(save=new JButton("保存进度"));
  //j2.add(readsave=new JButton("读取进度"));
  icon=new ImageIcon("C:\\Users\\czldd\\eclipse-workspace\\拼图\\src\\拼图\\小.png");
  j2.add(raw=new JLabel(icon));
  strat.addActionListener(this);
  strat1.addActionListener(this);
  strat2.addActionListener(this);
  yuan.addActionListener(this);
  tishi.addActionListener(this);
  j3.add(tishikuan=new JLabel("系统提示:请选择游戏模式"));
   icon1=(ImageIcon) tu[8].geticon();
         zairu();
  //

   setLocationRelativeTo(null);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setVisible(true);
   setResizable(false);
 }
 /设置按钮
 public void zairu() {
 for(int a=0;a<9;a++)                                //输入图片
 {
  j1.add(tu[a]);
  tu [a].addMouseListener(this);                //设置鼠标事件
 }
 add(j1,BorderLayout.CENTER);
 add(j2,BorderLayout.PAGE_START);
 add(j3,BorderLayout.PAGE_END);
 }

 public void qingkong() {
     removeAll();
 }

 public void moves(tu t) {

  int a=t.getnowID();
  icon1=new ImageIcon("C:\\Users\\czldd\\eclipse-workspace\\拼图\\src\\拼图\\白.png");
  if(a==0) {
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+1].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}   }
  if(a==1) {
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+1].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a-1].icon=t.icon;t.icon=icon1;jishu++;} }
  if(a==2) {
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a-1].icon=t.icon;t.icon=icon1;jishu++;} }
  if(a==3) {
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;      tu[a-3].icon=t.icon;t.icon=icon1; jishu++;}
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+1].icon=t.icon;t.icon=icon1;jishu++;}     }
  if(a==4) {
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;      tu[a-3].icon=t.icon;t.icon=icon1; jishu++;}
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+1].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;   tu[a-1].icon=t.icon;t.icon=icon1;jishu++;}  }
  if(a==5) {
 if(tu[a+3].getID()==8) {  tu[a+3].setIcon(t.geticon()); tu[a+3].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;       tu[a-3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;   tu[a-1].icon=t.icon;t.icon=icon1;jishu++;}       }
  if(a==6) {
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;       tu[a-3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;     tu[a+1].icon=t.icon;t.icon=icon1;jishu++;}    }
  if(a==7) {
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;       tu[a-3].icon=t.icon;t.icon=icon1;jishu++;}
 if(tu[a+1].getID()==8) {  tu[a+1].setIcon(t.geticon()); tu[a+1].ID=t.getID();   t.setIcon(icon1);t.ID=8;    tu[a+1].icon=t.icon;t.icon=icon1; jishu++;}
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;   tu[a-1].icon=t.icon;t.icon=icon1;jishu++;}  }
  if(a==8) {
 if(tu[a-3].getID()==8) {  tu[a-3].setIcon(t.geticon()); tu[a-3].ID=t.getID();   t.setIcon(icon1);t.ID=8;      tu[a-3].icon=t.icon;t.icon=icon1;jishu++; }
 if(tu[a-1].getID()==8) {  tu[a-1].setIcon(t.geticon()); tu[a-1].ID=t.getID();   t.setIcon(icon1);t.ID=8;   tu[a-1].icon=t.icon;t.icon=icon1;jishu++;}  }
  }
 /图片移动事件
   public void mouseClicked(MouseEvent e){            //设置执行事件
  tu t =(tu) e.getSource();
  System.out.println("原本的位置:"+t.getID()+"  点击的位置:"+t.getnowID());
  int a=t.getnowID();
        moves(t);
  String s="系统提示:游戏继续"+",点击的块数目标位置为"+t.getID();
    tishikuan.setText(s);

        if(win()&&jishu!=0) {jishu=0;JOptionPane.showConfirmDialog(null, "你赢了! " ,"拼图",JOptionPane.CANCEL_OPTION); }      

 }
   private boolean win() {
    int sum=0;
  for(int s=0;s<9;s++)
  {
   if(tu[s].ID==tu[s].nowID)
    sum++;

  }
  if(sum==9) {
  tishikuan.setText("系统提示:你赢了");
  return true;}
  else
  {

  return false;
  }
 }
 public void actionPerformed(ActionEvent e) {        //设置执行事件}
   if(e.getSource()==strat) {
    luan();
    String s="系统提示:游戏开始,简单模式";
       tishikuan.setText(s);
    for(int a=0;a<9;a++) {
     if(tu[a].ID==8) {System.out.println(0);continue;}
        System.out.println(tu[a].ID+1);}

   }
   if(e.getSource()==strat1) {
    luan1();
    String s="系统提示:游戏开始,中等模式";
       tishikuan.setText(s);
    for(int a=0;a<9;a++) {
     if(tu[a].ID==8) {System.out.println(0);continue;}
    System.out.println(tu[a].ID+1);}
   }
   if(e.getSource()==strat2) {
    luan2();
    String s="系统提示:游戏开始,复杂模式";
       tishikuan.setText(s);
    for(int a=0;a<9;a++) {
     if(tu[a].ID==8) {System.out.print(".");continue;}
    System.out.print(tu[a].ID+1);}
   }
   if(e.getSource()==yuan) {
    String s="系统提示:已经还原,请重新选择游戏模式";
       tishikuan.setText(s);
                 try {
     huanyuan();
    } catch (IOException e1) {
     // TODO 自动生成的 catch 块
     e1.printStackTrace();
    }

   }
   if(e.getSource()==tishi) {
    if(jishu==0) {
     String s="系统提示:系统利用广度搜索算出解法,需要0步";
        tishikuan.setText(s);
    }
    else
    {
    String d = "" ;
    for(int a=0;a<9;a++) {
    if(tu[a].ID==8)
    {d = d+".";continue;}
    d = d+Integer.toString(tu[a].ID+1);
    }

    System.out.println(d);
    Palace palace = new Palace();

    String s="系统提示:系统利用广度搜索算出解法,需要"+palace.Palacea(d)+"步";
     tishikuan.setText(s);

    }
   }
   } 

 private void huanyuan() throws IOException {
  jishu=0;
  for(int a=0;a<9;a++) {        //显示图
   tu[tu[a].ID].setIcon(tu[a].geticon());

  }
   for(int i = 0; i < 9 ;i++) {             //还原图
      tu[i].icon=tuz[i].icon;
   }
    for(int i = 0; i < 9 ;i++) {              //还原标记点
     tu[i].ID=tu[i].nowID=i;

   }
 }
                                                        //打乱顺序!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   private void luan() {
  for(int a=0;a<20;a++)
  {
   int b=(int) (Math.random()*9);
   moves(tu[b]);
  }
    }
   private void luan1() {
  for(int a=0;a<100;a++)
  {
   int b=(int) (Math.random()*9);
   moves(tu[b]);
  }
    }
   private void luan2() {
  for(int a=0;a<10000;a++)
  {
   int b=(int) (Math.random()*9);
   moves(tu[b]);
  }
    }
   ///
   public void setIcon(String file, JButton iconButton) {
         ImageIcon icon = new ImageIcon(file);
         Image temp = icon.getImage().getScaledInstance(iconButton.getWidth(),
                 iconButton.getHeight(), icon.getImage().SCALE_DEFAULT);
         icon = new ImageIcon(temp);
         iconButton.setIcon(icon);
     }

   @Override
  public void mouseEntered(MouseEvent e) {
   // TODO 自动生成的方法存根

  }
  @Override
  public void mouseExited(MouseEvent e) {
   // TODO 自动生成的方法存根

  }
  @Override
  public void mousePressed(MouseEvent e) {
   // TODO 自动生成的方法存根

  }
  @Override
  public void mouseReleased(MouseEvent e) {
   // TODO 自动生成的方法存根

  }
/
 public static void main(String[] args) {
  try {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  } catch(Exception e) {}
   SwingUtilities.invokeLater(new Runnable() {
    public void run() {
     new pintus();
    }
    });
  }

}

运行:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现拼图游戏

    本文实例为大家分享了java实现拼图游戏的具体代码,供大家参考,具体内容如下 游戏说明: 设计一款拼图游戏,要求点击图片按钮,实现图片按钮的移动,直到每一个按钮都到达指定位置游戏终止退出. 游戏设计思路: 1.准备一张图像文件: 2.创建N个按钮图标,每个按钮图标里面存入一张分割后的图片信息: 3.创建一个空白按钮用于和图标按钮交换位置,达到移动的效果: 4.乱序,将按钮图标乱序,完成游戏效果: 5.创建一个面板添加游戏开始和游戏结束按钮: 6.设计游戏窗口: 游戏界面设计基本结构: 代码实现:

  • java实现拼图小游戏

    一个简单的拼图小游戏,供大家参考,具体内容如下 1.首先设计视图面板. 2.添加所需要的图片按钮. 3.最主要的是设计监听事件,添加图片的监听按钮,设定移动空白图片周围的按钮. 4.判断是否成功 . package sxy; import java.awt.Choice; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEv

  • Java制作智能拼图游戏原理及代码

    今天突发奇想,想做一个智能拼图游戏来给哄女友. 需要实现这些功能 第一图片自定义 第二宫格自定义,当然我一开始就想的是3*3 4*4 5*5,没有使用3*5这样的宫格. 第三要实现自动拼图的功能,相信大家知道女人耍游戏都不是很厉害,所以这个自动拼图功能得有. 其他什么暂停.排行就不写了! 现在重点问题出来了 要实现自动拼图功能似乎要求有点高哦!计算机有可不能像人一样只能: 先追究下本质 拼图游戏其实就是排列问题: 排列有这么一个定义:在一个1,2,...,n的排列中,如果一对数的前后位置与大小顺

  • java实现简单美女拼图游戏

    拼图小游戏,学习阶段.很多不足,改进了一下 演示图片: J_Puzzle.java import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.GridBagConstraints; import java.a

  • java控制台实现拼图游戏

    本文实例为大家分享了java控制台实现拼图游戏的具体代码,供大家参考,具体内容如下 1.首先对原始的拼图进行多次无规律的移动,将拼图打乱 2.然后进行游戏,在游戏移动同时对拼图顺序进行判断 ①如果拼图成功,则跳出循环,结束游戏: ②如果拼图失败,陷入死循环,继续移动拼图,直至拼图成功为止. import java.util.Random; import java.util.Scanner; public class GrameOfPingTuTest{ private static Scanne

  • JavaFx实现拼图游戏

    最近学习JavaFx,发现网上大概只有官方文档可以查阅,学习资料较少,写个拼图游戏供记录.. 大概说一下思路: 1.面板的构建:面板采用GridPane,方便3*3的图片布局. 2.每个小格子中的图片当然不是一张张手工切好的,利用imageview.setViewPort(Rectangle2D 2d)的方法进行切割. 3.再来说鼠标点击时图片的移动,这时候以里面的空格子为中心,不以鼠标点击的那个事件源为中心,这样可以避免走弯路(当时我是有一种柳暗花明的感觉.). 4.鼠标点击后空格子和其周围带

  • Java游戏开发拼图游戏经典版

    游戏介绍: 拼图游戏是一款经典的益智游戏,游戏难度分为 简单.正常.困难 三种难度,分别对应3*3,4*4,5*5布局,游戏开始前图片被随机打乱,空块位于最右下角,玩家通过点击空块周围图片或者按键方式对图片和空块进行相互交换,直到所有图片都回到原位即为游戏胜利. 本次制作的拼图游戏运行界面如下: 使用素材文件夹: 链接: https://pan.baidu.com/s/10qE7yq6IwU-vWprvc5Axgw   提取码: p16e 游戏设计的思路 对拼图界面的图像信息可以采用二维数组ma

  • java实现九宫格拼图游戏

    本文实例为大家分享了java实现九宫格拼图游戏的具体代码,供大家参考,具体内容如下 设计步骤: 先将框架构思出来,首先将拼图游戏的雏形实现,即一个界面,九个按钮,按钮上的图片显示出自己想要的图片. (1)其次构思移动版块的问题,想到按钮直接互换是极为麻烦的一件事,所以采用更换按钮上的图片.按钮类上有两个属性,a[9]表示按钮的位置,b[9]表示按钮上图片的编号, 空白快图片编号为8标记,点击按钮之后,点击事件得到点击的块数在哪(1-9),if -else判断相邻是否为标记的空白快.方法简单但是代

  • Android实现九宫格拼图游戏

    经常有同学问到,使用Android能不能开发游戏呢?能开发那些游戏呢?由于操作系统和开发语言局限,一般开发安卓手机游戏,我们很少使用其自带语言开发.而是使用指定编译器和语言完成,能够使界面更流畅,用户体验感更好.但是对于一些常见小游戏,使用JAVA语言开发运行,还是不在话下的,那在本篇博客中,我将给大家简单介绍一下,九宫格拼图游戏的开发过程,基本逻辑和思路我将在代码的注释中体现. 九宫格拼图游戏,相信大家小时候都玩过.大概逻辑是,将1张图采用3*3的方式,分成9部分,将第3行3列的小图取出,打乱

  • jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】

    本文实例讲述了jQuery+vue.js实现的九宫格拼图游戏.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } /*#piclist { width: 600p

  • Java实现Android拼图游戏设计过程解析

    目录 1.项目介绍 2.项目原理 3.项目设计 4.项目实现 5.获取布局 6.准备图片 7.初始化item 8.游戏图片的切换 9.游戏胜利的判断 10.游戏封面 1.项目介绍 这是一款基于 Java 开发的移动端安卓小游戏——大家来拼图 2.项目原理 把选定的一张图片切分很多份,先是 33 格式,在一定的时间内点击格子交换使图形拼成一张完整的图片就算闯关成功,这样关卡也很容易设计,33:44:55:6*6: 3.项目设计 我们需要一个容器,可以放这些图片的块块,为了方便,我们准备使用Rela

  • JS实现九宫格拼图游戏

    本文实例为大家分享了JS实现九宫格拼图游戏的具体代码,供大家参考,具体内容如下 <!doctype html> <html> <head>  <meta charset="UTF-8">  <title>九宫格拼图</title>  <style>   *{    padding: 0;    margin: 0;    border: 0;   }   /* *是通配符,给所有的元素去掉默认样式,因为

  • Java实现简易拼图游戏的方法详解

    目录 效果展示 游戏结构 实现代码 效果展示 介绍:游戏共有五张图片可以选择,分成了4 X 4 十六个方格,点击开始就可以开始游戏.游戏运行的截图如下: 游戏结构 实现代码 代码如下:MedleyGame.java类 package game.medleyPicture; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.even

  • js实现九宫格拼图小游戏

    效果如下: 代码如下: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>九宫格拼图</title> <style> *{ padding: 0; margin: 0; border: 0; } /* *是通配符,给所有的元素去掉默认样式,因为有的浏览器会默认加上一些样式,这可能会给布局带来问题 */ body{ width: 100

  • 基于jquery实现九宫格拼图小游戏

    九宫格拼图小游戏是小时候比较常见的小游戏之一.闲着无聊就用js简单写了一个. 游戏的玩法很简单.九宫格中有八个小图片.随机打乱之后,将八张小图片拼接成一个完整的图. html代码 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <style> body{ border: 0; } .out{ width: 606px; height: 606px; margin: 0 aut

随机推荐