版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java拼圖小游戲 2015/1/5 利用利用java的圖形用戶界面設(shè)計(jì),設(shè)計(jì)簡單的的圖形用戶界面設(shè)計(jì),設(shè)計(jì)簡單的拼圖游戲拼圖游戲一、實(shí)訓(xùn)要求二、程序流程圖三、實(shí)現(xiàn)的游戲功能三、實(shí)現(xiàn)的游戲功能附加功能:附加功能: 可選擇可選擇從從預(yù)設(shè)的圖片中選擇圖片預(yù)設(shè)的圖片中選擇圖片拼圖拼圖三、實(shí)現(xiàn)的游戲功能游戲結(jié)束界面游戲結(jié)束界面要實(shí)現(xiàn)游戲的上述功能,很顯然有以下幾個(gè)關(guān)鍵問題要考慮:四、算法設(shè)計(jì)1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?如何實(shí)現(xiàn)圖片的移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志?如何判斷游戲結(jié)束的標(biāo)志?5.如何實(shí)現(xiàn)圖片的切換選擇?如何實(shí)
2、現(xiàn)圖片的切換選擇?1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?如何實(shí)現(xiàn)圖片的移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志如何判斷游戲結(jié)束的標(biāo)志?5.如何實(shí)現(xiàn)圖片的切換選擇?如何實(shí)現(xiàn)圖片的切換選擇?五、核心代碼分析cell=new Cell9;/ 創(chuàng)建九個(gè)方格創(chuàng)建九個(gè)方格Icon icon;/ 聲明圖標(biāo)聲明圖標(biāo)for (int i = 0; i 3; i+) /循環(huán)為循環(huán)為9個(gè)方格加載圖片,并初使化個(gè)方格加載圖片,并初使化坐標(biāo),形成三行三列坐標(biāo),形成三行三列for(int j=0;j3;j+)icon=new ImageIcon(“pictru
3、e/pic_”+pictureID+“_”+(i*3+j+1)+“.jpg”);/ 根據(jù)指定根據(jù)指定URL創(chuàng)建創(chuàng)建圖標(biāo)圖標(biāo)celli*3+j=new Cell(icon);/ 創(chuàng)建方格在方格中加載圖片創(chuàng)建方格在方格中加載圖片celli*3+j.setLocation(j*100,i*100);/ 設(shè)置方格的位置設(shè)置方格的位置this.add(celli*3+j);/ 面板添加方格面板添加方格(1)如何加載圖片?1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?如何實(shí)現(xiàn)圖片的移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志如何判斷游戲結(jié)束的標(biāo)志?5.如何
4、實(shí)現(xiàn)圖片的切換選擇?如何實(shí)現(xiàn)圖片的切換選擇?五、核心代碼分析關(guān)鍵代碼:int direction=(int)(Math.random()*4);/隨機(jī)隨機(jī)產(chǎn)生一產(chǎn)生一個(gè)個(gè)0-3的的數(shù)字,對(duì)應(yīng)空方格的上下數(shù)字,對(duì)應(yīng)空方格的上下左右左右移動(dòng)移動(dòng)(2)如何實(shí)現(xiàn)拼圖的隨機(jī)排列?1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?如何實(shí)現(xiàn)圖片的移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志如何判斷游戲結(jié)束的標(biāo)志?5.如何實(shí)現(xiàn)圖片的切換選擇?如何實(shí)現(xiàn)圖片的切換選擇?五、核心代碼分析(3)如何實(shí)現(xiàn)圖片的移動(dòng)? 通過鼠標(biāo)點(diǎn)擊相鄰圖片,所點(diǎn)擊的圖片與空白按通過鼠標(biāo)點(diǎn)擊相
5、鄰圖片,所點(diǎn)擊的圖片與空白按鈕互換位置,完成拼圖的移動(dòng)。鈕互換位置,完成拼圖的移動(dòng)。具體代碼具體代碼(3)如何實(shí)現(xiàn)圖片的移動(dòng)?1.鼠標(biāo)事件鼠標(biāo)事件public void mousePressed(MouseEvent event) /方格的鼠標(biāo)按下方格的鼠標(biāo)按下事件事件Cell button=(Cell)event.getSource();/ 獲得鼠標(biāo)按的方格按鈕獲得鼠標(biāo)按的方格按鈕int x1=button.getBounds().x;/得到所單擊方格的坐標(biāo)得到所單擊方格的坐標(biāo)int y1=button.getBounds().y;int x2=cellNull.getBounds().x;
6、/得到空方格的坐標(biāo)得到空方格的坐標(biāo)int y2=cellNull.getBounds().y;(3)如何實(shí)現(xiàn)圖片的移動(dòng)?1.鼠標(biāo)事件鼠標(biāo)事件if(x1=x2&y1-y2=100)/如果滿足條件則進(jìn)行交換button.move(UP,100);/ 方格向上移動(dòng)else if(x1=x2 & y1-y2=-100)button.move(DOWN,100);/ 方格向下移動(dòng)else if(x1-x2=100 & y1=y2)button.move(LEFT,100);/ 方格向左移動(dòng)else if(x1-x2=-100 & y1=y2)button.move(RIG
7、HT,100);/ 方格向右移動(dòng)elsereturn;/不滿足就不進(jìn)行任何處理(3)如何實(shí)現(xiàn)圖片的移動(dòng)?1.鼠標(biāo)事件鼠標(biāo)事件cellNull.setLocation(x1,y1);/ 重新設(shè)置空方格的重新設(shè)置空方格的位置位置this.repaint();(3)如何實(shí)現(xiàn)圖片的移動(dòng)?public void move(String direction,int sleep)/方格的移動(dòng)if(direction=UP)/ 方格向上移動(dòng)this.setLocation(this.getBounds().x,this.getBounds().y-100);else if(direction=DOWN)/ 方
8、格向下移動(dòng)this.setLocation(this.getBounds().x,this.getBounds().y+100);else if(direction=LEFT)/ 方格向左移動(dòng)this.setLocation(this.getBounds().x-100,this.getBounds().y);else/ 方格向右移動(dòng)this.setLocation(this.getBounds().x+100,this.getBounds().y); 2.move方法方法1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?如何實(shí)現(xiàn)圖片的
9、移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志如何判斷游戲結(jié)束的標(biāo)志?5.如何實(shí)現(xiàn)圖片的切換選擇?如何實(shí)現(xiàn)圖片的切換選擇?五、核心代碼分析public boolean isFinish()/判斷是否拼合成功for(int i=0;i8;i+)int x=celli.getBounds().x;int y=celli.getBounds().y;if(y/100*3+x/100!=i)/判斷是否每一個(gè)位置都恢復(fù)到初始位置return false; return true; (4)如何判斷游戲結(jié)束的標(biāo)志?1.如何加載圖片?如何加載圖片?2.如何實(shí)現(xiàn)拼圖的隨機(jī)排列?如何實(shí)現(xiàn)拼圖的隨機(jī)排列?3.如何實(shí)現(xiàn)圖片的移動(dòng)?
10、如何實(shí)現(xiàn)圖片的移動(dòng)?4.如何判斷游戲結(jié)束的標(biāo)志如何判斷游戲結(jié)束的標(biāo)志?5.如何實(shí)現(xiàn)圖片的切換選擇?如何實(shí)現(xiàn)圖片的切換選擇?五、核心代碼分析public void actionPerformed(ActionEvent arg0) /對(duì)三個(gè)按鈕事件的處理Button button=(Button)arg0.getSource();/ 獲得事件按鈕源if(button=start)/ 如果是開始按鈕myCanvas.Start();/ 調(diào)用圖片方格打亂方法(5)如何實(shí)現(xiàn)圖片的切換?else if(button=preview)/ 如果是查看事件if(button.getLabel()=預(yù)覽)/ 如
11、果按鈕標(biāo)簽為預(yù)覽 container.remove(myCanvas);/ 容器移除圖片面板 container.add(panelPreview);/ 容器添加預(yù)覽標(biāo)簽 panelPreview.updateUI(); / 不用調(diào)整大小就可以出現(xiàn)新增刪的組件 container.repaint();/ 重繪 button.setLabel(返回);/ 設(shè)置按鈕標(biāo)簽(5)如何實(shí)現(xiàn)圖片的切換?elsecontainer.remove(panelPreview);/ 容器移除預(yù)覽面板container.add(myCanvas);/ 容器添加圖片面板container.repaint();/ 重繪
12、button.setLabel(預(yù)覽);/ 設(shè)置按鈕標(biāo)簽(5)如何實(shí)現(xiàn)圖片的切換?else if(button=set)/如果是選擇按鈕,修改所選圖片Choice pic = new Choice();/ 創(chuàng)建選擇器pic.add(小貓);/ 添加列表項(xiàng)pic.add(小豬); pic.add(云);pic.add(QQ);pic.add(卡通);pic.add(花);(5)如何實(shí)現(xiàn)圖片的切換?int i=JOptionPane.showConfirmDialog(this,pic, 選擇圖片, JOptionPane.OK_CANCEL_OPTION);/彈出對(duì)話框if(i=JOptionPane.YES_OPTION)/ 選擇對(duì)話框的確定按鈕MyCanvas.pictureID=pic.getSelectedIndex()+1;/ 獲得列表項(xiàng)的編號(hào)myCanvas.reLoadPictrue();/ 圖片重載(5)如何實(shí)現(xiàn)圖片的切換?Icon icon=new
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年四川城市職業(yè)學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年寧德職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026浙江衢州市衛(wèi)生健康委員會(huì)衢州市第三醫(yī)院招聘第一批編外人員3人參考考試題庫及答案解析
- 2026年安徽中澳科技職業(yè)學(xué)院單招綜合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年浙江建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026重慶日?qǐng)?bào)報(bào)業(yè)集團(tuán)所屬企業(yè)招聘2人參考考試試題及答案解析
- 2026年湛江幼兒師范??茖W(xué)校高職單招職業(yè)適應(yīng)性測試模擬試題及答案詳細(xì)解析
- 2026年金肯職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026年成都銀杏酒店管理學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年遼寧軌道交通職業(yè)學(xué)院單招綜合素質(zhì)考試參考題庫含詳細(xì)答案解析
- 新媒體藝術(shù)的發(fā)展歷程及藝術(shù)特征
- 醫(yī)保違規(guī)行為分類培訓(xùn)課件
- 講課學(xué)生數(shù)學(xué)學(xué)習(xí)成就
- 醫(yī)療器械法規(guī)對(duì)互聯(lián)網(wǎng)銷售的限制
- 西葫蘆栽培技術(shù)要點(diǎn)
- 系桿拱橋系桿預(yù)應(yīng)力施工控制要點(diǎn)
- 高中學(xué)生學(xué)籍表模板(范本)
- 三亞市海棠灣椰子洲島土地價(jià)格咨詢報(bào)告樣本及三洲工程造價(jià)咨詢有限公司管理制度
- 常見磁性礦物的比磁化系數(shù)一覽表
- 高中心理健康教育-給自己點(diǎn)個(gè)贊教學(xué)課件設(shè)計(jì)
- 薪酬管理論文參考文獻(xiàn),參考文獻(xiàn)
評(píng)論
0/150
提交評(píng)論