連連看游戲的設(shè)計與實現(xiàn)_第1頁
連連看游戲的設(shè)計與實現(xiàn)_第2頁
連連看游戲的設(shè)計與實現(xiàn)_第3頁
連連看游戲的設(shè)計與實現(xiàn)_第4頁
連連看游戲的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 淮 海 工 學(xué) 院 計算機(jī)工程學(xué)院課程設(shè)計報告設(shè)計名稱: 面向?qū)ο笳n程設(shè)計 選題名稱: 連連看游戲的設(shè)計與實現(xiàn) 姓 名: 學(xué) 號: 專業(yè)班級: 網(wǎng)絡(luò)工程122 系 (院): 計算機(jī)工程學(xué)院 設(shè)計時間: 2014.3.122014.4.10 設(shè)計地點: 軟件實驗室、教室 成績:指導(dǎo)教師評語: 簽名: 年 月 日面向?qū)ο笳n程設(shè)計報告 第 17 頁,共 17 頁1課程設(shè)計目的面向?qū)ο蟪绦蛟O(shè)計是一門實踐性很強(qiáng)的計算機(jī)專業(yè)基礎(chǔ)課程,課程設(shè)計是學(xué)習(xí)完該課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于通過實踐加深學(xué)生對面向?qū)ο蟪绦蛟O(shè)計的理論、方法和基礎(chǔ)知識的理解,掌握使用Java語言進(jìn)行面向?qū)ο笤O(shè)計的基本方法

2、,提高運(yùn)用面向?qū)ο笾R分析實際問題、解決實際問題的能力。2課程設(shè)計任務(wù)與要求:課程設(shè)計可選用NetBeans、Eclipse、JBuilder等作為開發(fā)平臺以提高開發(fā)效率,盡可能熟練掌握其中一種集成開發(fā)環(huán)境。建議采用UML建模技術(shù)進(jìn)行系統(tǒng)的分析設(shè)計,在Visio中畫出系統(tǒng)用例圖和類圖,并將UML圖復(fù)制到設(shè)計報告中。通過這次設(shè)計,要求掌握以下內(nèi)容:1) 面向?qū)ο蠹夹g(shù)中的繼承與多態(tài)(重載和覆蓋)機(jī)制、各種修飾符的使用2) 類、包、接口的定義與使用3) 常用工具類與算法的實現(xiàn)(數(shù)組、向量、字符串、鏈表)4) Java常用標(biāo)準(zhǔn)GUI組件及其事件處理5) Java的異常處理機(jī)制6) Java的數(shù)據(jù)庫連接

3、技術(shù)7) Java的多線程技術(shù)與動畫制作8) Java的網(wǎng)絡(luò)編程連連看游戲的設(shè)計與實現(xiàn)設(shè)計一個連連看小游戲的功能的java程序,包括以下功能:(1) 設(shè)計主頁面功能的實現(xiàn),按簡單,中等,高難等級,調(diào)入圖片,圖片必須是雙數(shù),等級實現(xiàn)圖片的排版;(2) 設(shè)計刷新,開始按鈕,按直線,一個轉(zhuǎn)角,兩個轉(zhuǎn)角相連,消去可以連接的圖片,(3) 設(shè)計時間漏斗計算時間,超過時間,游戲結(jié)束,未到時間,進(jìn)入下一關(guān);以及自動調(diào)動關(guān)數(shù),游戲分?jǐn)?shù)的疊加;3課程設(shè)計說明書直線1 概要設(shè)計圖片消去(1)用例圖一拐角兩拐角簡單難易選擇中等 用戶難度時間計時漏斗分?jǐn)?shù)累加(2)游戲結(jié)構(gòu)圖難度選擇游戲關(guān)于開始開始演示判斷是否滿足要求否

4、是消除圖片刷新提示全部消除游戲結(jié)束(3)游戲詳細(xì)流程 開始 繼續(xù)游戲兩圖片相同 消去時間=0圖片消完進(jìn)入下一關(guān) 結(jié)束 失敗 Y NY(4)練練看游戲的設(shè)計與實現(xiàn)概述 1.設(shè)計主頁面功能的實現(xiàn),游戲采用美女連連看的方式,界面美觀友好,用戶使用靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠,圖片的消除、排列清晰。 2.按簡單,中等,高難等級,調(diào)入圖片,圖片必須是雙數(shù),等級實現(xiàn)圖片的排版; 3.設(shè)計刷新,開始按鈕,按直線,一個轉(zhuǎn)角,兩個轉(zhuǎn)角相連,消去可以連接的圖片 4 .設(shè)計時間漏斗計算時間,超過時間,游戲結(jié)束,未到時間,進(jìn)入下一關(guān);以及自動調(diào)動關(guān)數(shù),可方便快捷地進(jìn)行下一盤游戲,并且兩盤的分?jǐn)?shù)在規(guī)定的時間

