电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

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

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

具體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();//創(chuàng)建本類的對象 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();// 創(chuàng)建面板對象 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();// 創(chuàng)建顯示參考圖片的標簽對象 modelLabel.setIcon(new ImageIcon('img/model.jpg'));// 設置標簽顯示的參考圖片 topPanel.add(modelLabel, BorderLayout.WEST);// 將標簽添加到面板的左側 final JButton startButton = new JButton();// 創(chuàng)建“下一局”按鈕對象 startButton.setText('下一局');// 設置按鈕的標簽文本 startButton.addActionListener(new StartButtonAction());// 為按鈕添加監(jiān)聽器 topPanel.add(startButton, BorderLayout.CENTER);// 將按鈕添加到面板的中間 centerPanel = new JPanel();// 創(chuàng)建拼圖按鈕面板對象 centerPanel.setBorder(new TitledBorder(null, '', TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));// 為面板添加邊框 centerPanel.setLayout(new GridLayout(0, 3));// 設置拼圖按鈕面板采用3列的網(wǎng)格布局 getContentPane().add(centerPanel, BorderLayout.CENTER);// 將面板添加到窗體的中間 String[][] stochasticOrder = reorder();// 獲得網(wǎng)格圖片的隨機擺放順序 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 final JButton button = new JButton();// 創(chuàng)建拼圖按鈕對象 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()); // 為拼圖按鈕添加監(jiān)聽器 centerPanel.add(button);// 將按鈕添加到拼圖按鈕面板中 } } // } private String[][] reorder(){// 用來獲取網(wǎng)格圖片的隨機擺放順序 String[][] exactnessOrder = new String[3][3];// 網(wǎng)格圖片的正確擺放順序 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];// 網(wǎng)格圖片的隨機擺放順序 for (int row = 0; row < 3; row++) {// 遍例行 for (int col = 0; col < 3; col++) {// 遍例列 while (stochasticOrder[row][col] == null) { // 隨機擺放順序的指定網(wǎng)格為空 int r = (int) (Math.random() * 3);// 取隨機行 int c = (int) (Math.random() * 3);// 取隨機列 if (exactnessOrder[r][c] != null) { // 正確擺放順序的指定網(wǎng)格不為空 // 將位于正確擺放順序的指定網(wǎng)格的圖片擺放到位于隨機擺放順序的指定網(wǎng)格中 stochasticOrder[row][col] = exactnessOrder[r][c]; // 將位于正確順序的指定網(wǎng)格設置為空 exactnessOrder[r][c] = null; } } } } return stochasticOrder; } class ImgButtonAction implements ActionListener {// 拼圖按鈕監(jiān)聽器 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 {// 下一局按鈕監(jiān)聽器 public void actionPerformed(ActionEvent e) { String[][] stochasticOrder = reorder();// 獲得網(wǎng)格圖片的隨機擺放順序 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實現(xiàn)簡單的拼圖游戲

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

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

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

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

到此,一個簡簡單單的拼圖小游戲就實現(xiàn)了。

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

標簽: Java
相關文章:
主站蜘蛛池模板: 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 杭州|上海贴标机-百科 | 山东艾德实业有限公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 保镖公司-私人保镖-深圳保镖公司【环宇兄弟保镖】 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司| ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 杭州双螺杆挤出机-百科| 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 威客电竞(vk·game)·电子竞技赛事官网 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 |