JAVA課程設(shè)計(jì)—連連看最終版(共23頁)_第1頁
JAVA課程設(shè)計(jì)—連連看最終版(共23頁)_第2頁
JAVA課程設(shè)計(jì)—連連看最終版(共23頁)_第3頁
JAVA課程設(shè)計(jì)—連連看最終版(共23頁)_第4頁
JAVA課程設(shè)計(jì)—連連看最終版(共23頁)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上JAVA課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)題目: “連連看”游戲程序設(shè)計(jì)小組成員: 王飛銘、毛建平、陳銀銀、黃庭威 成員分工:組長:王飛銘王飛銘:actionPerformed():重來一局按鈕的響應(yīng)事件及remove()判斷移去方法毛建平:xiao()消去方法、estimateEven()方法陳銀銀:init()方法:游戲主界面和main()方法實(shí)現(xiàn)黃庭威:randomBuild() 產(chǎn)生隨機(jī)數(shù)方法、fraction()刷新方法(一):內(nèi)容:1:功能需求和分析: (1) 該游戲界面為:數(shù)字方格類型,由6豎7橫的直線平行垂直交叉而組成,分別是6行5列凹方塊拼接,共有30格小方塊。方塊上

2、隨機(jī)分布一些數(shù)字,數(shù)字的要求是至少兩兩相同,位置隨機(jī)打亂。 (2) 游戲規(guī)則是:將相同數(shù)字的方塊連接,但要滿足只能至少單邊無阻礙呈直線趨勢(shì)連接,否則視為無效,如果一對(duì)數(shù)字連接成功,那么就會(huì)消失在界面,并且分?jǐn)?shù)標(biāo)簽會(huì)加分,繼續(xù)游戲,直到游戲結(jié)束。 (3)幫助項(xiàng)目:在游戲過程中,如果出現(xiàn)沒有可以連接的數(shù)字對(duì)時(shí)候,可按界面下方按鈕刷新重新排列,便可以可繼續(xù)游戲。 (4)退出游戲: 可以鼠標(biāo)點(diǎn)擊 “退出”按鈕,結(jié)束游戲。 (5) 再來一局:本局結(jié)束或者中途不想繼續(xù)玩本局,可以點(diǎn)擊界面下方的再來一局,系統(tǒng)會(huì)自動(dòng)再次重新開始。(二):主要方法:首先我們定義了一個(gè)lianliankan類,實(shí)現(xiàn)了接口Acti

3、onListener:1) init()方法:實(shí)現(xiàn)游戲主界面;2) randomBuild()方法:用來產(chǎn)生游戲按鈕上的隨機(jī)數(shù);3) fraction()方法:游戲界面最上面用來加分;4) reload()方法:用來刷新,重載,窗體界面;5) estimateEven()方法:判斷按鈕數(shù)字是否滿足消去的條件 linePassOne()方法:判斷第一按鈕同左右側(cè)空按鈕之間rowPassOne()方法:判斷第一按鈕同列空按鈕與第二按鈕;6) actionPerformed(ActionEvent e)方法:用來實(shí)現(xiàn)重來一局按鈕的響應(yīng)事件;7) main(String args)方法:主函數(shù);8)

4、xiao()方法:消去方法(三):界面要求:用圖形界面實(shí)現(xiàn),參考下系統(tǒng)流程圖如下開始初始化設(shè)置開始界面畫表格初始化數(shù)值游戲游戲是否結(jié)束顯示游戲結(jié)束畫面游戲結(jié)束NOYes(四):代碼設(shè)計(jì)package 數(shù)字版;/*本游戲是連連看,上面出現(xiàn)的都是數(shù)字,點(diǎn)擊兩個(gè)相鄰的或者之間沒有第三個(gè)的,便可以消去。如果不能消除完,便可以按重列,這樣會(huì)把剩余的重新排列。便可以繼續(xù)玩了,或者您可以按重置,重新再來一局!*/import javax.swing.*; /調(diào)用圖形界面類布局import java.awt.*; import java.awt.event.*; public class lianlianka

5、n implements ActionListener /繼承一個(gè)監(jiān)聽器JFrame mainFrame; /游戲主面板 用布局管理器Container thisContainer; /一個(gè)容器JPanel centerPanel,southPanel,northPanel; /子面板 JButton diamondsButton = new JButton65;/游戲按鈕數(shù)組 JButton exitButton,resetButton,newlyButton; /退出,重列,重新開始按鈕 JLabel fractionLable=new JLabel(0); /分?jǐn)?shù)標(biāo)簽 顯示您玩游戲得了多

6、少分?。㎎Button firstButton,secondButton; /分別記錄兩次被選中的按鈕 int grid = new int87;/儲(chǔ)存游戲按鈕位置 static boolean pressInformation=false; /判斷是否有按鈕被選中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; /游戲按鈕的位置坐標(biāo) int i,j,k,n;/消除方法控制 public void init() mainFrame=new JFrame(數(shù)字版連連看); thisContainer = mainFrame.get

