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

下載本文檔

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

文檔簡(jiǎn)介

1、JAVA課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)題目: “連連看”游戲程序設(shè)計(jì)小組成員: 王飛銘、毛建平、陳銀銀、黃庭威 成員分工:組長(zhǎng):王飛銘王飛銘: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格小方塊。方塊上隨機(jī)分布一些數(shù)字,數(shù)字的要

2、求是至少兩兩相同,位置隨機(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)了接口ActionListener:1)

3、 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) xiao()方法:消去方法

4、(三):界面要求:用圖形界面實(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 lianliankan implements

5、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 = ma

7、inFrame.getContentPane(); 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);

8、/灰色northPanel.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

9、rows = 0;rows < 5;rows+ ) diamondsButtoncolsrows=new JButton(String.valueOf(gridcols+1rows+1); /換下一行diamondsButtoncolsrows.setBackground(new Color(199,190,33);/顏色diamondsButtoncolsrows.setFont(new java.awt.Font("黑體", 1, 22);diamondsButtoncolsrows.setBorder(BorderFactory.createLoweredBev

10、elBorder();diamondsButtoncolsrows.addActionListener(this); centerPanel.add(diamondsButtoncolsrows); exitButton=new JButton("退出"); exitButton.setFont(new java.awt.Font("黑體", 1, 16);exitButton.setPreferredSize(new Dimension(55,30);exitButton.setBorder(BorderFactory.createRaisedBeve

11、lBorder();exitButton.setBackground(new Color(25,155,100);/顏色綠色exitButton.addActionListener(this); resetButton=new JButton("刷新"); resetButton.setFont(new java.awt.Font("黑體", 1, 16);resetButton.setPreferredSize(new Dimension(55,30);resetButton.setBorder(BorderFactory.createRaisedBe

12、velBorder();resetButton.setBackground(new Color(77, 175,100);/藍(lán)色resetButton.addActionListener(this); newlyButton=new JButton("再來一局"); newlyButton.setFont(new java.awt.Font("黑體", 1, 16);newlyButton.setPreferredSize(new Dimension(100,33);newlyButton.setBorder(BorderFactory.createRa

13、isedBevelBorder();newlyButton.setBackground(new Color(255,192,203);/粉色newlyButton.addActionListener(this); /添加了監(jiān)聽器 !當(dāng)點(diǎn)擊時(shí)候,用那個(gè)來通知southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText(); /用來計(jì)算得分?jǐn)?shù)

14、,不斷變化northPanel.add(fractionLable); mainFrame.setBounds(300,100,500,450); mainFrame.setVisible(true); public void randomBuild() /產(chǎn)生隨機(jī)數(shù)int randoms,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

15、=(int)(Math.random()*5+1); while(gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=randoms; public void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()+100); public void reload() int save = new int30; int n=0,col

16、s,rows; int grid= new int87; /雙重循環(huán),輸出二維數(shù)組!for(int i=0;i<=6;i+) for(int j=0;j<=5;j+) if(this.gridij!=0) saven=this.gridij; n+; n=n-1; this.grid=grid; while(n>=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Mat

17、h.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 estimateEven(int placeX,int placeY,JButton bz) if(press

18、Information=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 && secondButton!=firstButton) xiao(); /調(diào)用消掉的方法 public v

19、oid xiao() /相同的情況下能不能消去。仔細(xì)分析,不一條條注釋 if(x0=x &&(y0=y+1|y0=y-1) | (x0=x+1|x0=x-1)&&(y0=y) /判斷是否相鄰 remove(); else for (j=0;j<7;j+ ) if (gridx0j=0) /判斷第一個(gè)按鈕同行哪個(gè)按鈕為空 if (y>j) /如果第二個(gè)按鈕的Y坐標(biāo)大于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕左邊 for (i=y-1;i>=j;i- ) /判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕 if (gridxi!=0) k=0; break;

20、 else k=1; /K=1說明通過了第一次驗(yàn)證 if (k=1) linePassOne(); if (y<j) /如果第二個(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 (x0<x) for (n=x0;n<=x-1;n+ ) if

21、 (gridnj!=0) k=0; break; if(gridnj=0 && n=x-1) remove(); if (x0>x) for (n=x0;n>=x+1 ;n- ) if (gridnj!=0) k=0; break; if(gridnj=0 && n=x+1) remove(); for (i=0;i<8;i+ ) /列 if (gridiy0=0) if (x>i) for (j=x-1;j>=i ;j- ) if (gridjy!=0) k=0; break; else k=1; if (k=1) rowPass

22、One(); if (x<i) 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 (y0<y) for (n=y0;n<=y-1 ;n+ ) if (gridin!=0) k=0; break; if(gridin=0 && n=y-1) remove(); if (y0>y) for (n=y0;n>=y+1 ;n-) i

23、f (gridin!=0) k=0; break; if(gridin=0 && n=y+1) remove(); public void linePassOne() if (y0>j) /第一按鈕同行空按鈕在左邊 for (i=y0-1;i>=j ;i- ) /判斷第一按鈕同左側(cè)空按鈕之間有沒按鈕 if (gridx0i!=0) k=0; break; else k=2; /K=2說明通過了第二次驗(yàn)證 if (y0<j) /第一按鈕同行空按鈕在與第二按鈕之間 for (i=y0+1;i<=j ;i+) if (gridx0i!=0) k=0; brea

24、k; else k=2; public void rowPassOne() if (x0>i) for (j=x0-1;j>=i ;j- ) if (gridjy0!=0) k=0; break; else k=2; if (x0<i) 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

溫馨提示

  • 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)論