日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java實現簡單的拼圖游戲

瀏覽:28日期:2022-08-08 17:49:29

用Java來實現簡單的拼圖游戲,供大家參考,具體內容如下

首先我們看一下這個拼圖小游戲的效果圖:

java實現簡單的拼圖游戲

創建一個名稱為MedleyGame的類,該類繼承了JFrame類;然后在該類中分別聲明一個面板對象和一個按鈕對象,面板對象用來添加拼圖按鈕,按鈕對象為當前顯示空白圖片的按鈕;最后為該類編寫一個main()方法和一個構造方法MedleyGame(),并在構造方法中設置窗體的相關屬性,如窗體的標題、顯示位置、大小等。java項目結構如下:

java實現簡單的拼圖游戲

具體java代碼如下:

package pac;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.TitledBorder;public class MedleyGame extends JFrame{ private JPanel centerPanel;// 拼圖按鈕面板 private JButton emptyButton;// 空白按鈕對象 public static void main(String[] args) { try { MedleyGame frame = new MedleyGame();//創建本類的對象 frame.setVisible(true);//設置窗體為可見 }catch(Exception e) { e.printStackTrace(); } } public MedleyGame() { super();// 繼承JFrame類的構造方法 setResizable(false);// 設置窗體大小不可改變 setTitle('拼圖游戲');// 設置窗體的標題 setBounds(100, 100, 354, 435);// 設置窗體的顯示位置及大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 設置關閉窗體時退出程序 final JPanel topPanel = new JPanel();// 創建面板對象 topPanel.setBorder(new TitledBorder(null, '', TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));// 為面板添加邊框 topPanel.setLayout(new BorderLayout());// 設置面板采用邊界布局 getContentPane().add(topPanel,BorderLayout.NORTH);// 將面板添加到窗體頂部 final JLabel modelLabel = new JLabel();// 創建顯示參考圖片的標簽對象 modelLabel.setIcon(new ImageIcon('img/model.jpg'));// 設置標簽顯示的參考圖片 topPanel.add(modelLabel, BorderLayout.WEST);// 將標簽添加到面板的左側 final JButton startButton = new JButton();// 創建“下一局”按鈕對象 startButton.setText('下一局');// 設置按鈕的標簽文本 startButton.addActionListener(new StartButtonAction());// 為按鈕添加監聽器 topPanel.add(startButton, BorderLayout.CENTER);// 將按鈕添加到面板的中間 centerPanel = new JPanel();// 創建拼圖按鈕面板對象 centerPanel.setBorder(new TitledBorder(null, '', TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));// 為面板添加邊框 centerPanel.setLayout(new GridLayout(0, 3));// 設置拼圖按鈕面板采用3列的網格布局 getContentPane().add(centerPanel, BorderLayout.CENTER);// 將面板添加到窗體的中間 String[][] stochasticOrder = reorder();// 獲得網格圖片的隨機擺放順序 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 final JButton button = new JButton();// 創建拼圖按鈕對象 button.setName(row + '' + col);// 設置按鈕的名稱 button.setIcon(new ImageIcon(stochasticOrder[row][col])); // 為拼圖按鈕設置圖片 if (stochasticOrder[row][col].equals('img/22.jpg')) // 判斷是否為空白按鈕 emptyButton = button; button.addActionListener(new ImgButtonAction()); // 為拼圖按鈕添加監聽器 centerPanel.add(button);// 將按鈕添加到拼圖按鈕面板中 } } // } private String[][] reorder(){// 用來獲取網格圖片的隨機擺放順序 String[][] exactnessOrder = new String[3][3];// 網格圖片的正確擺放順序 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 exactnessOrder[row][col] = 'img/' + row + col + '.jpg'; } } String[][] stochasticOrder = new String[3][3];// 網格圖片的隨機擺放順序 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 while (stochasticOrder[row][col] == null) { // 隨機擺放順序的指定網格為空 int r = (int) (Math.random() * 3);// 取隨機行 int c = (int) (Math.random() * 3);// 取隨機列 if (exactnessOrder[r][c] != null) { // 正確擺放順序的指定網格不為空 // 將位于正確擺放順序的指定網格的圖片擺放到位于隨機擺放順序的指定網格中 stochasticOrder[row][col] = exactnessOrder[r][c]; // 將位于正確順序的指定網格設置為空 exactnessOrder[r][c] = null; } } } } return stochasticOrder; } class ImgButtonAction implements ActionListener {// 拼圖按鈕監聽器 public void actionPerformed(ActionEvent e) { String emptyName = emptyButton.getName();// 獲得空白按鈕的名稱 char emptyRow = emptyName.charAt(0);// 獲得空白按鈕所在的行 char emptyCol = emptyName.charAt(1);// 獲得空白按鈕所在的列 JButton clickButton = (JButton) e.getSource();// 獲得被點擊按鈕對象 String clickName = clickButton.getName();// 獲得被點擊按鈕的名稱 char clickRow = clickName.charAt(0);// 獲得被點擊按鈕所在的行 char clickCol = clickName.charAt(1);// 獲得被點擊按鈕所在的列 // 判斷被點擊按鈕與空白按鈕是否相臨 if (Math.abs(clickRow - emptyRow) + Math.abs(clickCol - emptyCol) == 1) { // 將被點擊按鈕的圖片移動到空白按鈕上 emptyButton.setIcon(clickButton.getIcon()); // 設置被點擊的按鈕顯示空白圖片 clickButton.setIcon(new ImageIcon('img/22.jpg')); emptyButton = clickButton;// 將被點擊的按鈕設置為空白按鈕 } } } class StartButtonAction implements ActionListener {// 下一局按鈕監聽器 public void actionPerformed(ActionEvent e) { String[][] stochasticOrder = reorder();// 獲得網格圖片的隨機擺放順序 int i = 0;// 拼圖按鈕在拼圖按鈕面板中的索引 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 JButton button = (JButton) centerPanel.getComponent(i++); // 獲得位于指定索引的拼圖按鈕 button.setIcon(new ImageIcon(stochasticOrder[row][col])); // 為拼圖按鈕設置圖片 if (stochasticOrder[row][col].equals('img/22.jpg')) // 判斷是否為空白按鈕 emptyButton = button; } } } }}

到這里代碼程序就寫完了,我們來運行一下:

java實現簡單的拼圖游戲

按步驟保存然后運行一下:

java實現簡單的拼圖游戲

結果沒問題,單擊“下一局”會重新刷新游戲,圖片會進行隨機排布:

java實現簡單的拼圖游戲

到此,一個簡簡單單的拼圖小游戲就實現了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩视频| 91超碰国产精品| 99精品视频在线观看免费播放| 日本精品在线播放| 久久在线视频免费观看| 欧美日一区二区在线观看| 亚洲欧洲日本mm| 日韩欧美精品| 久久久久久久欧美精品| 国产精品日本欧美一区二区三区| 欧美在线黄色| 亚洲区欧美区| 亚洲欧洲一区二区天堂久久| 久久精品99国产国产精| 国产在线看片免费视频在线观看| 久久精品 人人爱| 色8久久久久| 久久精品99国产精品| 亚洲精品极品| 久久成人国产| 国产精品美女久久久浪潮软件| 国产一区二区三区网| 日韩av中文在线观看| 久久伊人久久| 久久久久国产一区二区| 国产精品久久久久av蜜臀| se01亚洲视频 | 日本免费新一区视频| 午夜日韩av| 久久国产中文字幕| 国产福利一区二区三区在线播放| 激情综合五月| 国产精品毛片久久久| 日韩三区四区| 国产亚洲第一伦理第一区| 亚洲欧美日韩国产综合精品二区| 国产一区二区亚洲| 午夜久久福利| 日韩精品乱码av一区二区| 日韩精品欧美成人高清一区二区| 亚洲一二三区视频| 奇米狠狠一区二区三区| 国产精品一区二区三区美女 | 免费人成网站在线观看欧美高清| 欧美性感美女一区二区| 日韩视频一二区| 精品国产aⅴ| 狠狠躁少妇一区二区三区| 国产高潮在线| 日韩在线精品| 日韩欧美中文字幕一区二区三区 | 国产亚洲在线观看| 亚洲精品综合| 国产精品天堂蜜av在线播放| 欧美特黄一级| 国产极品一区| 日韩久久电影| 伊人久久亚洲| 日本免费一区二区视频| 久久都是精品| 欧美三区不卡| 欧美色图一区| 日本不卡一二三区黄网| 美女av在线免费看| 亚洲毛片在线| 婷婷激情图片久久| 国产精品一线| 亚洲深夜视频| 最新国产精品久久久| 精品成av人一区二区三区| 亚洲精品韩国| 激情久久婷婷| 久久香蕉精品香蕉| 黄色精品网站| 欧美a级一区二区| 男女男精品视频网| 欧美手机在线| 蜜桃精品在线| 日本强好片久久久久久aaa| 精品国产乱码久久久| 夜夜嗨网站十八久久| 欧美日一区二区三区在线观看国产免| 丝袜a∨在线一区二区三区不卡 | 在线成人动漫av| 国产一区二区三区探花| 亚洲一区欧美二区| 精品国产第一福利网站| 亚洲男女av一区二区| 精品国产欧美日韩| 日本午夜精品久久久久| 在线日韩一区| 黄色aa久久| 国产精品115| 精品视频在线一区二区在线| 国产精品极品国产中出| 欧美天堂一区二区| 国产亚洲一级| 久久精品国产99国产| 欧美日本不卡高清| 精品国产亚洲一区二区三区在线 | bbw在线视频| 午夜欧美视频| 亚洲综合三区| 蜜臀精品一区二区三区在线观看| 久久视频国产| 国产亚洲精品v| 激情欧美日韩一区| 欧美一区成人| 日韩免费看片| 亚洲伊人精品酒店| 99在线观看免费视频精品观看| 精品免费av| 一级欧美视频| 91精品成人| 精品一区91| 欧美中文高清| 在线精品一区| 最新亚洲一区| 悠悠资源网久久精品| 麻豆mv在线观看| 国产精品久久久久久av公交车| 老鸭窝亚洲一区二区三区| 久久久精品午夜少妇| 国产一区二区三区久久久久久久久| 久久亚洲人体| 亚洲福利国产| 成人在线免费观看网站| 久久精品免费看| 亚洲人成网站在线在线观看| 婷婷综合社区| 婷婷丁香综合| 国产成人免费| 欧美午夜三级| 久久久蜜桃一区二区人| 亚洲人成高清| 日韩一级欧洲| 国产一区亚洲| 91精品国产调教在线观看| 日本在线视频一区二区| 久久中文亚洲字幕| 色欧美自拍视频| 欧美日韩一区二区三区四区在线观看| 久久爱www.| 蜜桃视频在线观看一区二区| 亚洲二区在线| 日韩高清成人| 国产一区二区三区精品在线观看| 你懂的网址国产 欧美| 欧美日韩国产一区精品一区| 国产精品高清一区二区| 日韩精品亚洲aⅴ在线影院| 午夜在线精品| 亚洲永久精品唐人导航网址| 亚洲免费福利一区| 色综合www| 亚洲性色av| 欧美激情另类| 免费国产自久久久久三四区久久| 国产精品试看| 日韩精品一卡| 极品日韩av| 在线视频免费在线观看一区二区| 玖玖精品视频| 久久精品国产网站| 国产精品久久久久久av公交车| 欧美韩一区二区| 日韩av一级| 里番精品3d一二三区| 国产精品探花在线观看| 不卡专区在线| 91成人网在线观看| 国产一区二区三区免费在线| 欧美日韩调教| 美女久久久久久| 久久精品欧美一区| 亚洲一区不卡| 午夜在线视频一区二区区别| 蜜臀av一区二区在线免费观看| 日韩精品三级| 久久男人av资源站| 日本精品一区二区三区在线观看视频 | 欧美精品日日操| 手机精品视频在线观看| 亚洲精品美女| 韩国一区二区三区视频| 精品在线91| 日韩高清不卡一区二区| 国产丝袜一区| 欧美精品一区二区三区精品| 日韩免费精品| 日韩av一区二区三区| 国产欧美一区二区精品久久久| 欧美+日本+国产+在线a∨观看| 国产精品宾馆| 国产剧情一区二区在线观看| 在线日韩中文| 99视频精品全国免费| 精品一区二区男人吃奶 | 神马日本精品| 久久精品xxxxx|