最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)簡單美女拼圖游戲

 更新時間:2015年03月31日 11:48:28   投稿:hebedich  
這篇文章主要介紹了java實現(xiàn)簡單美女拼圖游戲的相關(guān)資料,需要的朋友可以參考下

拼圖小游戲,學習階段。很多不足,改進了一下

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.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.util.Random;
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

class J_JPanel extends JPanel
{  
  /**
   * 
   */
  private static final long serialVersionUID = 1L;
  Image m_image;
  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;
  int i,j;
  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("關(guān)于(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, "您確定退出游戲?");
              if(a==0)
                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();
                 
                try {
                  c1.add(new J_JPanel(),BorderLayout.CENTER);
                }
                catch (IOException e1) {
                  // TODO Auto-generated catch block
                  e1.printStackTrace();
                }
            }
            if(mItem.getText().equalsIgnoreCase("關(guān)于(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};
    int k1;
    Dimension d = new Dimension(90,90);
    String s_number;
    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)
   {
      int j;
      JButton b = (JButton)e.getSource();     
      Point p = b.getLocation();
       Point p1 = null;
        for(j = -1;j < 2;j ++)
        {           
          if(p.y+j*90>283||p.y+j*90<13)
            continue;
          else
          { 
            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)
            continue;
                   
          else
          {
            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, "恭喜您成功了");
   }
/*產(chǎn)生隨機數(shù)*/
  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;
        n[i] = temp;
        for(int j = 0;j < i;j ++)
          if(n[j]==temp)
          {        
            i--;
            break;
          }             
      }
    return n;
  }
  /*判斷是否排序成功*/
  public boolean check()
  {
     Point location[] = new Point[16];
     boolean bo = false;
     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)
         count++;
       if(count==15)
         bo=true;
     }    
    return bo; 
  }
   
  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); 
  }
}

以上所述就是本文的全部內(nèi)容了,希望對大家學習java能夠有所幫助。

相關(guān)文章

  • java如何實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點

    java如何實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點

    文章講述了在Java中實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點時需要注意的三個點,包括刪除的節(jié)點包含子節(jié)點、刪除子節(jié)點和其他子節(jié)點刪除的節(jié)點不包含子節(jié)點、以及該父節(jié)點變成葉子節(jié)點,此外,文章還提到這兩件事包含在同一件事務中
    2024-12-12
  • java 讀取文件方法的總結(jié)

    java 讀取文件方法的總結(jié)

    這篇文章主要介紹了java 讀取文件方法的總結(jié)的相關(guān)資料,這里提供文件讀取5種方法并附實例,需要的朋友可以參考下
    2017-08-08
  • JavaSE中Lambda表達式的使用與變量捕獲

    JavaSE中Lambda表達式的使用與變量捕獲

    這篇文章主要介紹了JavaSE中Lambda表達式的使用與變量捕獲,Lambda表達式允許你通過表達式來代替功能接口, 就和方法一樣,它提供了一個正常的參數(shù)列表和一個使用這些參數(shù)的主體,下面我們來詳細看看,需要的朋友可以參考下
    2023-10-10
  • Java 網(wǎng)絡編程之 TCP 實現(xiàn)簡單的聊天系統(tǒng)

    Java 網(wǎng)絡編程之 TCP 實現(xiàn)簡單的聊天系統(tǒng)

    這篇文章主要介紹了Java 網(wǎng)絡編程之 TCP 實現(xiàn)簡單的聊天系統(tǒng),幫助大家更好的理解和學習Java 網(wǎng)絡編程,感興趣的朋友可以了解下
    2020-11-11
  • 詳解SpringBoot是如何整合JPA的

    詳解SpringBoot是如何整合JPA的

    借助于開發(fā)框架,我們已經(jīng)不用編寫原始的訪問數(shù)據(jù)庫的代碼,也不用調(diào)用JDBC或者連接池等諸如此類的被稱作底層的代碼,我們將從更高的層次上訪問數(shù)據(jù)庫,本章我們將詳細介紹在Springboot中使用 Spring Data JPA 來實現(xiàn)對數(shù)據(jù)庫的操作,需要的朋友可以參考下
    2021-06-06
  • java生成jar包的方法

    java生成jar包的方法

    這篇文章主要介紹了java生成jar包的方法,對Java生成jar包的具體步驟及方法進行了較為詳細的描述,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • Java拆箱與裝箱實例詳解

    Java拆箱與裝箱實例詳解

    這篇文章主要介紹了Java拆箱與裝箱,結(jié)合實例形式詳細分析了Java拆箱與裝箱相關(guān)的數(shù)據(jù)類型轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2019-11-11
  • 全面了解java基本類型和封裝類型的區(qū)別及應用

    全面了解java基本類型和封裝類型的區(qū)別及應用

    下面小編就為大家?guī)硪黄媪私鈐ava基本類型和封裝類型的區(qū)別及應用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn)代碼

    SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn),文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Java制作驗證碼的完整實例代碼

    Java制作驗證碼的完整實例代碼

    這篇文章主要給大家介紹了關(guān)于Java制作驗證碼的完整實例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論

怀宁县| 华安县| 南木林县| 项城市| 普兰店市| 霍城县| 开鲁县| 奎屯市| 肇庆市| 特克斯县| 永善县| 鄂托克旗| 沁源县| 平舆县| 衡阳市| 眉山市| 资溪县| 沁源县| 长沙县| 通榆县| 宜州市| 兴宁市| 清丰县| 青海省| 普安县| 花莲县| 麻栗坡县| 同德县| 宁武县| 柳河县| 那坡县| 南通市| 曲松县| 蓝山县| 永川市| 卢龙县| 辽宁省| 建始县| 贵南县| 门头沟区| 嵊泗县|