連連看java程序設(shè)計_第1頁
連連看java程序設(shè)計_第2頁
連連看java程序設(shè)計_第3頁
連連看java程序設(shè)計_第4頁
連連看java程序設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、高級語言程序設(shè)計(2)課程設(shè)計任務(wù)書題 目圖片連連看游戲程序 學(xué)生姓名學(xué)號專業(yè)班級設(shè)計內(nèi)容與要求【問題描述】圖片連連看游戲是利用java圖形用戶界面設(shè)計而設(shè)計的圖片連連看游戲界面。它的游戲規(guī)則就是選擇一對內(nèi)容相同的圖案進(jìn)行連線,但此連線不能穿跨其他圖案。連線的轉(zhuǎn)折點(diǎn)不能多于兩個,如果符合規(guī)定則消除此對圖案。如果游戲找不到可連接消除的圖案,可以通過鼠標(biāo)點(diǎn)擊重列按鈕讓它重新排列圖案,也可以通過鼠標(biāo)重新開始新的游戲,時間結(jié)束后游戲自動結(jié)束,還可以通過鼠標(biāo)退出游戲。【軟件功能】 1 利用awt實(shí)現(xiàn)良好的游戲界面,游戲界面盡可能美觀。 2 游戲開始時,能產(chǎn)生隨機(jī)數(shù)字和隨機(jī)位置以及限制的時間。 3 在按動

2、鼠標(biāo)和鍵盤時,游戲能玩起來,即能響應(yīng)鼠標(biāo)事件。4 能消去滿足條件的含有相同數(shù)字的圖片。5 能重列圖片順序。6 能選擇退出游戲和重新再來一局?!净疽蟆? 用二維數(shù)組存放游戲按鈕的位置坐標(biāo)。 2 用二維數(shù)組存放隨機(jī)位置。3 調(diào)用按鈕方法將圖片添加到游戲按鈕上。4 要求用戶界面采用圖形用戶界面,響應(yīng)鼠標(biāo)事件。5 利用awt實(shí)現(xiàn)良好的GUI界。6 用GridLayout類以矩形網(wǎng)格形式和BorderLayout類以界面布局形式對容器中的組件進(jìn)行布局。7 源程序中要有充分的注釋,報告中要有詳細(xì)的流程圖和文字材料。8 運(yùn)行的結(jié)果以及圖形用戶界面要進(jìn)行屏幕拷貝,插入報告中?!咎峤怀晒?1“高

3、級語言程序設(shè)計(2)課程設(shè)計任務(wù)書”和“高級語言程序設(shè)計(2)課程設(shè)計報告”打印件各一份; 2 先將上面兩項內(nèi)容的word文檔,通過電子郵件交到指導(dǎo)教師,待許可后,打印裝袋。起止時間2012 年 12 月 24 日 至 2012 年12月 30 日指導(dǎo)教師簽名 2012年 12 月 22 日系(教研室)主任簽名 2012 年 12月 22 日學(xué)生簽名 2012年 12 月 25 日 高級語言程序設(shè)計(2)課程設(shè)計報告 專業(yè): 班級: 學(xué)號:姓名: 完成日期: 指導(dǎo)教師 一、程序設(shè)計說明書【設(shè)計題目】 圖片連連看游戲程序【問題描述】 圖片連連看游戲是利用java圖形用戶界面設(shè)計而設(shè)計的圖片連連看

4、游戲界面。它的游戲規(guī)則就是選擇一對內(nèi)容相同的圖案進(jìn)行連線,但此連線不能穿跨其他圖案。連線的轉(zhuǎn)折點(diǎn)不能多于兩個,如果符合規(guī)定則消除此對圖案。如果游戲找不到可連接消除的圖案,可以通過鼠標(biāo)點(diǎn)擊重列按鈕讓它重新排列圖案,也可以通過鼠標(biāo)重新開始新的游戲,時間結(jié)束后游戲自動結(jié)束,還可以通過鼠標(biāo)退出游戲。 【軟件功能】 1 利用awt實(shí)現(xiàn)良好的游戲界面,游戲界面盡可能美觀。 2 游戲開始時,能產(chǎn)生隨機(jī)數(shù)字和隨機(jī)位置以及限制的時間。 3 在按動鼠標(biāo)和鍵盤時,游戲能玩起來,即能響應(yīng)鼠標(biāo)事件。4 能消去滿足條件的含有相同數(shù)字的圖片。5 能重列圖片順序。6 能選擇退出游戲和重新再來一局。【算法思想】 在檢驗兩個圖片

