版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
"高級語言程序設計〔2〕"課程設計任務書題目圖片連連看游戲程序學生****專業(yè)班級設計內(nèi)容與要求【問題描述】圖片連連看游戲是利用java圖形用戶界面設計而設計的圖片連連看游戲界面。它的游戲規(guī)則就是選擇一對內(nèi)容一樣的圖案進展連線,但此連線不能穿跨其他圖案。連線的轉折點不能多于兩個,如果符合規(guī)定則消除此對圖案。如果游戲找不到可連接消除的圖案,可以通過鼠標點擊重列按鈕讓它重新排列圖案,也可以通過鼠標重新開場新的游戲,時間完畢后游戲自動完畢,還可以通過鼠標退出游戲。【軟件功能】1利用awt實現(xiàn)良好的游戲界面,游戲界面盡可能美觀。2游戲開場時,能產(chǎn)生隨機數(shù)字和隨機位置以及限制的時間。3在按動鼠標和鍵盤時,游戲能玩起來,即能響應鼠標事件。4能消去滿足條件的含有一樣數(shù)字的圖片。5能重列圖片順序。6能選擇退出游戲和重新再來一局?!靖疽蟆?用二維數(shù)組存放游戲按鈕的位置坐標。
2用二維數(shù)組存放隨機位置。3調用按鈕方法將圖片添加到游戲按鈕上。4要求用戶界面采用圖形用戶界面,響應鼠標事件。5利用awt實現(xiàn)良好的GUI界。6用GridLayout類以矩形網(wǎng)格形式和BorderLayout類以界面布局形式對容器中的組件進展布局。7源程序中要有充分的注釋,報告中要有詳細的流程圖和文字材料。8運行的結果以及圖形用戶界面要進展屏幕拷貝,插入報告中。【提交成果】1“"高級語言程序設計(2)"課程設計任務書〞和“"高級語言程序設計(2)"課程設計報告〞打印件各一份;2先將上面兩項內(nèi)容的word文檔,通過電子交到指導教師,待許可后,打印裝袋。起止時間2012年12月24日至2012年12月30日指導教師簽名2012年12月22日系〔教研室〕主任簽名2012年12月22日學生簽名2012年12月25日"高級語言程序設計〔2〕"課程設計報告專業(yè):班級:**:**:完成日期:指導教師一、程序設計說明書【設計題目】圖片連連看游戲程序【問題描述】圖片連連看游戲是利用java圖形用戶界面設計而設計的圖片連連看游戲界面。它的游戲規(guī)則就是選擇一對內(nèi)容一樣的圖案進展連線,但此連線不能穿跨其他圖案。連線的轉折點不能多于兩個,如果符合規(guī)定則消除此對圖案。如果游戲找不到可連接消除的圖案,可以通過鼠標點擊重列按鈕讓它重新排列圖案,也可以通過鼠標重新開場新的游戲,時間完畢后游戲自動完畢,還可以通過鼠標退出游戲?!拒浖δ堋?利用awt實現(xiàn)良好的游戲界面,游戲界面盡可能美觀。2游戲開場時,能產(chǎn)生隨機數(shù)字和隨機位置以及限制的時間。3在按動鼠標和鍵盤時,游戲能玩起來,即能響應鼠標事件。4能消去滿足條件的含有一樣數(shù)字的圖片。5能重列圖片順序。6能選擇退出游戲和重新再來一局?!舅惴ㄋ枷搿吭跈z驗兩個圖片能否消掉的時候,要讓兩個圖片同時滿足兩個條件才行,就是兩者配對并且連線成功。分3種情況:這三種情況都需要三個檢測,這三個檢測分別檢測一條直路經(jīng)。這樣就會有三條路經(jīng)。假設這三條路經(jīng)上都是空按鈕,則就剛好是三種直線〔兩個轉彎點〕把兩個按鈕連接起來了。(1)、相鄰(2)、假設不相鄰的先在第一個按鈕的同行找一個空按鈕。1.找到后看第二個按鈕橫向到這個空按鈕所在的列是否有按鈕。2.沒有的話再看第一個按鈕到與它同行的那個空按鈕之間是否有按鈕。3.沒有的話,再從與第一個按鈕同行的那個空按鈕豎向到與第二個按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了可以消了.(3)、假設(2)失敗后,再在第一個按鈕的同列找一個空按鈕。1.找到后看第二個按鈕豎向到這個空按鈕所在的行是否有按鈕2.沒有的話,再看第一個按鈕到與它同列的那個空按鈕之間是否有按鈕。3.沒有的話,再從與第一個按鈕同列的那個空按鈕橫向到與第二個按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。假設以上三步都失敗,說明這兩個按鈕不可以消去兩圖能相連的所有情況:【類的設計】圖片連連看游戲程序中只有一個類,類名為LianLianKan,該類實現(xiàn)了接口ActionListener;該類總共有十三個方法,他們的功能分別是:init()初始化;createImgBtn()傳進兩個String類型的參數(shù),返回帶有數(shù)字和圖片的按鈕;randomBuild(),產(chǎn)生十五對隨機的數(shù)字;fraction()計算得分;reload()將游戲按鈕重列;estimateEven()傳進兩個int型和一個utton型的三個參數(shù)(分別是擊中的按鈕位置坐標和按鈕),選中按鈕信息的存儲與操作;*iao()消去符合游戲規(guī)則的一樣的兩個按鈕;linePassOne()在第一按鈕同行有空按鈕的條件下判斷第二轉折點出現(xiàn)的情況;rowPassOne()在第一按鈕同列有空按鈕的條件下判斷第二轉折點出現(xiàn)的情況;remove()將一樣的兩個按鈕消去;actionPerformed()實現(xiàn)按鈕事件的監(jiān)聽;timerDemo()時間提示;main()主方法;【用戶界面】【程序技巧】1. 程序采用圖形用戶界面,簡單大方,且易于操作;2. 連連看圖片采用大家熟悉的圖片,能激起玩家的游戲興趣;3. 游戲功能較為齊全,可實現(xiàn)退出、重列和下一局的功能,重列功能可對游戲中剩余的圖片進展重新排列,使游戲繼續(xù)進展,下一局功能可以使游戲重新開場4. 游戲具有倒計時功能,能夠控制游戲時限,使游戲具有一定難度,倒計時完畢時顯示“gameover〞5. 游戲可以統(tǒng)計玩家的游戲得分【模塊劃分及調用關系】根據(jù)對連連看游戲的分析,該游戲可分化為三個模塊:算法模塊、界面顯示模塊、菜單控制模塊。調用關系:rowPassOne()linePassOne()remove()*iao()init()timerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild()rowPassOne()linePassOne()remove()*iao()init()timerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild()新建LianLianKan對象【模塊流程圖】主模塊流程圖:連連看游戲連連看游戲用戶界面模塊菜單模塊算法模塊用戶界面模塊菜單模塊算法模塊用戶界面模塊流程圖:Button下一局Button重列Button退出Label:您的得分Label:Fraction(分數(shù))Label:TimeLabel:剩余時間EastPanelBorderLayout布局WestPanelBorderLayout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanelBorderLayout布局Button下一局Button重列Button退出Label:您的得分Label:Fraction(分數(shù))Label:TimeLabel:剩余時間EastPanelBorderLayout布局WestPanelBorderLayout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanelBorderLayout布局CCenterPanelGriLayout布局〔7*8〕算法模塊流程圖:消去是否直線相連消去是否相鄰消去是否直線相連是否相鄰是否為同一圖片消去不能消去是否在一條豎線是否在一條橫線是否在同一位置消去是否直線相連消去是否相鄰消去是否直線相連是否相鄰是否為同一圖片消去不能消去是否在一條豎線是否在一條橫線是否在同一位置否是是否是否否是是是否是否否當兩圖不在一條直線上,則以兩圖在*\、Y方向的延長線上去找兩個點,使其能連成直線當兩圖不在一條直線上,則以兩圖在*\、Y方向的延長線上去找兩個點,使其能連成直線是否不能消去不能消去消去消去【運行說明】將25個圖片和LianLianKan.java文件存在同一個文件夾里javacLianLianKan.javajavaLianLianKan程序上機調試報告【語法錯誤及其排除】將圖片加載在按鈕上,并在調用按鈕時會出現(xiàn)隨機的圖片時出現(xiàn)錯誤,最后創(chuàng)立了一個方法uttoncreateImgBtn(Stringing,Stringt*t),作用是傳進兩個String類型的參數(shù),返回帶有數(shù)字和圖片的按鈕,方法中的主要內(nèi)容有ImageIconimage=newImageIcon(getClass().getResource(ing));uttonbutton=newutton(t*t,image);通過調用這個方法就可以將圖片與按鈕固定在一起。加載計時器時出現(xiàn)錯誤,即如果只在初始方法init()里調用timerDemo()方法時,在點擊重列按鈕或者下一局按鈕時,時間提示里的時間是兩次時間相摻雜的;改為只在main()方法里調用timerDemo()方法,在點擊重列按鈕時沒有問題,但在點擊下一局按鈕時,時間還是相摻雜著出現(xiàn);最后改為在main()方法里調用timerDemo()方法的同時在actionPerformed()方法里將if(e.getSource()==newlyButton) {intgrid[][]=newint[8][7];this.grid=grid; randomBuild();mainFrame.setVisible(false);pressInformation=false; Init(); }改為:if(e.getSource()==newlyButton) {flag=true;intgrid[][]=newint[8][7];this.grid=grid; randomBuild();mainFrame.setVisible(false);pressInformation=false; init(); timerDemo(); }【算法錯誤及其排除】在編輯randomBuild()方法產(chǎn)生隨機的兩兩一樣的數(shù)字時,程序中會出現(xiàn)并非兩兩一樣的圖片,達不到預期的效果,后改為在randomBuild()方法里添加如下這樣的程序:while(grid[cols][rows]!=0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); }程序才正確。在編輯程序時,定義了一個grid數(shù)組,用來存放游戲按鈕的位置,剛開場定義的是6行5列,結果玩游戲時,周邊的按鈕不能被消去,后將數(shù)組改為8行7列時才可以,這樣按鈕周邊的一圈就是空按鈕,周邊的按鈕就可以被消去。程序測試結果【測試數(shù)據(jù)】1、程序運行結果:2、點擊重列按鈕結果:3、點擊下一局:4、游戲完畢界面:【輸出結果】【收獲及體會】通過這次圖片連連看游戲的設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正的提高自己的水平,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,并且還發(fā)現(xiàn)了自己的許多缺乏之處,對以前所學過的知識理解得不夠深刻,掌握得不夠結實。同時在這次的設計中也小小的體驗了一下做工程的感受。我完成了這次JAVA課程設計,不過這只是我學習路上的驛站。我相信我在未來的學習中會記住從本次課程設計中所學到的東西,并將它用到未來的學習中去。源程序代碼importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Container;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Timer;importjava.util.TimerTask;importjava*.swing.ImageIcon;importjava*.swing.utton;importjava*.swing.JFrame;importjava*.swing.JLabel;importjava*.swing.JPanel;publicclassLianLianKanimplementsActionListener{//主面板 JFramemainFrame; //面板容器 ContainerthisContainer; //子面板 JPanelcenterPanel,southPanel,northPanel,westPanel,eastPanel; //游戲按鈕數(shù)組 uttondiamondsButton[][]=newutton[6][5]; //開場,退出,重列,重新開場按鈕 uttone*itButton,resetButton,newlyButton;// uttonstartButton; //分數(shù)標簽 JLabelfractionLable=newJLabel("0"); //時間標簽 JLabeltime=newJLabel(""); //分別記錄兩次被選中的按鈕uttonfristButton,secondButton;//儲存游戲按鈕位置intgrid[][]=newint[8][7];//判斷是否有按鈕被擊中staticbooleanpressInformation=false;//被選中的兩個游戲按鈕的位置坐標(*0,y0),(*,y)int*0=0,y0=0,*=0,y=0;//兩個被選中按鈕上相應的數(shù)字 intfristMsg=0,secondMsg=0; inti,j,k,n;// ints=0; finalTimert=newTimer(); Colorb=Color.orange; Colorg=Color.cyan; Colorm=Color.pink;// Colorc=Color.blue; booleanflag; //初始化 publicvoidinit() {//創(chuàng)立主面板,并命為連連看 mainFrame=newJFrame("連連看"); thisContainer=mainFrame.getContentPane();// thisContainer.setBackground(c); /** *把thisContainer劃分為Center、South、North三個區(qū)域 *North區(qū)域添加分數(shù) *Center區(qū)域添加游戲按鈕 *South區(qū)域添加退出、重列、下一局等按鈕 */ thisContainer.setLayout(newBorderLayout()); centerPanel=newJPanel(); centerPanel.setBackground(b); southPanel=newJPanel(); southPanel.setBackground(g); northPanel=newJPanel(newBorderLayout());// northPanel.setBackground(m); westPanel=newJPanel(); westPanel.setBackground(m); eastPanel=newJPanel(); eastPanel.setBackground(m);// Labeltime=newLabel("剩余時間:"); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); northPanel.add(westPanel,"West"); northPanel.add(eastPanel,"Center"); westPanel.add(BorderLayout.WEST,newJLabel("剩余時間:")); westPanel.add(BorderLayout.EAST,time); eastPanel.add(BorderLayout.CENTER,newJLabel("您的得分:")); eastPanel.add(BorderLayout.EAST,fractionLable); eastPanel.add(fractionLable,"Center");// northPanel.add(fractionLable);/** *eastPanel.add(newJLabel("您的得分:"));*eastPanel.add(fractionLable); *westPanel.add(BorderLayout.WEST,newJLabel("剩余時間:")); * westPanel.add(BorderLayout.EAST,newJLabel(time)); *northPanel.add(westPanel); */ //把CenterPanel區(qū)域設置為網(wǎng)格布局 centerPanel.setLayout(newGridLayout(6,5)); for(intcols=0;cols<6;cols++) { for(introws=0;rows<5;rows++) { if(grid[cols+1][rows+1]!=0) {//給指定按鈕添加圖片 diamondsButton[cols][rows]=createImgBtn(grid[cols+1][rows+1]+".jpg",String.valueOf(grid[cols+1][rows+1])); } else {//當指定按鈕為空時傳空字符串即照片為傳的照片為空 diamondsButton[cols][rows]=createImgBtn("",String.valueOf(grid[cols+1][rows+1])); }/** * else * { * //當指定按鈕為空時將其定義為新的按鈕 * diamondsButton[cols][rows]=newutton(); * }*/ diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } }// startButton=newutton("開場");// startButton.addActionListener(this); e*itButton=newutton("退出"); e*itButton.addActionListener(this); resetButton=newutton("重列"); resetButton.addActionListener(this); newlyButton=newutton("下一局"); newlyButton.addActionListener(this);// southPanel.add(startButton); southPanel.add(e*itButton); southPanel.add(resetButton); southPanel.add(newlyButton); /** *為該標簽設置一個文本字符串 *該字符串為標簽字符串所顯示的文本字符串作為有符號的十進制整數(shù)為參數(shù)的字符串 */ fractionLable.setTe*t(String.valueOf(Integer.parseInt(fractionLable.getTe*t()))); mainFrame.setBounds(180,10,800,650);//設置主面板的位置和大小 mainFrame.setVisible(false); mainFrame.setVisible(true);// centerPanel.setVisible(false);// timerDemo(); } //創(chuàng)立帶有圖片的按鈕 publicuttoncreateImgBtn(Stringing,Stringt*t) {//根據(jù)給定名稱的資源創(chuàng)立一個ImageIcon。 ImageIconimage=newImageIcon(getClass().getResource(ing)); uttonbutton=newutton(t*t,image); //設置文本〔即數(shù)字〕相對于圖標的垂直位置為底及水平位置為中心 button.setVerticalTe*tPosition(utton.BOTTOM); button.setHorizontalTe*tPosition(utton.CENTER); returnbutton; } /** *產(chǎn)生游戲中的隨機數(shù)字 *數(shù)字至少兩兩一樣 */ publicvoidrandomBuild() { intrandoms,cols,rows; for(inttwins=1;twins<=15;twins++) { randoms=(int)(Math.random()*25+1);//隨機產(chǎn)生一個1~25的數(shù)字 for(intalike=1;alike<=2;alike++) {//產(chǎn)生兩個隨機的坐標來存放同一個數(shù)字 cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]!=0)//防止出現(xiàn)重復的坐標 { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=randoms; } } } //計算得分 publicvoidfraction() { fractionLable.setTe*t(String.valueOf(Integer.parseInt(fractionLable.getTe*t())+100)); } //重列 publicvoidreload() { intsave[]=newint[30]; intn=0,cols,rows; intgrid[][]=newint[8][7];// time.setVisible(false); for(inti=0;i<=6;i++) { for(intj=0;j<=5;j++) { if(this.grid[i][j]!=0) {//將未消去的圖片的數(shù)字放在save數(shù)組中 save[n]=this.grid[i][j]; n++; } } } n=n-1; this.grid=grid;//把grid數(shù)組全部初始化為零 while(n>=0) {//將剩下的所有圖片數(shù)字重新隨機放在數(shù)組grid中 cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]!=0)//防止出現(xiàn)重復的坐標 { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=save[n]; n--; } mainFrame.setVisible(false); //將按鈕點擊信息歸為初始 pressInformation=false; init(); for(inti=0;i<6;i++) { for(intj=0;j<5;j++) {if(grid[i+1][j+1]==0) {//將消去的按鈕設置為不可見 diamondsButton[i][j].setVisible(false); } } } } //選中按鈕信息的存儲與操作 publicvoidestimateEven(intplace*,intplaceY,uttonbz) { if(pressInformation==false) {//如果第一個按鈕未被擊中,則將傳來的按鈕坐標賦給(*,y) *=place*; y=placeY; fristMsg=grid[*][y];//將按鈕上的數(shù)字賦給fristMsg fristButton=bz;//將(place*,placey)位置上的按鈕bz賦給fristButton pressInformation=true;//將按鈕點擊信息設置為true } else {/** *如果第一個按鈕被擊中,則將第一個按鈕坐標賦給(*0,y0) *將fristButton按鈕賦給secondButton按鈕 *將傳來的按鈕坐標賦給坐標〔*,y〕 *如果當兩個不同的按鈕上的數(shù)字相等時則調用remove()函數(shù)消去 */ *0=*; y0=y; secondMsg=fristMsg;//將擊中的第一個按鈕上的數(shù)字賦給第二個按鈕 secondButton=fristButton;//將第一個按鈕賦給第二個按鈕 *=place*; y=placeY; fristMsg=grid[*][y];//將傳過來的按鈕上的數(shù)字賦給fristMsg fristButton=bz;//將傳過來的按鈕賦給fristButton if(fristMsg==secondMsg&&secondButton!=fristButton) {//如果當兩個不同的按鈕上的數(shù)字相等時則消去 *iao(); } } } //消去 publicvoid*iao() { if((*0==*&&(y0==y+1||y0==y-1))||((*0==*+1||*0==*-1)&&(y0==y))) {//如果兩個按鈕相鄰,則消去 remove(); } else {//如果兩個按鈕不相鄰 //判斷與第一按鈕同行的情況 for(j=0;j<7;j++) {//判斷第一個按鈕同行哪個按鈕為空 if(grid[*0][j]==0) {//如果同行有空按鈕 if(y>j) {//如果第二個按鈕的y坐標大于空按鈕的j坐標說明空按鈕在第二按鈕左邊 for(i=y-1;i>=j;i--) {//判斷第二按鈕左側直到位置(*,j)有沒有按鈕 //即判斷與空按鈕同列、與第二按鈕同行的位置到第二按鈕的左側為止有沒有按鈕 if(grid[*][i]!=0) {//如果有按鈕,則將k初始化為零,并將跳出循環(huán) k=0; break; } else {//如果沒有按鈕 k=1;//K=1說明通過了第一次驗證 } } if(k==1) {//k==1說明橫坐標為*,縱坐標從j到(y-1)的位置都沒有按鈕 //即說明與空按鈕同列、與第二按鈕同行的位置到第二按鈕的左側為止沒有按鈕 linePassOne(); } } if(y<j) {//如果第二個按鈕的y坐標小于空按鈕的j坐標說明空按鈕在第二按鈕右邊 for(i=y+1;i<=j;i++) {//判斷第二按鈕右側直到位置(*,j)有沒有按鈕 if(grid[*][i]!=0) {//如果有按鈕,則將k初始化為零,并將跳出循環(huán) k=0; break; } else {//如果沒有按鈕 k=1; } } if(k==1) {//通過第一次驗證,即第二按鈕右側直到位置(*,j)沒有按鈕 linePassOne(); } } if(y==j) {//第二個按鈕與空按鈕同列,即第二按鈕與第一按鈕同行 linePassOne(); } } if(k==2) {//通過第二驗證 if(*0==*) {//兩個按鈕在同一行 remove(); } if(*0<*) {//第二個按鈕所在行在第一按鈕所在行的下面 for(n=*0;n<=*-1;n++) {//判斷空按鈕下側直到位置(*-1,j)有沒有按鈕 if(grid[n][j]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } if(grid[n][j]==0&&n==*-1) {//如果直到位置(*-1,j)沒有按鈕 remove(); } } } if(*0>*) {//第二個按鈕所在行在第一按鈕所在行的上面 for(n=*0;n>=*+1;n--) {//判斷空按鈕上側直到位置(*+1,j)有沒有按鈕 if(grid[n][j]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } if(grid[n][j]==0&&n==*+1) {//如果直到位置(*+1,j)沒有按鈕 remove(); } } } } } //判斷與第一按鈕同列情況 for(i=0;i<8;i++) {//判斷第一個按鈕同列哪個按鈕為空 if(grid[i][y0]==0) {//同列有空按鈕 if(*>i) {//如果第二個按鈕的*坐標大于空按鈕的i坐標說明空按鈕在第二按鈕上邊 for(j=*-1;j>=i;j--) {//判斷第二按鈕上側直到位置(i,y)有沒有按鈕 if(grid[j][y]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } else {//如果沒有按鈕 k=1;//說明通過第一次驗證 } } if(k==1) {//第二按鈕上側直到位置(i,y)沒有按鈕 rowPassOne(); } } if(*<i) {//空按鈕在第二按鈕下邊 for(j=*+1;j<=i;j++) {//判斷第二按鈕下側直到位置(i,y)有沒有按鈕 if(grid[j][y]!=0) { k=0; break; } else { k=1; } } if(k==1) {//第二按鈕下側直到位置(i,y)沒有按鈕 rowPassOne(); } } if(*==i) {//第二按鈕與空按鈕同行 rowPassOne(); } } if(k==2) {//通過第二次驗證 if(y0==y) {//兩個按鈕同列 remove(); } if(y0<y) {//第二按鈕所在行在第一按鈕所在行的下面 for(n=y0;n<=y-1;n++) {//判斷空按鈕右側直到位置(i,y-1)有沒有按鈕 if(grid[i][n]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } if(grid[i][n]==0&&n==y-1) {//空按鈕右側直到位置(i,y-1)沒有按鈕 remove(); } } } if(y0>y) {//第二按鈕所在行在第一按鈕所在行的上面 for(n=y0;n>=y+1;n--) {//判斷空按鈕左側直到位置(i,y+1)有沒有按鈕 if(grid[i][n]!=0) { k=0; break; } if(grid[i][n]==0&&n==y+1) {//空按鈕左側直到位置(i,y+1)沒有按鈕 remove(); } } } } } } } /** *第一按鈕的同行中存在空按鈕 *判斷在同一行中空按鈕與第一個按鈕之間的位置是否有按鈕存在,如果有則k=0,否則k=2 **/ publicvoidlinePassOne() { if(y0>j) {//第一按鈕在同行空按鈕的右邊 for(i=y0-1;i>=j;i--) {//判斷第一按鈕同左側空按鈕之間有沒按鈕 if(grid[*0][i]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } else {//如果沒有按鈕 k=2;//K=2說明通過了第二次驗證 } } } if(y0<j) {//第一按鈕在同行空按鈕的左邊 for(i=y0+1;i<=j;i++) {//判斷第一按鈕同右側空按鈕之間有沒按鈕 if(grid[*0][i]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } else { k=2; } } }} /** *第一按鈕的同列中存在空按鈕 *判斷在同一列中空按鈕與第一個按鈕之間的位置是否有按鈕存在,如果有則k=0,否則k=2 **/ publicvoidrowPassOne() { if(*0>i) {//第一按鈕在同列空按鈕的下邊 for(j=*0-1;j>=i;j--) {//判斷第一按鈕同上側空按鈕之間有沒按鈕 if(grid[j][y0]!=0) {//如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; } else {//如果沒有按鈕 k=2;//K=2說明通過了第二次驗證 } } } if(*0<i) {//第一按鈕在同列空按鈕的上邊 for(j=*0+1;j<=i;j++) {//判斷第一按鈕同下側空按鈕之間有沒按鈕 if(grid[j][y0]!=0) { k=0; break; } else { k=2; } } } } //將一樣兩個按鈕消去,即設為不可見 publicvoidremove() { fristButton.setVisible(false); secondButton.setVisible(false); fraction();//每消去一對按鈕則加100分 /** *將點擊按鈕信息歸為初始 *將K和被消去的兩個按鈕的坐標初始為零 */ pressInformation=false; k=0; grid[*0][y0]=0; grid[*][y]=0; } //實現(xiàn)事件監(jiān)聽 publicvoidactionPerformed(ActionEvente) {// if(e.getSource()==startButton)// {//點擊開場按鈕事件//// init();// centerPanel.setVisible(true);// timerDemo();// flag=true;// } if(e.getSource()==newlyButton) {//點擊下一局按鈕事件// t.cancel(); flag=true; intgrid[][]=newint[8][7]; this.grid=grid;//將grid數(shù)組初始化為零 randomBuild();//重新獲取15個隨機的1~25的數(shù)字 //將一切信息歸為初始 mainFrame.setVisible(false); pressInformation=false;// fractionLable.setTe*t("0"); init();// t.cancel(); timerDemo();// time.setVisible(false);// timerDemo();// time.setVisible(true); } if(e.getSource()==e*itButton) {//點擊退出按鈕事件 System.e*it(0); } if(e.getSource()==resetButton) {//點擊重列按鈕事件 reload(); } for(intcols=0;cols<6;cols++) { for(introws=0;rows<5;rows++) { if(e.getSource()==diamondsButton[cols][rows]) {//當點擊按鈕時,調用estimateEven方法 estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); } } }} /** *publicvoidtimerDemo() *{ *t.schedule(new
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府機關物業(yè)管理項目服務方案
- 臨街商業(yè)店鋪轉租協(xié)議
- 音樂器材銷售合同
- 磚廠生產(chǎn)設備租賃協(xié)議
- 專業(yè)設備維修協(xié)議
- 高效權威測試技術服務合同
- 簡化版買賣合同樣式
- 雨棚工程招標公告
- 股權共享協(xié)議樣本
- 兼職招聘服務合同模板
- 土地增值稅清算管理規(guī)程
- 大學生心理健康教育-大學生心理健康導論
- 糖尿病病人的麻醉
- GB/T 29309-2012電工電子產(chǎn)品加速應力試驗規(guī)程高加速壽命試驗導則
- GB 29216-2012食品安全國家標準食品添加劑丙二醇
- 柔弱的人課文課件
- 動物寄生蟲病學課件
- 電梯曳引系統(tǒng)設計-畢業(yè)設計
- 瑪帕導條刀具課件
- 班會課件 勿以惡小而為之勿以善小而不為
- 中醫(yī)針灸治療中風后語言障礙病例分析專題報告
評論
0/150
提交評論