5、內(nèi)會疊加起來,游戲分?jǐn)?shù)的疊加,計分自動完成,提高工作效率。 5.本設(shè)計采用單機(jī)模式,當(dāng)在規(guī)定的時間內(nèi)消完全部的圖片則當(dāng)前關(guān)卡通過,如果在規(guī)定的時間內(nèi)沒能消完所有的圖片則游戲結(jié)束,重新開始新游戲。游戲規(guī)則是模仿普通的連連看游戲,主要是鼠標(biāo)兩次點擊的圖片能否消去的問題。當(dāng)前,前提是點擊兩張相同的圖片,若點擊的是同一張圖片或者兩張不同的圖片,則不予處理。在兩張想同圖片用三根以內(nèi)的直線能連在一起,就可以消去;否則,不予處理。二詳細(xì)設(shè)計3.1游戲功能q 游戲采用美女連連看的方式,界面美觀友好,用戶使用靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠。q 設(shè)置開始.刷新兩個按鈕q 游戲分為簡單,中等,高難,三個等

6、級,每個等級有各自的關(guān)數(shù)。q 用漏斗來表現(xiàn)用掉的時間,提示時間用完,游戲結(jié)束。q 圖片的消除、排列清晰。q 計分自動完成,提高工作效率。q 可方便快捷地進(jìn)行下一盤游戲,并且兩盤的分?jǐn)?shù)在規(guī)定的時間內(nèi)會疊加起來。q 操作員可以隨時退出游戲。q 對用戶輸入的信息,系統(tǒng)進(jìn)行嚴(yán)格的信息檢驗,盡可能排除人為的錯誤。q 系統(tǒng)最大限度地實現(xiàn)了易維護(hù)性和易操作性。q 系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。3.2游戲規(guī)則1、 條件: 程序的關(guān)鍵在于判斷用戶連續(xù)點擊的兩個圖案能否消除。兩個圖片可以消除的條件有兩個: 圖片相同 圖片間連線的轉(zhuǎn)角數(shù)不得超過2個。2.具體操作: 第一次使用鼠標(biāo)點擊游戲界面中的牌,該牌此時為被選中,以特

7、殊方式顯示;再次以鼠標(biāo)點擊其他牌,若該牌與被選中的牌圖案相同,且把第一個牌到第二個牌連起來,中間的直線不超過 3 根,則消掉這一對牌,否則第一個牌恢復(fù)成未被選中狀態(tài),而第二個牌變成被選中狀態(tài)。在規(guī)定的時間內(nèi)將游戲界面上的牌全部消除掉。則游戲勝利 ,在規(guī)定時間,界面上的牌仍未全部消掉。則游戲失敗.根據(jù)轉(zhuǎn)角數(shù)不得超過2個的規(guī)則,我們可以分為轉(zhuǎn)角數(shù)分別為0個、1個、2個這三種情況分別討論。(1)0轉(zhuǎn)角連通(直線連通):兩個圖片的縱坐標(biāo)或橫坐標(biāo)相等,且兩者連線間沒有其他圖案阻隔。 (2)一個轉(zhuǎn)角連通:其實相當(dāng)于兩個圖片的橫向與縱向的直線相交只有一個焦點。 圖4.4.2一個轉(zhuǎn)角連通 (3)兩個轉(zhuǎn)角連通:

8、 判斷圖片A與圖片B能否經(jīng)過有兩個轉(zhuǎn)角的路徑連通實質(zhì)上可以轉(zhuǎn)化為判斷能否找到一個點C,這個C點與A可以直線連通,且C與B可以通過有兩個轉(zhuǎn)角的路徑連通。若能找到這樣一個C點,那么A與B就可以經(jīng)過有兩個轉(zhuǎn)角的路徑連通 。 判斷是否經(jīng)兩個轉(zhuǎn)角連通的算法需要做兩個方向上的掃描:水平掃描和垂直掃描。 水平判斷。如下圖所示,為了判斷A,B能否通過2個轉(zhuǎn)角連通,則從A開始在水平方向上向左右掃描,并判斷經(jīng)過的點能否與B點經(jīng)過1個轉(zhuǎn)角連通。顯然C點能與B點經(jīng)1個轉(zhuǎn)角連通,故A,B能經(jīng)2個轉(zhuǎn)角連通。 垂直判斷。如下圖所示,為了判斷A,B能否通過2個轉(zhuǎn)角連通,則從A開始在垂直方向上下掃描,并判斷經(jīng)過的點能否與B點經(jīng)