5、能否消掉的時候,要讓兩個圖片同時滿足兩個條件才行,就是兩者配對并且連線成功。分 3 種情況:這三種情況都需要三個檢測,這三個檢測分別檢測一條直路經(jīng)。這樣就會有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線(兩個轉(zhuǎn)彎點(diǎn))把兩個按鈕連接起來了。 (1)、相鄰 (2)、若不相鄰的先在第一個按鈕的同行找一個空按鈕。1.找到后看第二個按鈕橫向到這個空按鈕所在的列是否有按鈕。2.沒有的話再看第一個按鈕到與它同行的那個空按鈕之間是否有按鈕。3.沒有的話,再從與第一個按鈕同行的那個空按鈕豎向到與第二個按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了可以消了. (3)、若(2)失敗后,再在第一個按鈕的同列找

6、一個空按鈕。1.找到后看第二個按鈕豎向到這個空按鈕所在的行是否有按鈕 2.沒有的話,再看第一個按鈕到與它同列的那個空按鈕之間是否有按鈕。3.沒有的話,再從與第一個按鈕同列的那個空按鈕橫向到與第二個按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。若以上三步都失敗,說明這兩個按鈕不可以消去兩圖能相連的所有情況: 【類的設(shè)計】 圖片連連看游戲程序中只有一個類,類名為LianLianKan,該類實(shí)現(xiàn)了接口ActionListener;該類總共有十三個方法,他們的功能分別是:init()初始化;createImgBtn()傳進(jìn)兩個String類型的參數(shù),返回帶有數(shù)字和圖片的按鈕;randomBuil

7、d(),產(chǎn)生十五對隨機(jī)的數(shù)字;fraction()計算得分;reload()將游戲按鈕重列;estimateEven()傳進(jìn)兩個int型和一個JButton型的三個參數(shù)(分別是擊中的按鈕位置坐標(biāo)和按鈕),選中按鈕信息的存儲與操作;xiao()消去符合游戲規(guī)則的相同的兩個按鈕;linePassOne()在第一按鈕同行有空按鈕的條件下判斷第二轉(zhuǎn)折點(diǎn)出現(xiàn)的情況;rowPassOne()在第一按鈕同列有空按鈕的條件下判斷第二轉(zhuǎn)折點(diǎn)出現(xiàn)的情況;remove()將相同的兩個按鈕消去;actionPerformed()實(shí)現(xiàn)按鈕事件的監(jiān)聽;timerDemo()時間提示;main()主方法;【用戶界面】 【程

8、序技巧】 1.程序采用圖形用戶界面,簡單大方,且易于操作;2.連連看圖片采用大家熟悉的圖片,能激起玩家的游戲興趣;3.游戲功能較為齊全,可實(shí)現(xiàn)退出、重列和下一局的功能,重列功能可對游戲中剩余的圖片進(jìn)行重新排列,使游戲繼續(xù)進(jìn)行,下一局功能可以使游戲重新開始4.游戲具有倒計時功能,能夠控制游戲時限,使游戲具有一定難度,倒計時結(jié)束時顯示“game over”5.游戲可以統(tǒng)計玩家的游戲得分 【模塊劃分及調(diào)用關(guān)系】根據(jù)對連連看游戲的分析,該游戲可分化為三個模塊:算法模塊、界面顯示模塊、菜單控制模塊。 調(diào)用關(guān)系: rowPassOne()linePassOne()remove()xiao()init()t

9、imerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild() 新建LianLianKan對象 【模塊流程圖】 主模塊流程圖:連連看游戲用戶界面模塊菜單模塊算法模塊 用戶界面模塊流程圖:Button下一局Button重列Button退出Label:您的得分Label:Fraction(分?jǐn)?shù))Label:TimeLabel:剩余時間EastPanelBorderLayout布局WestPanelBorder

10、Layout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanel BorderLayout布局CenterPanel GriLayout布局 (7x8)算法模塊流程圖:消去是否直線相連消去是否相鄰消去是否直線相連是否相鄰是否為同一圖片消去不能消去是否在一條豎線是否在一條橫線是否在同一位置否是是否是否否是是是否是否否當(dāng)兩圖不在一條直線上,則以兩圖在X、Y方向的延長線上去找兩個點(diǎn),使其能連成直線是否不能消去消去【運(yùn)行說明】將25個圖片和LianLianKan.java文件存在同一個文件夾里javac LianLianKan.java java L

