




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精品文檔第一章 引言背景游戲“連連看”顧名思義就是找出相關(guān)聯(lián)的東西, 這個(gè)連連看在網(wǎng)上基本是用在小游戲中,就是找出相同的兩樣?xùn)|西,在一定的規(guī)則之內(nèi)可以做為相關(guān)聯(lián)處理。“連連看”的發(fā)展經(jīng)歷了從桌面游戲、在線游戲、社交游戲三個(gè)過(guò)程。游戲“連連看”是源自臺(tái)灣的桌面小游戲, 自從流入大陸以來(lái)風(fēng)靡一時(shí),也吸引眾多程序員開(kāi)發(fā)出多種版本的“連連看”。 這其中,顧方編寫的“阿達(dá)連連看”以其精良的制作廣受好評(píng), 這也成為顧方“阿達(dá)系列軟件”的核心產(chǎn)品。 并于2004年,取得了國(guó)家版權(quán)局的計(jì)算機(jī)軟件著作權(quán)登記證書(shū)。隨著Flash應(yīng)用的流行,網(wǎng)上出現(xiàn)了多種在線 Flash版本“連連看”。如“水晶連連看”、“果蔬連連看”等,流行的“水晶連連看”以華麗界面吸引了一大批的女性玩家。2008年,隨著社交網(wǎng)絡(luò)的普及和開(kāi)放平臺(tái)的興起,“連連看”被引入了社交網(wǎng)絡(luò)?!斑B連看”與個(gè)人空間相結(jié)合, 被快速的傳播,成為一款熱門的社交游戲,其中以開(kāi)發(fā)者Jonevey在Manyou 開(kāi)放平臺(tái)上推出的“寵物連連看”最為流行。網(wǎng)絡(luò)小游戲、網(wǎng)頁(yè)游戲越來(lái)越受網(wǎng)民歡迎, 除了玩的方法簡(jiǎn)單外(不像其他游戲還需要注冊(cè)下載繁瑣過(guò)程),很多游戲不乏經(jīng)典。連連看游戲就是典型。不管走到哪個(gè)網(wǎng)頁(yè)游戲網(wǎng)站,連連看游戲總是排在受玩家歡迎排名的前 5位,休閑、趣味、益智是連連看玩不厭的精華,且不分男女老少、工薪白領(lǐng),是一款適合大眾的經(jīng)典網(wǎng)絡(luò)、單機(jī)休閑小游戲。隨意編輯精品文檔游戲《連連看》,只要將相同的兩張牌用三根以內(nèi)的直線連在一起就可以消除,規(guī)則簡(jiǎn)單容易上手。游戲速度節(jié)奏快,畫面清晰可愛(ài),適合細(xì)心的玩家。豐富的道具和公共模式的加入, 增強(qiáng)游戲的競(jìng)爭(zhēng)性。多樣式的地圖,使玩家在各個(gè)游戲水平都可以尋找到挑戰(zhàn)的目標(biāo),長(zhǎng)期地保持游戲的新鮮感。該游戲由30張不同的圖片組成,游戲開(kāi)始將會(huì)出現(xiàn) 30張隨機(jī)組合的圖片,在規(guī)則下點(diǎn)擊兩張相同的圖片后圖片將會(huì)消失。 圖片全部消完為游戲成功。游戲還將設(shè)置退出,再來(lái)一局的按鈕,并實(shí)現(xiàn)該功能,方便用戶進(jìn)行操作。1.1課程設(shè)計(jì)內(nèi)容1)游戲計(jì)分功能當(dāng)消去兩個(gè)相同的圖片后分?jǐn)?shù)將增加100分。2)退出功能該功能有一個(gè)“退出”按鈕,當(dāng)按下“退出”按鈕后,將直接退出游戲。3)成功完成任務(wù)時(shí)顯示的該功能有,恭喜成功,一個(gè)“再來(lái)一局”的按鈕,當(dāng)按下“再來(lái)一局”按鈕后,圖片將會(huì)重新排列,重新開(kāi)始游戲。(4)游戲倒計(jì)時(shí)功能在游戲界面的上方有一個(gè)倒計(jì)時(shí)的進(jìn)度條, 增加游戲的難度,激發(fā)玩家的挑戰(zhàn)興趣。隨意編輯精品文檔第二章 系統(tǒng)介紹連連看游戲規(guī)則1.1游戲基本規(guī)則用鼠標(biāo)左鍵點(diǎn)擊方塊,將2個(gè)圖案相同的方塊用連線連接起來(lái), 連接線不多于3根直線,連接后方塊就會(huì)消失。在規(guī)定的時(shí)間內(nèi)將 30張圖片全部消除。1.2操作規(guī)則選擇一個(gè)圖片用鼠標(biāo)左鍵點(diǎn)擊, 圖片會(huì)變色,然后點(diǎn)擊另一個(gè)同樣圖片,如果能夠連線就成功消失,如果不能連線,第一次選擇的圖片就會(huì)失效, 然后將繼隨意編輯精品文檔續(xù)尋找符合規(guī)則的圖片。1.3勝利和失敗把所有的圖片成功消除完畢,則認(rèn)為是本次游戲成功。選擇圖片時(shí)間是有限的,在規(guī)定的時(shí)間內(nèi),若未能將圖片全部消除,則失敗,提醒是否再來(lái)一局。游戲流程圖分析流程圖分析如下圖 2.1所示:隨意編輯精品文檔開(kāi)始鼠標(biāo)點(diǎn)擊位置的確定判斷是否點(diǎn)擊在圖片方塊?判斷是否已選定一個(gè)方塊?選定第一個(gè)方塊 選定第二個(gè)方塊判斷是否可以抵消方塊?抵消方塊消除選定方塊的記錄結(jié)束圖2.1游戲流程圖隨意編輯精品文檔此次設(shè)計(jì)所使用的語(yǔ)言為 Java。主要應(yīng)用到Swing組件,Java小程序,事件及接口等。這些接口為游戲的制作提供了便捷的條件, 本系統(tǒng)的主要特點(diǎn)就是運(yùn)用Swing組件和事件處理技術(shù),進(jìn)行界面的繪制,鼠標(biāo)的操作,以及積分的顯示等功能。這次通過(guò)連連看的設(shè)計(jì)開(kāi)發(fā)將對(duì)理解 Swing組件技術(shù)以及事件處理技術(shù)在游戲方面的應(yīng)用起到很大的幫助作用,同時(shí)為掌握 Java編程技術(shù)及二維休閑游戲設(shè)計(jì)的一般方法打下堅(jiān)實(shí)的基礎(chǔ)。游戲程序設(shè)計(jì)一般都采用面向?qū)ο蟮脑O(shè)計(jì)模式, 提供了一個(gè)簡(jiǎn)單的圖像顯示接口,利用多文檔視圖結(jié)構(gòu)的面向?qū)ο笤O(shè)計(jì)模式。隨意編輯精品文檔第三章 系統(tǒng)游戲設(shè)計(jì)系統(tǒng)分析1.1游戲系統(tǒng)需求分析主要設(shè)計(jì)目標(biāo):使用GUI設(shè)計(jì)連連看,載入圖片信息,進(jìn)行正確分析系統(tǒng)的功能,總載入張圖片,且圖片信息成對(duì)出現(xiàn),且可以偶數(shù)項(xiàng)刪除,并具有計(jì)時(shí)等功能游戲中將有“退出”功能,選擇退出命令后程序?qū)⒔K止執(zhí)行,關(guān)閉窗口。還將有“再來(lái)一局”功能,選擇再來(lái)一局命令后程序?qū)?duì)圖片重新排列,重新開(kāi)始游戲。該游戲還有一個(gè)時(shí)間倒計(jì)時(shí)的進(jìn)度條,提醒玩家剩余的時(shí)間,增加游戲的難度。在界面的頂部有計(jì)分功能,當(dāng)玩家消去圖片后就會(huì)贏得相應(yīng)的分?jǐn)?shù)。1.2系統(tǒng)開(kāi)發(fā)及運(yùn)行環(huán)境硬件平臺(tái):本游戲?qū)τ布筝^低,基本都可以正常運(yùn)行。軟件平臺(tái):操作系統(tǒng):Windows 系列。開(kāi)發(fā)工具包:。隨意編輯精品文檔1.3系統(tǒng)功能主要要求1.系統(tǒng)采用圖片連連看方式 .界面美觀,用戶使用靈活,方便快捷.2.計(jì)分自動(dòng)完成,提高工作效率。3.用進(jìn)度條進(jìn)行游戲界面的計(jì)時(shí)功能。4.可方便快捷地進(jìn)行下一盤游戲, 并且兩盤的分?jǐn)?shù)在規(guī)定的時(shí)間內(nèi)會(huì)疊加起來(lái)。5.操作員可以隨時(shí)退出游戲。6.對(duì)用戶輸入的信息,系統(tǒng)進(jìn)行嚴(yán)格的信息檢驗(yàn),盡可能排除人為的錯(cuò)誤。7.系統(tǒng)最大限度地實(shí)現(xiàn)了易維護(hù)性和易操作性。8.系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。系統(tǒng)總體結(jié)構(gòu)連連看是基于java基本知識(shí)設(shè)置的一個(gè)小游戲,最中間有連連看的主體構(gòu)成——連連看圖片,上面有計(jì)分、時(shí)間條,下面有退出、再來(lái)一局按鍵。一個(gè)標(biāo)準(zhǔn)的連連看系統(tǒng)應(yīng)該包括以下幾大功結(jié)構(gòu):1、鼠標(biāo)操作模塊;2、圖像處理模塊;3、菜單模塊;4、顯示模塊。系統(tǒng)各模塊功能介紹系統(tǒng)各功能模塊實(shí)現(xiàn)的功能為鼠標(biāo)操作模塊:玩家在玩游戲時(shí)需要運(yùn)用鼠標(biāo)與游戲系統(tǒng)進(jìn)行交互, 這個(gè)模隨意編輯精品文檔塊的實(shí)現(xiàn) 是運(yùn)用鼠標(biāo)事件觸發(fā)的,在連連看的游戲場(chǎng)景中運(yùn)用鼠標(biāo)進(jìn)行交互的事件主要有兩個(gè),一個(gè) 是用戶點(diǎn)擊游戲場(chǎng)景中的圖片時(shí)觸發(fā)的事件。另外一種是用戶點(diǎn)擊菜單欄上的菜單按鈕時(shí)說(shuō) 觸發(fā)的鼠標(biāo)事件。當(dāng)用戶點(diǎn)擊游戲場(chǎng)景中的圖像塊時(shí)就會(huì)響應(yīng)鼠標(biāo)的 OnLButtonDown 事件,然后進(jìn)行相應(yīng)的邏輯判斷。當(dāng)用戶點(diǎn)擊菜單欄上的菜單命令時(shí)就會(huì)觸發(fā)相應(yīng)的菜單命令對(duì)應(yīng)的相應(yīng)的事件。圖像處理模塊:程序運(yùn)行后,用戶通過(guò)游戲菜單的開(kāi)始命令進(jìn)入游戲,在這個(gè)模塊里要把資源文件中的圖片進(jìn)行處理然后加載到游戲場(chǎng)景中這在程序中是通過(guò)DrawMap() 方法實(shí)現(xiàn)的。其中用到的 API函數(shù)主要是是BitBlt,他的主要功能是將某一內(nèi)存塊的數(shù)據(jù)傳送到另一內(nèi)存塊, 前一內(nèi)存塊被稱為"源",后一內(nèi)存塊被稱為"目標(biāo)"圖象程序開(kāi)發(fā)者使用 Blit的函數(shù)在內(nèi)存中將某頁(yè)面上的一幅位圖經(jīng)過(guò)一定的變換轉(zhuǎn)移到另一個(gè)頁(yè)面上。菜單模塊:玩家在游戲游戲過(guò)程中隨時(shí)可以通過(guò)選擇不同的菜單命令來(lái)進(jìn)行相應(yīng)的操作,菜單的制作是通過(guò) MFC框架中多文檔程序的菜單欄來(lái)添加的,菜單包含一下幾個(gè)部分:(1)游戲菜單中的開(kāi)始、放棄和退出命令。界面顯示模塊:游戲場(chǎng)景中界面的顯示包括以下部分: 游戲計(jì)分,剩余時(shí)間、游戲主場(chǎng)景,游戲完成提示界面。這些顯示信息會(huì)隨著游戲的進(jìn)行而動(dòng)態(tài)改變。在連連看游戲中。整個(gè)連連看游戲的系統(tǒng)是在 VC++6.0 開(kāi)發(fā)環(huán)境中進(jìn)行開(kāi)發(fā)的,開(kāi)發(fā)過(guò)程中大量的使用了微軟提供的 API接口方法,減少了程序代碼的編寫量、提高了編程效率。隨意編輯精品文檔第四章 系統(tǒng)的具體實(shí)現(xiàn)系統(tǒng)主要運(yùn)行界面1.1運(yùn)行界面運(yùn)行界面如下圖4.1所示:圖4.1運(yùn)行界面1.2執(zhí)行界面,進(jìn)入游戲正常運(yùn)行執(zhí)行界面如下圖4.2所示:隨意編輯精品文檔圖4.2執(zhí)行界面1.3時(shí)間到界面時(shí)間到界面如下圖 4.3所示:隨意編輯精品文檔圖4.3時(shí)間到界面1.4贏家界面游戲運(yùn)行成功界面如下圖 4.4所示:圖4.4游戲運(yùn)行成功界面隨意編輯精品文檔1.5進(jìn)度條界面程序運(yùn)行進(jìn)度條如下圖 4.5所示:圖4.5程序運(yùn)行進(jìn)度條游戲?qū)崿F(xiàn)代碼2.1主面板內(nèi)所需要的組件的聲明主面板內(nèi)所需要的組件的聲明代碼如下圖 4.6所示:圖4.6組件聲明2.2填充一個(gè)矩形框,進(jìn)行顯示時(shí)間填充一個(gè)矩形框,進(jìn)行顯示時(shí)間代碼如下圖 4.7所示:隨意編輯精品文檔圖4.7填充矩形框顯示時(shí)間2.3主面板及各組件初始化主面板及各組件初始化如下圖 4.8所示:圖4.8主面板及各組件初始化2.4創(chuàng)建時(shí)間對(duì)象,每隔 100毫秒刷新一次創(chuàng)建時(shí)間對(duì)象,每隔 100毫秒刷新一次代碼如下圖 4.9所示:圖4.9創(chuàng)建時(shí)間對(duì)象隨意編輯精品文檔2.5分?jǐn)?shù)代碼。每消除一對(duì)圖片,則分?jǐn)?shù)加上 100。代碼如下圖4.10所示:圖4.10 分?jǐn)?shù)代碼消除圖片具體情況當(dāng)點(diǎn)擊兩個(gè)按鈕的圖片一樣時(shí), 運(yùn)用消去算法來(lái)判斷是否可消去, 具體情況如下:3.1兩次點(diǎn)擊相同圖片相鄰當(dāng)兩次點(diǎn)擊的相同圖片相鄰時(shí) ,如下圖4.11所示,則消去。圖4.11 點(diǎn)擊圖片相鄰3.2水平方向消去算法當(dāng)兩次點(diǎn)擊的相同圖片如下圖 4.12所示,則在水平方向用循環(huán)算法 for(j=隨意編輯精品文檔0;j<7;j++) 判斷,設(shè)第一次選中按鈕坐標(biāo)為 x0,y0,第二次選中按鈕坐標(biāo)為 x,y,則先找到grid(x0,j)為0的j,再判斷x水平方向x到j(luò)是否grid(x,j)都為0,若是則判斷x0水平方向x0到j(luò)是否grid(x0,j)都為0,若是,則再判斷x和x0,若相等消去,若不等判斷在 j豎直方向上是否 grid(n,j)(n為x到x0之間的數(shù))都為 0,若是則消去。圖4.12水平消去算法圖片3.3豎直方向消去算法豎直方向消去算法。情況與水平方向基本相同,重點(diǎn)提一下圖片4.13所示的情況,其余情況不再重復(fù)描述。出現(xiàn)下圖情況則會(huì)消去,消去原理與水平方向消去算法相似。圖4.13豎直消去算法圖片隨意編輯精品文檔第五章 程序清單packagec02; cnt,0,cnt,this.getHeight());// 填充一個(gè) 矩形區(qū)域 }import publicbooleanisEnd(){ if(cnt++> this.getWidth()) returntrue;classMyPanelextendsJPanel{ repaint();intcnt=0; returnfalse;publicvoidpaint(Graphicsg){ }super.paint(g); }g.setColor(Color.red); publicclassLianLianKang.fillRect(this.getWidth()- implementsActionListener{隨意編輯精品文檔JFramemainFrame;// 主面板 inti,j,k,n;// 消除方法控制MyPaneltime; //============= 調(diào)用圖片JPanelcenterPanel,southPanel, ================//northPanel;//3 個(gè)子面板 privatestaticIconicons[]=JButtondiamondsButton[][]= newImageIcon[6*5]; //靜態(tài)數(shù)組iconsnewJButton[6][5];// 游戲按鈕數(shù)組 【】用于存放圖片絕對(duì)地址JButtonexitButton, privatestaticfinalStringnewlyButton;// 退出,重新開(kāi)始按鈕 imgDir="f:/meng";JLabelscoreLable;// 分?jǐn)?shù)標(biāo)簽 static{JButtonfirstButton, trysecondButton;// 分別記錄兩次被選中的 {按鈕 Filedir=newTimertimer; File(imgDir);intgrid[][]=newint[8][7];// 儲(chǔ) File[]imgFiles=存游戲按鈕位置 dir.listFiles(newFilenameFilter(){ //獲staticboolean 取f:/meng 文件中的圖片pressInformation=false;// 判斷是否有 publicboolean按鈕被選中 accept(Filedir,Stringname){intsum=0; returnintx0=0,y0=0,x=0,y=0, name.toLowerCase().endsWith(".jpg");fristMsg=0,secondMsg=0;// 游戲按 }鈕的位置坐標(biāo) });隨意編輯精品文檔for(inti=0;i<6*5;體所在的應(yīng)用程序i++){//獲取f:/meng文件mainFrame.setLayout(new中的圖片的絕對(duì)路徑放在icons數(shù)組中BorderLayout());//設(shè)置為icons[i]=newBorderLayout()布局ImageIcon(imgFiles[i].getAbsolutePathscoreLable=new());JLabel("0");//centerPanel=newSystem.out.println(i+""+icons[i]);JPanel();//設(shè)置面板}southPanel=newJPanel();}catch(Exceptione){northPanel=newJPanel();e.printStackTrace();//northPanel.setLayout(new異常處理BorderLayout());//設(shè)置時(shí)間分?jǐn)?shù)面板布}局為邊界布局}publicvoidinit()mainFrame.add(centerPanel,{//初始化面板"Center");//添加組件mainFrame=newJFrame("JKJ連連看");//設(shè)置主面板的名mainFrame.add(southPanel,稱為"JKJ連連看""South");mainFrame.setDefaultCloseOperati mainFrame.add(northPanel,on(JFrame.EXIT_ON_CLOSE);// 結(jié)束窗 "North");隨意編輯精品文檔centerPanel.setLayout(new }GridLayout(6,5));// 設(shè)置一個(gè) 6*5的網(wǎng)格 exitButton=new布局 JButton(" 退出");// 退出按鈕for(intcols=0;cols<6;cols++){ exitButton.addActionListener(this);for(introws=0;rows newlyButton=new<5;rows++){ JButton(" 再來(lái)一局");// 再來(lái)一局按鈕//=========== 設(shè)置圖片 newlyButton.addActionListener(thi=============// s);diamondsButton[cols][rows]=new southPanel.add(exitButton);// 添加JButton( 退出按鈕icons[grid[cols+1][rows+1]]); southPanel.add(newlyButton);// 添加再來(lái)一局按鈕diamondsButton[cols][rows].addAcscoreLable.setText(String.valueOf(ItionListener(this);nteger.parseInt(scoreLable.getText())));centerPanel.add(diamondsButton[time=newMyPanel();cols][rows]);northPanel.add(time,}隨意編輯精品文檔BorderLayout.CENTER); //時(shí)間-分?jǐn)?shù) 就是icon【】下標(biāo)+1)面板上在CENTER位置添加時(shí)間 {northPanel.add(scoreLable, intrandoms,cols,rows;//BorderLayout.WEST); //時(shí)間-分?jǐn)?shù)面板 變量定義上在WEST位置添加分?jǐn)?shù) Lable for(inttwins=1;twins<=mainFrame.setSize(500, 15;twins++){450); // 設(shè)置主面板的大小 randoms=(int)(Math.random()*24);mainFrame.setLocationRelativeTo( for(intalike=1;alikenull); //設(shè)置窗口在屏幕中間顯示 <=2;alike++){cols=(int)mainFrame.setVisible(true);// 設(shè)置 (Math.random()*6+1);窗口可見(jiàn) rows=(int)} (Math.random()*5+1);publicvoidstartt(){ whiletimer=newTimer(10,this); (grid[cols][rows]!=0){//創(chuàng)建時(shí)間對(duì)象,每隔 100毫秒計(jì)時(shí)一次。 cols=(int)init(); (Math.random()*6+1);timer.start(); rows=(int)} (Math.random()*5+1);publicvoidrandomBuild()// 初 }始化存放游戲按鈕位置的 grid[][] 數(shù)組(也隨意編輯精品文檔this.grid[cols][rows]=randoms; if(this.grid[i][ j]!=0){}save[n]=}this.grid[i][j];}n++;publicvoidscore()// 方法聲明}{}}scoreLable.setText(String.valueOf(In=n-1;nteger.parseInt(scoreLablethis.grid=grid;//this 出現(xiàn).getText())+100));在實(shí)例方法中,表示使用該方法的當(dāng)前對(duì)象}while(n>=0)//while 循環(huán)publicvoidreload()// 方法聲明{{cols=(int)intsave[]=newint[30];//(Math.random()*6+1);創(chuàng)建聲明數(shù)組rows=(int)intn=0,cols,rows;// 變(Math.random()*5+1);量定義whileintgrid[][]=newint[8][7];(grid[cols][rows]!=0)// 循環(huán)嵌套創(chuàng)建聲明數(shù)組{for(inti=0;i<=6;i++){cols=(int)for(intj=0;j<=5;(Math.random()*6+1);j++){隨意編輯精品文檔rows=(int)(Math.random()*5+1); diamondsButton[i][j].setVisible(fals} e);// 窗口不可見(jiàn)this.grid[cols][rows]= }save[n];//this 出現(xiàn)在實(shí)例方法中, 表示使 }用該方法的當(dāng)前對(duì)象 }n--;publicvoidestimateEven(int}placeX,intplaceY,JButtonbz)// 點(diǎn)擊按鈕觸發(fā)mainFrame.setVisible(false);// 窗口{不可見(jiàn)if(pressInformation==pressInformation=false;false)// 選擇語(yǔ)句// 這里一定要將按鈕點(diǎn)擊信息歸為初始{init();x=placeX;for(inti=0;i<6;i++)//y=placeY;for循環(huán)secondMsg={grid[x][y];for(intj=0;j<5;secondButton=bz;j++)// 循環(huán)嵌套pressInformation={true;if(grid[i+1][j+1]}else{==0)x0=x;隨意編輯精品文檔y0=y; ||(y0==y)&&fristMsg= ((x0==x+1||x0==x-1))) // 判斷secondMsg; 是否相鄰firstButton= {secondButton; remove();x=placeX; }else{y=placeY; for(j=0;j<7;j++){secondMsg= if(grid[x0][j]==grid[x][y]; 0)// 判斷第一個(gè)按鈕同行哪個(gè)按鈕為空secondButton=bz; {if(fristMsg== if(y>j)// 如secondMsg&&secondButton!= 果第二個(gè)按鈕的 Y坐標(biāo)大于空按鈕的 Y坐標(biāo)firstButton){ // 相同的情況下能不能 說(shuō)明第一按鈕在第二按鈕左邊消去。 {xiao(); for(i=y-} 1;i>=j;i--)// 判斷第二按鈕左側(cè)直到第} 一按鈕中間有沒(méi)有按鈕} {ifpublicvoidxiao()(grid[x][i]!=0){{kif((x0==x&&(y0==y+=0;1||y0==y-1))隨意編輯精品文檔{break; if}else (grid[x][i]!=0){{ kk =0;=1;}// break;K=1說(shuō)明通過(guò)了第一次驗(yàn)證 }else} {if(k==1) k{ =1;}linePassOne(); }} if(k==1)} {if(y<j)// 如果第二個(gè)按鈕的 Y坐標(biāo)小于空按鈕的 Y坐標(biāo) linePassOne();說(shuō)明第一按鈕在第二按鈕右邊 }{ }for(i=y if(y==j){+1;i<=j;i++)// 判斷第二按鈕左側(cè)直到第一按鈕中間有沒(méi)有按鈕 linePassOne();隨意編輯精品文檔} }} if(x0>x){if(k==2){ for(n=if(x0==x){ x0;n>=x+1;n--){remove(); if} (grid[n][ j]!=0){if(x0<x){ kfor(n= =0;x0;n<=x-1;n++){if break;(grid[n][ j]!=0){ }k if=0; (grid[n][ j]==0&&n==x+1){break; remove();} }if }(grid[n][ j]==0&&n==x-1){ }}remove(); }} for(i=0;i<8;i++)//} 列隨意編輯精品文檔{ }if(grid[i][y0]==0) }{ if(x<i){if(x>i){ for(j=xfor(j=x +1;j<=i;j++){-1;j>=i;j--){ ifif (grid[ j][y]!=0){(grid[j][y]!=0){ kk =0;=0;break;break; }else}else {{ kk =1;=1; }} }} if(k==1)if(k==1) {{rowPassOne();rowPassOne(); }隨意編輯精品文檔}if(x==i){ remove();}rowPassOne();
}}}if(k==2){if(y0==y){remove();}if(y0<y){for(n=
y0;n>=y+1;n--){(grid[i][n]!=0){=0;
}if(y0>y){for(n=ifky0;n<=y-1;n++){if break;(grid[i][n]!=0){ }k if=0; (grid[i][n]==0&&n==y+1){break; remove();} }if }(grid[i][n]==0&&n==y-1){ }隨意編輯精品文檔} if(y0<j)// 第一按鈕同行空} 按鈕在與第二按鈕之間} {} for(i=y0+1;i<=j;publicvoidlinePassOne(){ i++){if(y0>j)// 第一按鈕同行空 if(grid[x0][i]!=0)按鈕在左邊 {{ k=0;for(i=y0-1;i>=j; break;i--)// 判斷第一按鈕同左側(cè)空按鈕之間有 }else{沒(méi)按鈕 k=2;{ }if(grid[x0][i]!=0) }{ }k=0; }break; publicvoidrowPassOne(){}else{ if(x0>i){k=2; for(j=x0-1;j>=i;}//K=2 說(shuō)明通過(guò) j--){了第二次驗(yàn)證 if(grid[j][y0]!=0)} {} k=0;隨意編輯精品文檔break; grid[x][y]!=0)}else{ {k=2;} firstButton.setVisible(false);// 不可} 見(jiàn)}if(x0<i){ secondButton.setVisible(false);for(j=x0+1;j<=i; score();j++){ //分?jǐn)?shù)加100if(grid[j][y0]!=0) pressInformation={ false;k=0; grid[x0][y0]=0;break; grid[x][y]=0;}else{ sum++;k=2; if(sum==15)} {} timer.stop();} if} (JOptionPane.showConfirmDialog(maipublicvoidremove(){ //消除 nFrame,兩個(gè)按鈕 "恭喜你,你贏if(grid[x0][y0]!=0&& 了! 想再來(lái)一局嗎? ","勝利",隨意編輯精品文檔publicvoidJOptionPane.YES_NO_OPTION)==actionPerformed(ActionEvente){ //JOptionPane.OK_OPTION){接口實(shí)現(xiàn)intgrid[][]=newif(e.getSource()==int[8][7];newlyButton){this.grid=grid;intgrid[][]=newrandomBuild();int[8][7];// 創(chuàng)建數(shù)組this.grid=grid;mainFrame.setVisible(false);// 窗口randomBuild();不可見(jiàn)pressInformationmainFrame.setVisible(false);// 窗口=false;不可見(jiàn)init();pressInformation=timer.start();// 啟動(dòng) false;線程 init();sum=0; timer.start();}else sum=0;System.exit(0); }if(e.getSource()==}exitButton)}System.exit(0);}if(e.getSource()==timer)隨意編輯精品文檔{if(time.isEnd()){ pressInformation=false;timer.stop();// 時(shí)間init();到的提示if timer.start();//(JOptionPane.showConfirmDialog(mai 啟動(dòng)線程nFrame, sum=0;"時(shí)間到 }else了,o(︶︿︶)o\n 要再來(lái)一局嗎? ","提示", System.exit(0);}JOptionPane.YES_NO_OPTION)== }JOptionPane.OK_OPTION){ for(intcols=0;cols<6;intgrid[][]= cols++){newint[8][7]; for(introws=0;rowsthis.grid= <5;rows++){grid; if(e.getSource()==diamondsButton[cols][rows]){randomBuild();estimateEven(cols+1,rows+1,mainFrame.setVisible(false);// 窗口 diamondsButton[cols][rows]);不可見(jiàn) }隨意編輯精品文檔} LianLianKan();// 創(chuàng)建對(duì)象} llk.randomBuild();// 調(diào)用方} 法publicstaticvoidmain(String[] llk.startt();args){// 主函數(shù) }LianLianKanllk=new }第六章 結(jié)束語(yǔ)本次java課程設(shè)計(jì),通過(guò)一學(xué)期的學(xué)習(xí)知識(shí),成功的設(shè)計(jì)出一個(gè)非常經(jīng)典的連連看小游戲,參考網(wǎng)絡(luò)上的知識(shí),進(jìn)行擴(kuò)展知識(shí)面,本節(jié)只要了解了圖形界面的概念,及其應(yīng)用到實(shí)際界面中,深刻的了解了AWT得基本體系結(jié)構(gòu),SWING組件的功能,Swing組件從功能上分為三種類型 :頂級(jí)組件,中間組件和基本組
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)隔振器市場(chǎng)供需現(xiàn)狀規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)防脫發(fā)市場(chǎng)運(yùn)行狀況及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)鎳鋅電池市場(chǎng)競(jìng)爭(zhēng)格局及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)車庫(kù)門市場(chǎng)運(yùn)營(yíng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)貴金屬冶煉市場(chǎng)運(yùn)營(yíng)狀況規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)蜂膠市場(chǎng)運(yùn)行現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)藥酒市場(chǎng)發(fā)展現(xiàn)狀與投資規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)胡蘿卜素行業(yè)運(yùn)營(yíng)狀況及投資前景預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)耐火型電纜產(chǎn)業(yè)十三五規(guī)劃及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)緩降器產(chǎn)業(yè)前景預(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 小學(xué)三年級(jí)語(yǔ)文質(zhì)量分析課件
- 腹腔化療腫瘤課件
- 四川省成都市武侯區(qū)2022-2023學(xué)年七年級(jí)下學(xué)期期末英語(yǔ)試卷(含答案)
- 腦卒中患者護(hù)理查房
- 智能機(jī)器人與傳感器PPT完整全套教學(xué)課件
- 高效空調(diào)制冷機(jī)房智能控制系統(tǒng)技術(shù)規(guī)程
- 《動(dòng)物王國(guó)開(kāi)大會(huì)》說(shuō)課PPT
- GB/T 42595-2023承壓設(shè)備修理基本要求
- 春玉米套種秋黃瓜技術(shù)
- 四年級(jí)下冊(cè)勞動(dòng)技術(shù)教案
- 城市軌道交通服務(wù)禮儀和意識(shí)基本知識(shí)
評(píng)論
0/150
提交評(píng)論