版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> Java 課程設(shè)計報告</p><p><b> ?。ㄒ唬呵把裕?lt;/b></p><p> 隨著計算機(jī)的快速發(fā)展,計算機(jī)的應(yīng)用范圍越來越廣。其內(nèi)容范圍跨越了教育科研、文化事業(yè)、金融、商業(yè)、新聞出版、體育等各個領(lǐng)域,也應(yīng)用到了娛樂方面。讓人們在業(yè)余時間來放松心情。</p><p><b> ?。ǘ簝?nèi)容:&l
2、t;/b></p><p> 1:實(shí)驗(yàn)課題:連連看小游戲的開發(fā)設(shè)計</p><p> 2:實(shí)驗(yàn)任務(wù):完成游戲的運(yùn)行</p><p> 3:功能需求和分析:</p><p> 本程序?qū)⑸婕耙豢顔螜C(jī)小型連連看游戲,該程序具備以下的功能:</p><p> ?。?) 該游戲界面為方格類型,由縱6橫7的直線平行垂
3、直交叉組成,分別是6行5列方塊拼接,共有30格小方塊。方塊上隨機(jī)分布一些數(shù)字,數(shù)字的要求是至少兩兩相同,位置隨機(jī)打亂。</p><p> ?。?) 游戲規(guī)則是將相同數(shù)字的方塊連接,但要滿足只能至少單邊無阻礙呈直線趨勢連接,否則視為無效,若連接一對成功就消失于界面,繼續(xù)游戲,直到游戲結(jié)束。</p><p> (3)幫助:游戲過程中,遇到困難難以尋找下一符合要求的一對數(shù)字,可按左下按鈕重置重
4、新排列 方可繼續(xù)游戲。</p><p> ?。?)退出游戲: 可點(diǎn)擊左下方 “退出游戲”按鈕,結(jié)束游戲。</p><p> ?。?) 該游戲純屬個人小型休閑游戲。</p><p><b> ?。ㄈ捍a設(shè)計</b></p><p> 連連看java源代碼</p><p> import ja
5、vax.swing.*;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> public class lianliankan implements ActionListener</p><p><b> {</b><
6、/p><p> JFrame mainFrame; //主面板</p><p> Container thisContainer;</p><p> JPanel centerPanel,southPanel,northPanel; //子面板</p><p> JButton diamondsButton[][] = new JButt
7、on[6][5];//游戲按鈕數(shù)組</p><p> JButton exitButton,resetButton,newlyButton; //退出,重列,重新開始按鈕</p><p> JLabel fractionLable=new JLabel("0"); //分?jǐn)?shù)標(biāo)簽</p><p> JButton firstButton,se
8、condButton; //分別記錄兩次被選中的按鈕</p><p> int grid[][] = new int[8][7];//儲存游戲按鈕位置</p><p> static boolean pressInformation=false; //判斷是否有按鈕被選中</p><p> int x0=0,y0=0,x=0,y=0,fristMsg=0,se
9、condMsg=0,validateLV; //游戲按鈕的位置坐標(biāo)</p><p> int i,j,k,n;//消除方法控制</p><p> public void init(){</p><p> mainFrame=new JFrame("JKJ連連看");</p><p> thisContainer =
10、 mainFrame.getContentPane();</p><p> thisContainer.setLayout(new BorderLayout());</p><p> centerPanel=new JPanel();</p><p> southPanel=new JPanel();</p><p> northPa
11、nel=new JPanel();</p><p> thisContainer.add(centerPanel,"Center");</p><p> thisContainer.add(southPanel,"South");</p><p> thisContainer.add(northPanel,"N
12、orth");</p><p> centerPanel.setLayout(new GridLayout(6,5));</p><p> for(int cols = 0;cols < 6;cols++){</p><p> for(int rows = 0;rows < 5;rows++ ){</p><p>
13、 diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));</p><p> diamondsButton[cols][rows].addActionListener(this);</p><p> centerPanel.add(diamondsButton[cols][rows]);
14、</p><p><b> }</b></p><p><b> }</b></p><p> exitButton=new JButton("退出");</p><p> exitButton.addActionListener(this);</p>&l
15、t;p> resetButton=new JButton("重列");</p><p> resetButton.addActionListener(this);</p><p> newlyButton=new JButton("再來一局");</p><p> newlyButton.addActionLis
16、tener(this);</p><p> southPanel.add(exitButton);</p><p> southPanel.add(resetButton);</p><p> southPanel.add(newlyButton);</p><p> fractionLable.setText(String.valu
17、eOf(Integer.parseInt(fractionLable.getText())));</p><p> northPanel.add(fractionLable);</p><p> mainFrame.setBounds(280,100,500,450);</p><p> mainFrame.setVisible(true);</p>
18、;<p><b> }</b></p><p> public void randomBuild() {</p><p> int randoms,cols,rows;</p><p> for(int twins=1;twins<=15;twins++) {</p><p> random
19、s=(int)(Math.random()*25+1);</p><p> for(int alike=1;alike<=2;alike++) {</p><p> cols=(int)(Math.random()*6+1);</p><p> rows=(int)(Math.random()*5+1);</p><p> wh
20、ile(grid[cols][rows]!=0) {</p><p> cols=(int)(Math.random()*6+1);</p><p> rows=(int)(Math.random()*5+1);</p><p><b> }</b></p><p> this.grid[cols][rows]=
21、randoms;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public void fraction(){</p><p> fractionLable.
22、setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));</p><p><b> }</b></p><p> public void reload() {</p><p> int save[] = new int[30];</p>&
23、lt;p> int n=0,cols,rows;</p><p> int grid[][]= new int[8][7];</p><p> for(int i=0;i<=6;i++) {</p><p> for(int j=0;j<=5;j++) {</p><p> if(this.grid[i][j]!=
24、0) {</p><p> save[n]=this.grid[i][j];</p><p><b> n++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }<
25、/b></p><p><b> n=n-1;</b></p><p> this.grid=grid;</p><p> while(n>=0) {</p><p> cols=(int)(Math.random()*6+1);</p><p> rows=(int)(Ma
26、th.random()*5+1);</p><p> while(grid[cols][rows]!=0) {</p><p> cols=(int)(Math.random()*6+1);</p><p> rows=(int)(Math.random()*5+1);</p><p><b> }</b><
27、;/p><p> this.grid[cols][rows]=save[n];</p><p><b> n--;</b></p><p><b> }</b></p><p> mainFrame.setVisible(false);</p><p> pressIn
28、formation=false; //這里一定要將按鈕點(diǎn)擊信息歸為初始</p><p><b> init();</b></p><p> for(int i = 0;i < 6;i++){</p><p> for(int j = 0;j < 5;j++ ){</p><p> if(grid[i+
29、1][j+1]==0)</p><p> diamondsButton[i][j].setVisible(false);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&
30、gt; public void estimateEven(int placeX,int placeY,JButton bz) {</p><p> if(pressInformation==false) {</p><p><b> x=placeX;</b></p><p><b> y=placeY;</b>&
31、lt;/p><p> secondMsg=grid[x][y];</p><p> secondButton=bz;</p><p> pressInformation=true;</p><p><b> }</b></p><p><b> else {</b>&l
32、t;/p><p><b> x0=x;</b></p><p><b> y0=y;</b></p><p> fristMsg=secondMsg;</p><p> firstButton=secondButton;</p><p><b> x=plac
33、eX;</b></p><p><b> y=placeY;</b></p><p> secondMsg=grid[x][y];</p><p> secondButton=bz;</p><p> if(fristMsg==secondMsg && secondButton!=fi
34、rstButton){</p><p><b> xiao();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public v
35、oid xiao() { //相同的情況下能不能消去。仔細(xì)分析,不一條條注釋</p><p> if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判斷是否相鄰</p><p><b> remove();</b></p><p
36、><b> }</b></p><p><b> else{</b></p><p> for (j=0;j<7;j++ ) {</p><p> if (grid[x0][j]==0){ //判斷第一個按鈕同行哪個按鈕為空</p><p> if (y>j) { //如
37、果第二個按鈕的Y坐標(biāo)大于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕左邊</p><p> for (i=y-1;i>=j;i-- ){ //判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕</p><p> if (grid[x][i]!=0) {</p><p><b> k=0;</b></p><p><b&
38、gt; break;</b></p><p><b> }</b></p><p> else{ k=1; } //K=1說明通過了第一次驗(yàn)證</p><p><b> }</b></p><p> if (k==1) {</p><p> lineP
39、assOne();</p><p><b> }</b></p><p><b> }</b></p><p> if (y<j){ //如果第二個按鈕的Y坐標(biāo)小于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕右邊</p><p> for (i=y+1;i<=j ;i++ ){ //判斷
40、第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕</p><p> if (grid[x][i]!=0){</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p>
41、 else { k=1; }</p><p><b> }</b></p><p> if (k==1){</p><p> linePassOne();</p><p><b> }</b></p><p><b> }</b></p&
42、gt;<p> if (y==j ) {</p><p> linePassOne();</p><p><b> }</b></p><p><b> }</b></p><p> if (k==2) {</p><p> if (x0==x) {
43、</p><p><b> remove();</b></p><p><b> }</b></p><p> if (x0<x) {</p><p> for (n=x0;n<=x-1;n++ ) {</p><p> if (grid[n][j]!=
44、0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> if(grid[n][j]==0 && n==x-1) {</p><p&g
45、t;<b> remove();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if (x0>x) {</p><p>
46、 for (n=x0;n>=x+1 ;n-- ) {</p><p> if (grid[n][j]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p>
47、<p> if(grid[n][j]==0 && n==x+1) {</p><p><b> remove();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }&
48、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> for (i=0;i<8;i++ ) { //列</p><p> if (grid[i][y0]==0) {</p><p> if (x>
49、;i) {</p><p> for (j=x-1;j>=i ;j-- ) {</p><p> if (grid[j][y]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b&g
50、t; }</b></p><p> else { k=1; }</p><p><b> }</b></p><p> if (k==1) {</p><p> rowPassOne();</p><p><b> }</b></p>&
51、lt;p><b> }</b></p><p> if (x<i) {</p><p> for (j=x+1;j<=i;j++ ) {</p><p> if (grid[j][y]!=0) {</p><p><b> k=0;</b></p><
52、p><b> break;</b></p><p><b> }</b></p><p> else { k=1; }</p><p><b> }</b></p><p> if (k==1) {</p><p> rowPassOn
53、e();</p><p><b> }</b></p><p><b> }</b></p><p> if (x==i) {</p><p> rowPassOne();</p><p><b> }</b></p><p
54、><b> }</b></p><p> if (k==2){</p><p> if (y0==y) {</p><p><b> remove();</b></p><p><b> }</b></p><p> if (y0<
55、;y) {</p><p> for (n=y0;n<=y-1 ;n++ ) {</p><p> if (grid[i][n]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b&
56、gt; }</b></p><p> if(grid[i][n]==0 && n==y-1) {</p><p><b> remove();</b></p><p><b> }</b></p><p><b> }</b></p&
57、gt;<p><b> }</b></p><p> if (y0>y) {</p><p> for (n=y0;n>=y+1 ;n--) {</p><p> if (grid[i][n]!=0) {</p><p><b> k=0;</b></p&g
58、t;<p><b> break;</b></p><p><b> }</b></p><p> if(grid[i][n]==0 && n==y+1) {</p><p><b> remove();</b></p><p><b
59、> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
60、 }</b></p><p><b> }</b></p><p> public void linePassOne(){</p><p> if (y0>j){ //第一按鈕同行空按鈕在左邊</p><p> for (i=y0-1;i>=j ;i-- ){ //判斷第一按鈕同左側(cè)空按鈕
61、之間有沒按鈕</p><p> if (grid[x0][i]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> else { k=2
62、; } //K=2說明通過了第二次驗(yàn)證</p><p><b> }</b></p><p><b> }</b></p><p> if (y0<j){ //第一按鈕同行空按鈕在與第二按鈕之間</p><p> for (i=y0+1;i<=j ;i++){</p>
63、<p> if (grid[x0][i]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> else{ k=2; }</p>&l
64、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public void rowPassOne(){</p><p> if (x0>i) {</p><p>
65、; for (j=x0-1;j>=i ;j-- ) {</p><p> if (grid[j][y0]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p&g
66、t;<p> else { k=2; }</p><p><b> }</b></p><p><b> }</b></p><p> if (x0<i) {</p><p> for (j=x0+1;j<=i ;j++ ) {</p><p&
67、gt; if (grid[j][y0]!=0) {</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> else { k=2; }</p><p>
68、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public void remove(){</p><p> firstButton.setVisible(false);</p><
69、;p> secondButton.setVisible(false);</p><p> fraction();</p><p> pressInformation=false;</p><p><b> k=0;</b></p><p> grid[x0][y0]=0;</p><p
70、> grid[x][y]=0;</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if(e.getSource()==newlyButton){</p><p> int grid[][] =
71、 new int[8][7];</p><p> this.grid = grid;</p><p> randomBuild();</p><p> mainFrame.setVisible(false);</p><p> pressInformation=false;</p><p><b>
72、 init();</b></p><p><b> }</b></p><p> if(e.getSource()==exitButton)</p><p> System.exit(0);</p><p> if(e.getSource()==resetButton)</p><
73、p><b> reload();</b></p><p> for(int cols = 0;cols < 6;cols++){</p><p> for(int rows = 0;rows < 5;rows++ ){</p><p> if(e.getSource()==diamondsButton[cols][ro
74、ws])</p><p> estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
75、;<p> public static void main(String[] args) {</p><p> lianliankan llk = new lianliankan();</p><p> llk.randomBuild();</p><p> llk.init();</p><p><b>
76、}</b></p><p><b> }</b></p><p><b> (四):總結(jié)</b></p><p> 通過這次畢業(yè)設(shè)計,我從中學(xué)到了許多新的知識,而且通過這次畢業(yè)設(shè)計,培養(yǎng)了我綜合多門學(xué)科中的知識、迅速規(guī)劃并開發(fā)出目標(biāo)系統(tǒng)的能力,以及編程能力也有了很大的提高。另外也有許多心得體會,所謂系統(tǒng)開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java連連看課程設(shè)計
- java課程設(shè)計—連連看
- java連連看課程設(shè)計報告
- java連連看課程設(shè)計報告
- java課程設(shè)計--連連看游戲設(shè)計
- java課程設(shè)計--連連看游戲的開發(fā)
- 課程設(shè)計報告----java實(shí)現(xiàn)游戲連連看
- 連連看課程設(shè)計
- 連連看課程設(shè)計
- java課程設(shè)計說明書---連連看
- 連連看課程設(shè)計報告
- labview連連看課程設(shè)計報告
- 基于java連連看游戲
- java連連看含代碼
- 連連看c語言課程設(shè)計報告
- android課程設(shè)計連連看小游戲
- 基于java的連連看游戲設(shè)計
- jav課程設(shè)計報告書——連連看
- 連連看java小游戲畢業(yè)設(shè)計論文
- 連連看
評論
0/150
提交評論