11、ianLianKan二、 程序上機(jī)調(diào)試報告【語法錯誤及其排除】 將圖片加載在按鈕上,并在調(diào)用按鈕時會出現(xiàn)隨機(jī)的圖片時出現(xiàn)錯誤,最后創(chuàng)建了一個方法JButton createImgBtn(String ing,String txt),作用是傳進(jìn)兩個String類型的參數(shù),返回帶有數(shù)字和圖片的按鈕,方法中的主要內(nèi)容有ImageIcon image = new ImageIcon(getClass().getResource(ing);JButton button = new JButton(txt,image);通過調(diào)用這個方法就可以將圖片與按鈕固定在一起。 加載計時器時出現(xiàn)錯誤,即如果只在初始方

12、法init()里調(diào)用timerDemo()方法時,在點(diǎn)擊重列按鈕或者下一局按鈕時,時間提示里的時間是兩次時間相摻雜的;改為只在main()方法里調(diào)用timerDemo()方法,在點(diǎn)擊重列按鈕時沒有問題,但在點(diǎn)擊下一局按鈕時,時間還是相摻雜著出現(xiàn);最后改為在main()方法里調(diào)用timerDemo()方法的同時在actionPerformed()方法里將if(e.getSource()=newlyButton) int grid = new int87; this.grid = grid; randomBuild(); mainFrame.setVisible(false); pressInfo

13、rmation=false; Init(); 改為:if(e.getSource()=newlyButton) flag=true;int grid = new int87; this.grid = grid; randomBuild(); mainFrame.setVisible(false); pressInformation=false; init(); timerDemo(); 【算法錯誤及其排除】 在編輯randomBuild()方法產(chǎn)生隨機(jī)的兩兩相同的數(shù)字時,程序中會出現(xiàn)并非兩兩相同的圖片,達(dá)不到預(yù)期的效果,后改為在randomBuild()方法里添加如下這樣的程序: while(

14、gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); 程序才正確。 在編輯程序時,定義了一個grid數(shù)組,用來存放游戲按鈕的位置,剛開始定義的是6行5列,結(jié)果玩游戲時,周邊的按鈕不能被消去,后將數(shù)組改為8行7列時才可以,這樣按鈕周邊的一圈就是空按鈕,周邊的按鈕就可以被消去。三、 程序測試結(jié)果【測試數(shù)據(jù)】1、程序運(yùn)行結(jié)果: 2、點(diǎn)擊重列按鈕結(jié)果:3、點(diǎn)擊下一局:4、游戲結(jié)束界面:【輸出結(jié)果】 【收獲及體會】通過這次圖片連連看游戲的設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠

15、的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正的提高自己的水平,從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,并且還發(fā)現(xiàn)了自己的許多不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。同時在這次的設(shè)計中也小小的體驗了一下做項目的感受。我完成了這次JAVA課程設(shè)計,不過這只是我學(xué)習(xí)路上的驛站。我相信我在未來的學(xué)習(xí)中會記住從本次課程設(shè)計中所學(xué)到的東西,并將它用到未來的學(xué)習(xí)中去。四、 源程序代碼import java.awt.BorderLayout;import java.awt.Color;import java.awt.C

16、ontainer;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Timer;import java.util.TimerTask;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public cl

17、ass LianLianKan implements ActionListener /主面板JFrame mainFrame; /面板容器Container thisContainer; /子面板 JPanel centerPanel,southPanel,northPanel,westPanel,eastPanel;/游戲按鈕數(shù)組JButton diamondsButton = new JButton65;/開始,退出,重列,重新開始按鈕JButton exitButton,resetButton,newlyButton; /JButton startButton;/分?jǐn)?shù)標(biāo)簽JLabel f

18、ractionLable=new JLabel("0");/時間標(biāo)簽JLabel time=new JLabel("");/分別記錄兩次被選中的按鈕 JButton fristButton,secondButton; /儲存游戲按鈕位置 int grid = new int87; /判斷是否有按鈕被擊中 static boolean pressInformation=false; /被選中的兩個游戲按鈕的位置坐標(biāo)(x0,y0),(x,y) int x0=0,y0=0,x=0,y=0; /兩個被選中按鈕上相應(yīng)的數(shù)字int fristMsg=0,second