9、過1個轉(zhuǎn)角連通。顯然C點能與B點經(jīng)1個轉(zhuǎn)角連通,故A,B能經(jīng)2個轉(zhuǎn)角連通。3.3游戲模塊 游戲思路 獲取圖片: 最基本的就是用button代替圖片進(jìn)行布局了,然后將圖片set到button用來做背景圖片。這里采用最簡單的方法數(shù)組??紤]到圖片是多行多列的格式。所以采用二維數(shù)組(數(shù)組名為game_grid方式來控制比較直觀,并且為了程序容易解讀,統(tǒng)一在不同過程中用名為i和j的變量來分別表示行列。程序開始時給數(shù)組中的各個元素賦初值為0,即表示沒有圖片。 然后數(shù)組控制整個游戲區(qū)域,游戲區(qū)域最外圍為空白區(qū)域,即相關(guān)元素的值為0。這樣就可以保證游戲剛開始后,第二層顯示的圖片之間的相連路徑處理時就沒有阻礙了

10、。 這個游戲考慮到玩家對圖片的愛好不同,故可以自由修改。將數(shù)組game_grid的數(shù)據(jù)與圖片名匹配(如:game_grid的數(shù)據(jù)為125則圖片名為1,2.25與之一一對應(yīng)),玩家則只需要將自己喜歡的圖片改變圖片名字去替換就可以了。其button背景圖片的方法是用ImageIcon來存儲圖片信息然后set到button中。3.4游戲類的實現(xiàn)JFrame lianliankan Lianliankan()lianliankanJPanelpublic lianliankanJPanel()public void paintComponent(Graphics g)public void chong

11、zai() public void newGame() public void guoguan() public void newMap() public boolean linecheck(int y1,int x1,int y2,int x2)public boolean zhejiaocheck(int y1,int x1,int y2,int x2)public boolean liangcizhejiaocheck(int y1,int x1,int y2,int x2)public boolean ifcanTouch(int y1,int x1,int y2,int x2) pu

12、blic void clearBlock() public void actionPerformed(ActionEvent e)Public void itemStateChanged(ItemEvent e) JPanelloudoupublic loudou()public void setdijiguan(int x)public void paintComponent(Graphics g) public void setTimes(int x)public int getTimes()public void run()4課程設(shè)計成果4.1游戲界面4.2等級選擇界面及代碼public

13、 void itemStateChanged(ItemEvent e) /選擇難度if(e.getSource()=difficultChoice)String selected = difficultChoice.getSelectedItem();if(selected=簡單)fruitKinds=8;newGame();repaint();else if(selected=中等)fruitKinds=12;newGame();repaint();else if(selected=高難)fruitKinds=16;newGame();repaint();repaint();public b

14、oolean linecheck(int y1,int x1,int y2,int x2) /判斷是否在一條直線上if(y1=y2)if(x2x1)int j=0;for(int i=0;i0)j+;if(j=0)return true;if(x1x2)int j=0;for(int i=0;i0)j+;if(j=0)return true;4.3消去相同圖片及代碼實現(xiàn)public boolean zhejiaocheck(int y1,int x1,int y2,int x2) /判斷能否折角相連if(linecheck(y1,x1,y2,x1)&linecheck(y2,x1,y2,x2)

15、&mapy2x1=0)return true;if(linecheck(y1,x1,y1, x2)&linecheck(y1,x2,y2,x2)&mapy1x2=0) /一條線上return true;return false;/判斷能否兩次折角相連public boolean liangcizhejiaocheck(int y1,int x1,int y2,int x2) /判斷能否兩次折角相連for(int i=0;i9;i+)if(x2+1+i=0&mapy2x2-1-i=0&linecheck(y2, x2, y2, x2-1-i)if(zhejiaocheck(y1, x1, y2,

16、 x2-1-i)return true;if(y2+1+i=0&mapy2-1-ix2=0&linecheck(y2, x2, y2-1-i, x2)if(zhejiaocheck(y1, x1, y2-1-i, x2)return true;return false;4.4重新開始游戲public void newGame() /重新開始游戲for(int i=0;i10;i+)for(int j=0;j10;j+)BlockButtonji.setEnabled(true);int map=new int1010;this.map=map;newMap();ld.setTimes(0);s

17、core=0;guanshu=0;ld.setdijiguan(guanshu);代碼實現(xiàn)如下:4.5游戲結(jié)束提示界面及代碼public void run()while(dijiguan20)if(remainTimes=0)overJLabel.setText( START !);if(remainTimes=80)overJLabel.setText(TIMES UP!);JOptionPane.showMessageDialog(null,游戲結(jié)束);remainTimes+;repaint();游戲結(jié)束代碼try if(dijiguan=6&dijiguan8)Thread.sleep

18、(550-(dijiguan-8)*20);catch (InterruptedException e)e.printStackTrace();5.課程設(shè)計心得游戲“連連看”顧名思義就是找出相關(guān)聯(lián)的東西,這個連連看在網(wǎng)上基本是用在小游戲中,就是找出相同的兩樣?xùn)|西,在一定的規(guī)則之內(nèi)可以做為相關(guān)聯(lián)處理?,F(xiàn)在網(wǎng)絡(luò)小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡單外,很多游戲不乏經(jīng)典。連連看游戲就是典型。不管走到哪個網(wǎng)頁游戲網(wǎng)站,連連看游戲總是排在受玩家歡迎排名的前5位,休閑、趣味、益智是連連看玩不厭的精華,且不分男女老少、工薪白領(lǐng),是一款適合大眾的經(jīng)典網(wǎng)絡(luò)休閑小游戲。課程設(shè)計是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.回顧此次連連看游戲設(shè)計,從理論到實踐,學(xué)到了很多很多的東西的同時也意識到不足,由于以前對Java的swing編程不是很

溫馨提示

  • 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

提交評論