7、ContentPane(); thisContainer.setLayout(new BorderLayout();/setLayout()設(shè)置用戶界面上的屏幕組件的格式布局,是java圖形界面編程的常用方法。此處是方位布局centerPanel=new JPanel(); /中間部分(用來放游戲顯示內(nèi)容)southPanel=new JPanel(); /下面部分(用來放退出,重列,重新開始按鈕)northPanel=new JPanel(); /上面部分(用來記錄得分情況)centerPanel.setBackground(new Color(145,145,44);/灰色northPan

8、el.setBackground(new Color(245,252,252);/顏色redthisContainer.add(centerPanel,Center); thisContainer.add(southPanel,South); thisContainer.add(northPanel,North); centerPanel.setLayout(new GridLayout(6,5); /設(shè)置游戲圖標(biāo)for(int cols = 0;cols 6;cols+) for(int rows = 0;rows 5;rows+ ) diamondsButtoncolsrows=new J

9、Button(String.valueOf(gridcols+1rows+1); /換下一行diamondsButtoncolsrows.setBackground(new Color(199,190,33);/顏色diamondsButtoncolsrows.setFont(new java.awt.Font(黑體, 1, 22);diamondsButtoncolsrows.setBorder(BorderFactory.createLoweredBevelBorder();diamondsButtoncolsrows.addActionListener(this); centerPane

10、l.add(diamondsButtoncolsrows); exitButton=new JButton(退出); exitButton.setFont(new java.awt.Font(黑體, 1, 16);exitButton.setPreferredSize(new Dimension(55,30);exitButton.setBorder(BorderFactory.createRaisedBevelBorder();exitButton.setBackground(new Color(25,155,100);/顏色綠色exitButton.addActionListener(th

11、is); resetButton=new JButton(刷新); resetButton.setFont(new java.awt.Font(黑體, 1, 16);resetButton.setPreferredSize(new Dimension(55,30);resetButton.setBorder(BorderFactory.createRaisedBevelBorder();resetButton.setBackground(new Color(77, 175,100);/藍(lán)色resetButton.addActionListener(this); newlyButton=new

12、JButton(再來一局); newlyButton.setFont(new java.awt.Font(黑體, 1, 16);newlyButton.setPreferredSize(new Dimension(100,33);newlyButton.setBorder(BorderFactory.createRaisedBevelBorder();newlyButton.setBackground(new Color(255,192,203);/粉色newlyButton.addActionListener(this); /添加了監(jiān)聽器 !當(dāng)點(diǎn)擊時(shí)候,用那個(gè)來通知southPanel.ad

13、d(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText(); /用來計(jì)算得分?jǐn)?shù),不斷變化northPanel.add(fractionLable); mainFrame.setBounds(300,100,500,450); mainFrame.setVisible(true); public void randomBuild() /產(chǎn)生隨機(jī)數(shù)int ran

14、doms,cols,rows; for(int twins=1;twins=15;twins+) randoms=(int)(Math.random()*25+1); for(int alike=1;alike=2;alike+) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=randoms; public voi

15、d fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()+100); public void reload() int save = new int30; int n=0,cols,rows; int grid= new int87; /雙重循環(huán),輸出二維數(shù)組!for(int i=0;i=6;i+) for(int j=0;j=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gr

16、idcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=saven; n-; mainFrame.setVisible(false); pressInformation=false; /這里一定要將按鈕點(diǎn)擊信息歸為初始 init(); for(int i = 0;i 6;i+) for(int j = 0;j 5;j+ ) if(gridi+1j+1=0) diamondsButtonij.setVisible(false); public void estim

17、ateEven(int placeX,int placeY,JButton bz) if(pressInformation=false) x=placeX; y=placeY; secondMsg=gridxy; secondButton=bz; pressInformation=true; else x0=x; y0=y; fristMsg=secondMsg; firstButton=secondButton; x=placeX; y=placeY; secondMsg=gridxy; secondButton=bz; if(fristMsg=secondMsg & secondButto

18、n!=firstButton) xiao(); /調(diào)用消掉的方法 public void xiao() /相同的情況下能不能消去。仔細(xì)分析,不一條條注釋 if(x0=x &(y0=y+1|y0=y-1) | (x0=x+1|x0=x-1)&(y0=y) /判斷是否相鄰 remove(); else for (j=0;jj) /如果第二個(gè)按鈕的Y坐標(biāo)大于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕左邊 for (i=y-1;i=j;i- ) /判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕 if (gridxi!=0) k=0; break; else k=1; /K=1說明通過了第一次驗(yàn)證 if (k=1

19、) linePassOne(); if (yj) /如果第二個(gè)按鈕的Y坐標(biāo)小于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕右邊 for (i=y+1;i=j ;i+ ) /判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕 if (gridxi!=0) k=0; break; else k=1; if (k=1) linePassOne(); if (y=j ) linePassOne(); if (k=2) if (x0=x) remove(); if (x0x) for (n=x0;nx) for (n=x0;n=x+1 ;n- ) if (gridnj!=0) k=0; break; if(gridnj

20、=0 & n=x+1) remove(); for (i=0;ii) for (j=x-1;j=i ;j- ) if (gridjy!=0) k=0; break; else k=1; if (k=1) rowPassOne(); if (xi) for (j=x+1;j=i;j+ ) if (gridjy!=0) k=0; break; else k=1; if (k=1) rowPassOne(); if (x=i) rowPassOne(); if (k=2) if (y0=y) remove(); if (y0y) for (n=y0;ny) for (n=y0;n=y+1 ;n-)

21、if (gridin!=0) k=0; break; if(gridin=0 & n=y+1) remove(); public void linePassOne() if (y0j) /第一按鈕同行空按鈕在左邊 for (i=y0-1;i=j ;i- ) /判斷第一按鈕同左側(cè)空按鈕之間有沒按鈕 if (gridx0i!=0) k=0; break; else k=2; /K=2說明通過了第二次驗(yàn)證 if (y0j) /第一按鈕同行空按鈕在與第二按鈕之間 for (i=y0+1;ii) for (j=x0-1;j=i ;j- ) if (gridjy0!=0) k=0; break; else k=2; if (x0i) for (j=x0+1;j=i ;j+ ) if (gridjy0!=0) k=0; break; else k=2; public void remove() firstButton.setVisible(false); secondButton.setVisible(false); fraction(); pressInformation=false; k=0; gridx0y0=0; gridxy=0; public void actionPerformed(ActionEvent e) i

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論