19、Msg=0;int i,j,k,n;/int s=0;final Timer t=new Timer();Color b=Color.orange;Color g=Color.cyan;Color m=Color.pink;/Color c=Color.blue;boolean flag;/初始化public void init() /創(chuàng)建主面板,并命為連連看mainFrame=new JFrame("連連看"); thisContainer = mainFrame.getContentPane(); /thisContainer.setBackground(c);/* *

20、 把thisContainer劃分為Center、South、North三個區(qū)域 * North區(qū)域添加分?jǐn)?shù) * Center區(qū)域添加游戲按鈕 * South區(qū)域添加退出、重列、下一局等按鈕 */thisContainer.setLayout(new BorderLayout(); centerPanel=new JPanel();centerPanel.setBackground(b);southPanel=new JPanel();southPanel.setBackground(g);northPanel=new JPanel(new BorderLayout() ); /northPa

21、nel.setBackground(m);westPanel=new JPanel();westPanel.setBackground(m);eastPanel=new JPanel();eastPanel.setBackground(m);/Label time=new Label("剩余時間:");thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"Nor

22、th"); northPanel.add(westPanel,"West");northPanel.add(eastPanel,"Center");westPanel.add(BorderLayout.WEST,new JLabel(" 剩余時間:");westPanel.add(BorderLayout.EAST,time);eastPanel.add(BorderLayout.CENTER,new JLabel("您的得分:");eastPanel.add(BorderLayout.EAST,frac

23、tionLable);eastPanel.add(fractionLable,"Center");/northPanel.add(fractionLable); /* * eastPanel.add(new JLabel("您的得分:"); * eastPanel.add(fractionLable); * westPanel.add(BorderLayout.WEST,new JLabel(" 剩余時間:"); *westPanel.add(BorderLayout.EAST,new JLabel(time); * northPan

24、el.add(westPanel); */把CenterPanel區(qū)域設(shè)置為網(wǎng)格布局centerPanel.setLayout(new GridLayout(6,5); for(int cols = 0;cols < 6;cols+) for(int rows = 0;rows < 5;rows+ ) if(gridcols+1rows+1!=0) /給指定按鈕添加圖片diamondsButtoncolsrows=createImgBtn(gridcols+1rows+1+".jpg", String.valueOf(gridcols+1rows+1); els

25、e /當(dāng)指定按鈕為空時傳空字符串即照片為傳的照片為空 diamondsButtoncolsrows=createImgBtn("",String.valueOf(gridcols+1rows+1); /* *else* * /當(dāng)指定按鈕為空時將其定義為新的按鈕*diamondsButtoncolsrows=new JButton();* */diamondsButtoncolsrows.addActionListener(this); centerPanel.add(diamondsButtoncolsrows); /startButton=new JButton(&quo

26、t;開始");/startButton.addActionListener(this);exitButton=new JButton("退出"); exitButton.addActionListener(this); resetButton=new JButton("重列"); resetButton.addActionListener(this); newlyButton=new JButton("下一局"); newlyButton.addActionListener(this);/southPanel.add(sta

27、rtButton);southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton); /*為該標(biāo)簽設(shè)置一個文本字符串*該字符串為標(biāo)簽字符串所顯示的文本字符串作為有符號的十進(jìn)制整數(shù)為參數(shù)的字符串*/fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText(); mainFrame.setBounds(180,10,800,650);/設(shè)置主面板的位置和大小 mainFrame.setVisible(

28、false);mainFrame.setVisible(true); /centerPanel.setVisible(false);/timerDemo(); /創(chuàng)建帶有圖片的按鈕public JButton createImgBtn(String ing,String txt) /根據(jù)給定名稱的資源創(chuàng)建一個 ImageIcon。ImageIcon image = new ImageIcon(getClass().getResource(ing);JButton button = new JButton(txt,image);/設(shè)置文本(即數(shù)字)相對于圖標(biāo)的垂直位置為底及水平位置為中心butt

29、on.setVerticalTextPosition(JButton.BOTTOM);button.setHorizontalTextPosition(JButton.CENTER);return button; /* *產(chǎn)生游戲中的隨機(jī)數(shù)字 *數(shù)字至少兩兩相同 */public void randomBuild() int randoms,cols,rows; for(int twins=1;twins<=15;twins+) randoms=(int)(Math.random()*25+1);/隨機(jī)產(chǎn)生一個125的數(shù)字 for(int alike=1;alike<=2;alik

30、e+) /產(chǎn)生兩個隨機(jī)的坐標(biāo)來存放同一個數(shù)字cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0)/避免出現(xiàn)重復(fù)的坐標(biāo) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=randoms; /計算得分public void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLabl

31、e.getText()+100); /重列public void reload() int save = new int30; int n=0,cols,rows; int grid= new int87;/time.setVisible(false);for(int i=0;i<=6;i+) for(int j=0;j<=5;j+) if(this.gridij!=0) /將未消去的圖片的數(shù)字放在save數(shù)組中saven=this.gridij; n+; n=n-1; this.grid=grid; /把grid數(shù)組全部初始化為零while(n>=0) /將剩下的所有圖片數(shù)

32、字重新隨機(jī)放在數(shù)組grid中cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0)/避免出現(xiàn)重復(fù)的坐標(biāo) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=saven; n-; mainFrame.setVisible(false); /將按鈕點(diǎn)擊信息歸為初始 pressInformation=false;init(); for(int i = 0;i < 6;i+)

33、for(int j = 0;j < 5;j+ ) if(gridi+1j+1=0) /將消去的按鈕設(shè)置為不可見 diamondsButtonij.setVisible(false); /選中按鈕信息的存儲與操作public void estimateEven(int placeX,int placeY,JButton bz) if(pressInformation=false) /如果第一個按鈕未被擊中,則將傳來的按鈕坐標(biāo)賦給(x,y) x=placeX; y=placeY; fristMsg=gridxy;/將按鈕上的數(shù)字賦給fristMsg fristButton=bz;/將(pla

34、ceX,placey)位置上的按鈕bz賦給fristButton pressInformation=true;/將按鈕點(diǎn)擊信息設(shè)置為true else /* *如果第一個按鈕被擊中 ,則將第一個按鈕坐標(biāo)賦給(x0,y0) *將fristButton按鈕賦給secondButton按鈕 *將傳來的按鈕坐標(biāo)賦給坐標(biāo)(x,y) *如果當(dāng)兩個不同的按鈕上的數(shù)字相等時則調(diào)用remove()函數(shù)消去 */x0=x; y0=y; secondMsg=fristMsg;/將擊中的第一個按鈕上的數(shù)字賦給第二個按鈕secondButton=fristButton;/將第一個按鈕賦給第二個按鈕x=placeX; y

35、=placeY; fristMsg=gridxy;/將傳過來的按鈕上的數(shù)字賦給fristMsgfristButton=bz;/將傳過來的按鈕賦給fristButton if(fristMsg=secondMsg && secondButton!=fristButton) /如果當(dāng)兩個不同的按鈕上的數(shù)字相等時則消去xiao(); /消去public void xiao() if(x0=x &&(y0=y+1|y0=y-1) | (x0=x+1|x0=x-1)&&(y0=y) /如果兩個按鈕相鄰,則消去 remove(); else /如果兩個按鈕不

36、相鄰/判斷與第一按鈕同行的情況for (j=0;j<7;j+ ) /判斷第一個按鈕同行哪個按鈕為空if (gridx0j=0) /如果同行有空按鈕if (y>j) /如果第二個按鈕的y坐標(biāo)大于空按鈕的j坐標(biāo)說明空按鈕在第二按鈕左邊 for (i=y-1;i>=j;i-) /判斷第二按鈕左側(cè)直到位置(x,j)有沒有按鈕 /即判斷與空按鈕同列、與第二按鈕同行的位置到第二按鈕的左側(cè)為止有沒有按鈕if (gridxi!=0) /如果有按鈕,則將k初始化為零,并將跳出循環(huán) k=0; break; else /如果沒有按鈕k=1;/K=1說明通過了第一次驗證 if (k=1) /k=1說

37、明橫坐標(biāo)為x,縱坐標(biāo)從j到(y-1)的位置都沒有按鈕/即說明與空按鈕同列、與第二按鈕同行的位置到第二按鈕的左側(cè)為止沒有按鈕linePassOne(); if (y<j) /如果第二個按鈕的y坐標(biāo)小于空按鈕的j坐標(biāo)說明空按鈕在第二按鈕右邊 for (i=y+1;i<=j;i+) /判斷第二按鈕右側(cè)直到位置(x,j)有沒有按鈕 if (gridxi!=0) /如果有按鈕,則將k初始化為零,并將跳出循環(huán)k=0; break; else /如果沒有按鈕k=1; if (k=1) /通過第一次驗證,即第二按鈕右側(cè)直到位置(x,j)沒有按鈕linePassOne(); if (y=j ) /第

38、二個按鈕與空按鈕同列,即第二按鈕與第一按鈕同行l(wèi)inePassOne(); if (k=2) /通過第二驗證if (x0=x) /兩個按鈕在同一行remove(); if (x0<x) /第二個按鈕所在行在第一按鈕所在行的下面for (n=x0;n<=x-1;n+) /判斷空按鈕下側(cè)直到位置(x-1,j)有沒有按鈕if (gridnj!=0) /如果有按鈕,將k初始化為零,并跳出循環(huán)k=0; break; if(gridnj=0&&n=x-1) /如果直到位置(x-1,j)沒有按鈕remove(); if (x0>x) /第二個按鈕所在行在第一按鈕所在行的上面

39、for (n=x0;n>=x+1;n-) /判斷空按鈕上側(cè)直到位置(x+1,j)有沒有按鈕if (gridnj!=0) /如果有按鈕,將k初始化為零,并跳出循環(huán)k=0; break; if(gridnj=0&&n=x+1) /如果直到位置(x+1,j)沒有按鈕remove(); /判斷與第一按鈕同列情況for (i=0;i<8;i+) /判斷第一個按鈕同列哪個按鈕為空if (gridiy0=0) /同列有空按鈕if (x>i) /如果第二個按鈕的x坐標(biāo)大于空按鈕的i坐標(biāo)說明空按鈕在第二按鈕上邊f(xié)or(j=x-1;j>=i;j-) /判斷第二按鈕上側(cè)直到位

40、置(i,y)有沒有按鈕 if (gridjy!=0) /如果有按鈕,將k初始化為零,并跳出循環(huán)k=0; break; else /如果沒有按鈕 k=1; /說明通過第一次驗證 if (k=1) /第二按鈕上側(cè)直到位置(i,y)沒有按鈕rowPassOne(); if (x<i) /空按鈕在第二按鈕下邊f(xié)or (j=x+1;j<=i;j+) /判斷第二按鈕下側(cè)直到位置(i,y)有沒有按鈕if (gridjy!=0) k=0; break; else k=1; if (k=1) /第二按鈕下側(cè)直到位置(i,y)沒有按鈕rowPassOne(); if (x=i) /第二按鈕與空按鈕同行

41、rowPassOne(); if (k=2) /通過第二次驗證if (y0=y) /兩個按鈕同列remove(); if (y0<y) /第二按鈕所在行在第一按鈕所在行的下面for (n=y0;n<=y-1;n+) /判斷空按鈕右側(cè)直到位置(i,y-1)有沒有按鈕if (gridin!=0) /如果有按鈕,將k初始化為零,并跳出循環(huán)k=0; break; if(gridin=0&&n=y-1) /空按鈕右側(cè)直到位置(i,y-1)沒有按鈕remove(); if (y0>y) /第二按鈕所在行在第一按鈕所在行的上面 for (n=y0;n>=y+1;n-)

42、 /判斷空按鈕左側(cè)直到位置(i,y+1)有沒有按鈕 if (gridin!=0) k=0; break; if(gridin=0&&n=y+1) /空按鈕左側(cè)直到位置(i,y+1)沒有按鈕 remove(); /* * 第一按鈕的同行中存在空按鈕 * 判斷在同一行中空按鈕與第一個按鈕之間的位置是否有按鈕存在,如果有則k=0,否則k=2 * */public void linePassOne() if (y0>j) /第一按鈕在同行空按鈕的右邊 for (i=y0-1;i>=j;i-) /判斷第一按鈕同左側(cè)空按鈕之間有沒按鈕 if (gridx0i!=0) /如果有按鈕,將k初始化為零,并跳出循環(huán) k=0; break; else /如果沒有按鈕 k=2;/K=2說明通過了第二次驗證 if (y0<j) /第一按鈕在同行空按鈕的左邊 for (i=y0+1;i<=j;i+) /判斷第一按鈕同右側(cè)空按鈕之間有沒按鈕 if (gridx0i!=0) /如果有按鈕

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論