版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p><b> 連連看小游戲設(shè)計</b></p><p><b> 摘要</b></p><p> 游戲“連連看”,只要將相同花色的兩張
2、牌用三根以內(nèi)的直線連在一起就可以消除,規(guī)則簡單容易上手。這個程序的界面使用Jframe框架,主程序窗口包含一個主面板,其中包含兩個子面板,左邊一層子面板是游戲窗口,符合我們玩游戲的習(xí)慣,包含連連看游戲的圖片元素,用戶進(jìn)行游戲能找到32對圖片;右邊一層用來實現(xiàn)游戲控制,有開始、刷新、選擇難度、顯示分?jǐn)?shù)、進(jìn)度條等功能選項。結(jié)合Java 編程語言的簡單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程、動態(tài)和連連看游戲的
3、休閑、趣味、益智加上美觀的界面設(shè)計和秀色可餐的水果蔬菜游戲圖片元素,使這款連連看游戲成為現(xiàn)代都市人們打發(fā)無聊,放松身心的好幫手。加入了游戲時間控制和過關(guān)控制及進(jìn)度條提示功能使游戲速度節(jié)奏快,畫面清晰可愛,老少皆宜。通過ActionEvent組件進(jìn)行動作事件的監(jiān)聽和處理。游戲通過定義數(shù)組,根據(jù)一定的算法實現(xiàn)規(guī)定的路徑判斷。</p><p> 關(guān)鍵字: Java連連看;Jframe;數(shù)組;路徑判斷</p>
4、;<p><b> Abstract</b></p><p> The game "lianliankan", as long as the two cards with the same suit straight up to three connected can be eliminated, rules are easy. This program
5、 of interface using Jframe framework, main program window contains a a main panel, which contains two a child Panel, left a layer child Panel is game window, meet we playing game of habits, contains fest see game of pict
6、ures element, user for game can found 32 on pictures; right a layer used to achieved game control, has began, and refresh, and select </p><p> Key words: Java Lianliankan ; Jframe ; array ; approaches</p
7、><p><b> 目錄</b></p><p> 1.引 言………………………………………………………………………………1</p><p> 2.游戲規(guī)則………………………………………………………1</p><p> 2.1概要………………………………………………………………1</p><p&g
8、t; 2.2操作………………………………………………………………1</p><p> 2.3勝利條件…………………………………………………………1</p><p> 2.4失敗條件……………………………………………………………1</p><p> 3.發(fā)展概況…………………………………………………………1</p><p> 3.1連
9、連看游戲的歷史………………………………………………1</p><p> 3.2用java語言寫連連看游戲的原因………………………………2</p><p> 4.方案論證………………………………………………………2</p><p> 4.1設(shè)計原理………………………………………………………2</p><p> 4.2方案選擇………………
10、………………………………………3</p><p> 4.3主要問題………………………………………………………3</p><p> 4.4技術(shù)要求………………………………………………………3</p><p> 4.5游戲應(yīng)用環(huán)境的構(gòu)建……………………………………………4</p><p> 5.系統(tǒng)分析………………………………………………
11、…………4</p><p> 5.1模塊分析………………………………………………………4</p><p> 5.1.1 界面的設(shè)計和圖片的隨機(jī)生成模塊………………………………5 </p><p> 5.1.2 菜單控制模塊………………………………………………………5</p><p> 5.1.3算法模塊…………………………………………
12、…………………5 </p><p> 5.2 基本思路…………………………………………………………6</p><p> 5.2.1 游戲地圖設(shè)計思路……………………………………………6</p><p> 5.2.2 連連看游戲圖片………………………………………………6</p><p> 5.2.3 獲取圖片位置………………………………
13、…………………6 </p><p> 5.2.4 路徑判斷思路…………………………………………………7</p><p> 6.系統(tǒng)設(shè)計……………………………………………………8</p><p> 6.1主界面的設(shè)計…………………………………………………………8</p><p> 6.2圖片的隨機(jī)生成………………………………………………
14、9 </p><p> 6.3單擊控件的事件觸發(fā)…………………………………………9</p><p> 6.3.1開始游戲按鈕………………………………………………9</p><p> 6.3.2重列按鈕……………………………………………………10</p><p> 6.3.3難度選擇按鈕………………………………………………10</
15、p><p> 6.4清除兩個一樣的符合條件的方塊……………………………………10</p><p> 6.5過關(guān)設(shè)置…………………………………………………………10</p><p> 7.結(jié)果分析…………………………………………………………11</p><p> 7.1優(yōu)點(diǎn)………………………………………………………………11</p&g
16、t;<p> 7.2缺點(diǎn)………………………………………………………………11</p><p> 8.總結(jié)……………………………………………………………………11</p><p> 參考文獻(xiàn)………………………………………………………………13</p><p> 致 謝……………………………………………………………………………14</p>
17、;<p><b> 1.引言</b></p><p> 網(wǎng)絡(luò)小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡單外(不像其他游戲還需要注冊下載繁瑣過程),很多游戲不乏經(jīng)典。連連看游戲就是典型。</p><p> 不管走到哪個網(wǎng)頁游戲網(wǎng)站,連連看游戲總是排在受玩家歡迎排名的前5位,休閑、趣味、益智是連連看玩不厭的精華,且不分男女老少、工薪白領(lǐng),是一款適
18、合大眾的經(jīng)典網(wǎng)絡(luò)休閑小游戲。</p><p> 作為最基本的網(wǎng)頁游戲之一,“連連看”游戲的設(shè)計與實現(xiàn)可以積累開發(fā)網(wǎng)頁游戲的經(jīng)驗,完善開發(fā)思路,為以后更高層次上的網(wǎng)頁游戲開發(fā),打下堅實的基礎(chǔ),更好的推動網(wǎng)頁游戲的發(fā)展。</p><p> 現(xiàn)代人生活節(jié)奏快,工作壓力大,諸如此類游戲不僅益智,而且簡單易玩有趣,能放松心情,打發(fā)無聊,平淡中創(chuàng)造樂趣。</p><p>&
19、lt;b> 2.游戲規(guī)則</b></p><p><b> 2.1 概要</b></p><p> 玩家可以將 2 個相同圖案的牌連接起來,連接線不多于 3 根直線,就可以成功將兩個牌消除。 </p><p><b> 2.2 操作</b></p><p> 第一次使用鼠
20、標(biāo)點(diǎn)擊游戲界面中的牌,該牌此時為"被選中",以特殊方式顯示;再次以鼠標(biāo)點(diǎn)擊其他牌,若該牌與被選中的牌圖案相同,且把第一個牌到第二個牌連起來,中間的直線不超過 3 根,則消掉這一對牌,否則第一個牌恢復(fù)成未被選中狀態(tài),而第二個牌變成被選中狀態(tài)。</p><p><b> 2.3 勝利條件</b></p><p> 將游戲界面上的牌全部消除掉。<
21、;/p><p><b> 2.4 失敗條件</b></p><p> 到規(guī)定時間,界面上的牌仍未全部消掉。</p><p><b> 3.發(fā)展概況</b></p><p> 3.1 連連看游戲的歷史</p><p> 游戲“連連看”顧名思義就是找出相關(guān)聯(lián)的東西,這個連連
22、看在網(wǎng)上基本是用在小游戲中,就是找出相同的兩樣?xùn)|西,在一定的規(guī)則之內(nèi)可以做為相關(guān)聯(lián)處理?!斑B連看”的發(fā)展經(jīng)歷了從桌面游戲、在線游戲、社交游戲三個過程。 </p><p> 游戲“連連看”是源自臺灣的桌面小游戲,自從流入大陸以來風(fēng)靡一時,也吸引眾多程序員開發(fā)出多種版本的“連連看”。這其中,顧方編寫的“阿達(dá)連連看”以其精良的制作廣受好評,這也成為顧方“阿達(dá)系列軟件”的核心產(chǎn)品。并于2004年,取得了國家版權(quán)局的計算
23、機(jī)軟件著作權(quán)登記證書。</p><p> 隨著Flash應(yīng)用的流行,網(wǎng)上出現(xiàn)了多種在線Flash版本“連連看”。如“水晶連連看”、“果蔬連連看”等,流行的“水晶連連看”以華麗界面吸引了一大批的女性玩家。</p><p> 2008年,隨著社交網(wǎng)絡(luò)的普及和開放平臺的興起,“連連看”被引入了社交網(wǎng)絡(luò)?!斑B連看”與個人空間相結(jié)合,被快速的傳播,成為一款熱門的社交游戲,其中以開發(fā)者Joneve
24、y在Manyou開放平臺上推出的“寵物連連看”最為流行。 </p><p> 3.2 用Java語言寫連連看游戲的原因</p><p> Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高
25、效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機(jī)、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。</p><p> 因此,結(jié)合Java 編程語言的簡單、面向?qū)ο蟆⒎植际?、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程、動態(tài)和連連看游戲的休閑、趣味、益智,本文將具體介紹用Java語言編寫連連看游
26、戲的可行性和方法。</p><p> 由于計算機(jī)技術(shù)的發(fā)展所帶來的新應(yīng)用的出現(xiàn),Java越來越流行,這種情況是以往程序設(shè)計語言在其生存周期內(nèi)所不多見的。Java語言之所以這樣長盛不衰,一是因為其眾多的技術(shù)特點(diǎn)與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因為SUN公司不斷推出新的版本,完善Java自身的功能。有了這兩點(diǎn),Java語言成為程序員首選的程序設(shè)計開發(fā)工具就在情理之中了。</p><
27、;p> Java編程不僅簡單可靠,而且有功能強(qiáng)大的類庫,本文介紹的Java連連看游戲?qū)⑹褂肧wing類庫,Java的類庫,使用Swing平臺編寫的帶有GUI(圖形用戶接口)的程序和其他原始程序非常不同。選用AWT工具包編寫程序的程序師看到的都是原始接口,而且也無法獲得先進(jìn)的GUI編程支持,如果使用的話,就要提供每個平臺上面所需的API,這將是一項龐大的工程。Swing則是完全用Java語言所寫的程序,避免了接口元素重復(fù)的問題,只
28、使用所有平臺都支持的最基本的繪圖機(jī)制。但是很多用戶不知道如何在Java風(fēng)格和Windows風(fēng)格之間進(jìn)行轉(zhuǎn)換,結(jié)果造成了Java程序的接口在很多程序中非常特殊。蘋果電腦已經(jīng)提供了優(yōu)化過的Java運(yùn)行時程序,包含了Mac OS X的經(jīng)典Aqua接口風(fēng)格。</p><p><b> 4.方案論證</b></p><p><b> 4.1設(shè)計原理 </b&
29、gt;</p><p> 本設(shè)計采用單機(jī)模式,當(dāng)在規(guī)定的時間內(nèi)消完全部的圖片則當(dāng)前關(guān)卡通過,如果在規(guī)定的時間內(nèi)沒能消完所有的圖片則游戲結(jié)束,重新開始新游戲。游戲規(guī)則是模仿普通的連連看游戲,主要是鼠標(biāo)兩次點(diǎn)擊的圖片能否消去的問題。當(dāng)前,前提是點(diǎn)擊兩張相同的圖片,若點(diǎn)擊的是同一張圖片或者兩張不同的圖片,則不予處理。在兩張想同圖片用三根以內(nèi)的直線能連在一起,就可以消去;否則,不予處理。 </p><
30、;p> 游戲過程,如果玩家在一定的時間內(nèi)消完則提示玩家勝利,并進(jìn)入下一關(guān)。如果在一定時間內(nèi)圖片沒有消完則提示玩家時間到。每關(guān)以此類推。</p><p> 考慮到本游戲軟件是單機(jī)小游戲,所以充分考慮到了它的娛樂性,并沒有很復(fù)雜的功能。</p><p><b> 4.2 方案選擇 </b></p><p> 在概要設(shè)計階段,主要有三種
31、方案可供選擇: </p><p> 1.所有圖片在面板的所有方格隨機(jī)出現(xiàn),位置由計算機(jī)隨機(jī)配置,直到面板被填滿。</p><p> 2.所有圖片在面板的所有方格隨機(jī)出現(xiàn),并且每張圖片的的出現(xiàn)次數(shù)為偶數(shù),時間會有限制,每一關(guān)的圖片數(shù)量是不同的,這樣就增加了游戲的難度。</p><p> 3.圖片出現(xiàn)的種類數(shù)和重復(fù)次數(shù)是可以由玩家選擇的,時間由游戲約定。并且每張圖
32、片的的出現(xiàn)次數(shù)為偶數(shù)。</p><p> 在第一種方案中,由于出現(xiàn)的圖片種類數(shù)和重復(fù)次數(shù)都由軟件約定,這樣就不能保證游戲能順利結(jié)束,不可行。第二種方案中,圖片出現(xiàn)的種類數(shù)由軟件控制,缺乏玩家自主選擇的空間,只是在玩系統(tǒng)已經(jīng)是設(shè)定好的游戲,空洞單調(diào),這樣就在無意中降低了玩家在游戲的過程中樂趣,最后致使玩家放棄繼續(xù)玩下去。我們參考了網(wǎng)絡(luò)上的連連看游戲,考慮到游戲的娛樂性。所以我們放棄第一種和第二種方案的設(shè)計思想,參
33、考網(wǎng)絡(luò)上流行的連連看的游戲,設(shè)計出第三種方案。 </p><p><b> 4.3主要問題 </b></p><p> 開始制作游戲時,主要要解決的問題有以下幾個方面:如何設(shè)置整個游戲的界面;如何控制連連看游戲中隨機(jī)圖片的生成且每種圖片必須為偶數(shù)個;游戲開始后,判斷鼠標(biāo)兩次點(diǎn)擊的圖片能否消去,即圖片是否相同且圖片之間路徑的判斷;如何判斷游戲是否結(jié)束以及輸贏問題等。
34、 </p><p><b> 4.4 技術(shù)要求 </b></p><p> 連連看軟件系統(tǒng)能夠提供友好的用戶界面,使操作人員心情放松。具有良好的運(yùn)行效率。</p><p> (1)、用戶可以通過點(diǎn)擊菜單中的“開始游戲”選項,開始新游戲程序。程序會載入圖片,并通過特定的算法排列圖片,并標(biāo)記圖片,以便判斷圖片是否相同。記錄圖片坐標(biāo),以方便計算
35、圖片是否可以相連。確定圖片大小,以確定用戶點(diǎn)擊的是那張圖片。</p><p> (2)、用戶選擇兩張一樣的圖片,通過鼠標(biāo)進(jìn)行選取,如果用戶兩次點(diǎn)擊的圖片不相同,那么系統(tǒng)認(rèn)為用戶沒有點(diǎn)(鼠標(biāo)記數(shù)歸 0),以完成用戶以后的選取工作。如果用戶選擇的是相同的圖片,那么系統(tǒng)會消除這兩張圖片,并使鼠標(biāo)記數(shù)為 0,并消除這兩張圖片的標(biāo)記,使里面的圖片被標(biāo)記在外面。以便用戶可以進(jìn)行以后的選擇。</p><p
36、> (3)、用戶也可使通過使用“刷新”功能進(jìn)行圖片重新排版。</p><p> 4.5 游戲應(yīng)用環(huán)境的構(gòu)建</p><p> 4.5.1 游戲需要的硬件環(huán)境</p><p><b> 普通PC</b></p><p> CPU :1GHz及以上</p><p> 內(nèi)存 : 256
37、MB及以上</p><p> 分辨率 :推薦1024*768像素</p><p> 4.5.2 游戲需要的軟件環(huán)境</p><p> 操作系統(tǒng) :Windows xp/7</p><p> 開發(fā)環(huán)境 :eclipse</p><p> 開發(fā)工具包 :JDK</p><p><b&
38、gt; 5.系統(tǒng)分析</b></p><p> 5.1 模塊分析 </p><p> 針對上面的需求分析,我們把整個軟件分成三個模塊:1、界面設(shè)計和圖片的隨機(jī)生成模塊模塊;2、菜單控制模塊; 3、算法模塊。</p><p> 以下就是系統(tǒng)結(jié)構(gòu)圖(圖5-1)和軟件界面圖(圖5-2):</p><p> 5.1.1
39、界面設(shè)計和圖片的隨機(jī)生成模塊</p><p> (1).游戲界面設(shè)計。</p><p> (2).游戲過關(guān)、失敗的設(shè)計。</p><p> 5.1.2 菜單控制模塊</p><p> (1). 開始游戲:載入游戲圖片,開始游戲計時計分,啟動進(jìn)度條。</p><p> (2). 刷新:計算剩余圖片個數(shù),重新載入
40、圖片,繼續(xù)計時計分。</p><p> (3). 游戲難度選擇:可以選擇四個難度進(jìn)行游戲。</p><p> (4). 提示:游戲過關(guān)和結(jié)束的提示。</p><p> (5). 結(jié)束:結(jié)束游戲。</p><p> 5.1.3 算法模塊</p><p> (1).圖片路徑處理設(shè)計。</p><
41、;p> (2).圖片的產(chǎn)生設(shè)計。</p><p> 游戲流程圖如下圖所示(圖5-3)。</p><p><b> 5.2 基本思路 </b></p><p> 5.2.1 游戲地圖設(shè)計思路</p><p> 地圖的設(shè)計是采用GUI編程的網(wǎng)格布局,定義一個八行八列的網(wǎng)格布局,使用16個數(shù)字然后隨機(jī)產(chǎn)生四個數(shù)
42、字,用二維數(shù)組把它們打亂放到八行八列的網(wǎng)格布局中,注意的是二維數(shù)組的下標(biāo)要和網(wǎng)格布局是的行、列數(shù)相同。</p><p> 5.2.2連連看游戲圖片 </p><p> 連連看游戲的圖片選擇需要一定的技巧,不同年齡段的不同興趣的人對不同的游戲畫面有不同的反應(yīng),為了消除現(xiàn)代社會人們普遍感覺到的疲勞感,我決定用人人都喜歡,簡單易做又養(yǎng)眼的熱帶盛產(chǎn)的水果做連連看圖片,達(dá)到了游戲的初衷——休閑。
43、 </p><p> 5.2.3 獲取圖片位置</p><p> 如何將圖片隨機(jī)的排列在面板上,有兩種方法,一是隨機(jī)選擇圖片,然后按順序排列在畫布上,二是順序選擇圖片隨機(jī)排列在畫布上,這兩種方法都可行,姑且選擇第二種方法,通過數(shù)組從圖片庫得到圖片,隨機(jī)分布在畫布上。為了保證游戲能順利結(jié)束,圖片個數(shù)一定是偶數(shù)個。 </p><p> 5.2.4 路徑判斷的
44、思路</p><p><b> 連連看所要求的是:</b></p><p> 1.兩個目標(biāo)是相同的。 </p><p> 2.兩個目標(biāo)之間連接線的折點(diǎn)不超過兩個。(連接線由x軸和y軸的平行線組成) 那么分析一下連接的情況可以看到,一般分三種情況:</p><p> 1.直線相連 2.一個折點(diǎn)(圖5-4、圖5-5)
45、 3.兩個折點(diǎn)(圖5-6、圖5-7):</p><p> 可以發(fā)現(xiàn),如果有折點(diǎn),每個折點(diǎn)必定有且至少有一個坐標(biāo)(x或者y)是和其中一個目標(biāo)點(diǎn)是相同的,也就是說,折點(diǎn)必定在兩個目標(biāo)點(diǎn)所在的x方向或y方向的直線上。</p><p><b> 所以設(shè)計思路就是:</b></p><p> 假設(shè)目標(biāo)點(diǎn) p1 , p2 ,如果有兩個折點(diǎn)分別為z1
46、, z2 那么,所要進(jìn)行的是: </p><p> 1.如果驗證p1 , p2 直線連線,則連接成立。</p><p> 2.搜索以p1,p2的x,y方向四條直線(可能某兩條直線會重合)上的有限點(diǎn),每次取兩點(diǎn)作為z1,z2,驗證p1到z1/z1到z2/z2到p2 是否都能直線相連,是則連接成立。</p><p><b> 6.系統(tǒng)設(shè)計</b&g
47、t;</p><p> 由于這個程序的界面使用Jframe框架,并不是很復(fù)雜,所以用到的控件也不多,主要核心內(nèi)容還是后臺的代碼設(shè)計。圖片的隨機(jī)生成主要是用到一個map[][]面板數(shù)組,數(shù)組的每一個元素都賦隨機(jī)值,然后根據(jù)數(shù)組元素值,來顯示圖片。 </p><p> 使用Jframe框架進(jìn)行開發(fā)的原因:</p><p> Jframe應(yīng)用軟件開發(fā)平臺是一個基于J
48、avaEE的面向應(yīng)用軟件開發(fā)的框架及自動化代碼生成平臺。通過Jframe應(yīng)用軟件的開發(fā)不需再重頭做起,只需通過Jframe自動代碼生成工具配置,生成業(yè)務(wù)代碼,并在自動生成的代碼基礎(chǔ)上簡單地補(bǔ)充業(yè)務(wù)邏輯即可。</p><p> Jframe降低了軟件研發(fā)的要求,開發(fā)人員也無需掌握太多高深技術(shù),只需掌握J(rèn)ava基礎(chǔ)知識和Javascript基礎(chǔ)知識,就可在平臺上進(jìn)行二次開發(fā),Jframe的目標(biāo)是“直接降低軟件企業(yè)8
49、0%的的研發(fā)成本,縮短項目開發(fā)周期,提升客戶滿意度”;應(yīng)用軟件開發(fā)過程中80%的重復(fù)工作將由Jframe來完成,20%的特殊業(yè)務(wù)邏輯將由程序員在Jframe應(yīng)用開發(fā)平臺基礎(chǔ)上補(bǔ)充完善。</p><p> 6.1 主界面的設(shè)計</p><p> 主類直接繼承自JFrame,就可以直接調(diào)用JFrame的方法了:public class lianliankan extends JFrame。
50、為這個類創(chuàng)建一個Jpanel對象llk,在Jpanel中添加圖片按鈕和控制按鈕,最終界面如圖6-1所示。具體代碼見附錄。</p><p><b> 程序主體界面:</b></p><p> 1、色彩上:總結(jié)人們的視覺習(xí)慣和色彩對眼睛的健康影響,決定對于畫布采用灰色背景,便于識別圖片,集中精力,右邊一側(cè)顯示控制和分?jǐn)?shù),簡單易用。</p><p&g
51、t; 2、功能上:開始和刷新控制按鈕,得分和剩余時間提示,醒目的進(jìn)度條增加了游戲的趣味性。</p><p> 6.2 圖片的隨機(jī)生成 </p><p> 實現(xiàn)這個功能要分兩個步驟: </p><p> 將所有圖片分類并按順序標(biāo)號,程序運(yùn)行時即載入游戲需要的N張圖片,默認(rèn)情況下圖片種類數(shù)是15,并且可以選擇是否重列。</p><p>
52、 通過一個循環(huán),為面板數(shù)組賦隨機(jī)值,其值不大于用戶選擇的圖片種類數(shù)。然后按照面板數(shù)組載入圖片。具體載入圖片的代碼見附錄。 </p><p> 6.3 單擊控件的事件觸發(fā) </p><p> 總共有兩個單擊按鈕。</p><p> 分別是:開始游戲(進(jìn)入游戲狀態(tài))、重列(重新加載圖片)、難度選擇。</p><p>
53、6.3.1 開始游戲按鈕</p><p> (1)將畫板上的所有游戲按鈕激活,即設(shè)置為Enabled。用鼠標(biāo)單擊畫板按鈕時就能夠運(yùn)行設(shè)置好的事件處理函數(shù)actionPerformed,進(jìn)行消去判斷,如果兩個圖片一樣,且滿足消去條件則消去。</p><p> ?。?)新建畫板地圖,畫板上將布滿隨機(jī)圖片。</p><p> ?。?)初始化時間控件jdt的時間為0,時間
54、控件的進(jìn)度條啟動,游戲開始進(jìn)行計時,一分鐘后結(jié)束。</p><p> ?。?)設(shè)置分?jǐn)?shù)標(biāo)簽的數(shù)值為0,開始計算玩家游戲分?jǐn)?shù)。</p><p> ?。?)設(shè)置游戲過關(guān)標(biāo)簽的數(shù)值為0,開始計算玩家游戲過關(guān)數(shù)。</p><p> 6.3.2 重列按鈕</p><p> ?。?)計算游戲剩余未消去的圖片的個數(shù)。</p><p&g
55、t; ?。?)新建地圖,按照游戲剩余未消去圖片的個數(shù)生成圖片,并隨機(jī)排列在畫板上。</p><p> 6.3.3 難度選擇按鈕</p><p> ?。?)若設(shè)置為簡單選項,則設(shè)置蔬菜類型為四個,然后開始新游戲。</p><p> ?。?)若設(shè)置為一般選項,則設(shè)置蔬菜類型為八個,然后開始新游戲。</p><p> ?。?)若設(shè)置為較難選項,則
56、設(shè)置蔬菜類型為十二個,然后開始新游戲。</p><p> ?。?)若設(shè)置為超難選項,則設(shè)置蔬菜類型為十五個,然后開始新游戲。</p><p> 實現(xiàn)代碼見附錄。 </p><p> 6.4清除兩個一樣的符合條件的方塊</p><p> 分 3 種情況:從下面的這三種情況,我們可以知道,需要三個檢測,這三個檢測分別檢測一條直路
57、經(jīng)。這樣就會有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線(兩個轉(zhuǎn)彎點(diǎn))把兩個按鈕連接起來了。 </p><p><b> (1)、相鄰。 </b></p><p> (2)、若不相鄰的先在第一個按鈕的同行找一個空按鈕。1.找到后看第二個按鈕橫向到這個空按鈕所在的列是否有按鈕。2.沒有的話再看第一個按鈕到與它同行的那個空按鈕之間是否有按鈕。3.沒有的話
58、,再從與第一個按鈕同行的那個空按鈕豎向到與第二個按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了可以消了。 </p><p> (3)、若(2)失敗后,再在第一個按鈕的同列找一個空按鈕。1.找到后看第二個按鈕豎向到這個空按鈕所在的行是否有按鈕 2.沒有的話,再看第一個按鈕到與它同列的那個空按鈕之間是否有按鈕。3.沒有的話,再從與第一個按鈕同列的那個空按鈕橫向到與第二個按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了
59、。</p><p> 若以上三步都失敗,說明這兩個按鈕不可以消去。</p><p><b> 實現(xiàn)代碼見附錄。</b></p><p><b> 6.5 過關(guān)設(shè)置</b></p><p> 把界面上全部圖片都消去即為通過此關(guān),進(jìn)入下一關(guān)。</p><p><b&
60、gt; 實現(xiàn)代碼見附錄。</b></p><p><b> 7.結(jié)果分析</b></p><p> 根據(jù)游戲的運(yùn)行結(jié)果得出的結(jié)論: </p><p><b> 7.1 優(yōu)點(diǎn)</b></p><p> (1)程序界面清新易玩,布局比較合理;</p><p>
61、; (2)程序界面功能多,基本能夠滿足玩家的一般需求;</p><p> (3)游戲圖片是我精心挑選的熱帶水果圖,養(yǎng)眼易辨,增加了游戲的趣味;</p><p> ?。?)自己設(shè)計的進(jìn)度條,加入了多線程的功能。</p><p><b> 7.2 不足</b></p><p> ?。?)過關(guān)后,分?jǐn)?shù)不累計,相當(dāng)于重新開
62、始了;</p><p> ?。?)一局游戲難度選擇只能選擇一次,否則算是重新開始,每關(guān)的難度一樣,很不靈活;</p><p> (3)只能重列一次,以至于有時候進(jìn)入死局;</p><p> ?。?)游戲沒有階段性獎勵提示,和過關(guān)提示; </p><p> ?。?)游戲沒有動畫效果,感覺很死板。</p><p><
63、;b> 8.總結(jié)</b></p><p> 做事要積極主動,態(tài)度決定一切,不得不說,同樣的事,同一水平線,不同人做的時候,態(tài)度和積極性就決定著一切,所以一個人只要工作態(tài)度好,我相信這個人的工作絕對不會差。</p><p> 就為解決一個問題,我們可能連續(xù)十幾甚至幾十小時的坐在計算機(jī)前不停的工作。一個問題解決了,可能又有其它的問題出現(xiàn)。而你要是不能堅持下來,可能從前的
64、一切努力都流失了。輕易言敗的人請不要做程序員,你不可能成功。執(zhí)著是最可貴的。</p><p> 整個程序設(shè)計的過程就是一個研究學(xué)習(xí),應(yīng)用,再研究學(xué)習(xí),再應(yīng)用的過程。一名優(yōu)秀的程序員決不會認(rèn)為自己足夠好了,不需要再提高了。自滿自足的人不會是好程序員,會很快落后以致落伍。所以越是優(yōu)秀的程序員越是感覺自己懂得少,不會在人前故意賣弄,這并不是故作謙虛,而是實實在在的感受,親自體會才能明白。</p><
65、;p> 虛心請教不懂就要問,如果是單純技術(shù)上的問題,如果可以google到的,我認(rèn)為就可以自己消化掉!問的問題一定要先google,然后帶著自己的想法,去問一些有經(jīng)驗的人,收獲會更大!</p><p> 浮華的程序員會不懂裝懂,不停的強(qiáng)調(diào)語言的優(yōu)劣,平臺的好壞。追求所謂最新最時尚的技術(shù),停留在表面問題上。</p><p> 優(yōu)秀的程序員是充滿激情和活力的程序員。求知欲和創(chuàng)造欲是
66、原動力。有求知欲你才能不停的學(xué)習(xí),有創(chuàng)造欲你才能不停的超越自己。</p><p> 很多程序員都是在失敗的時候強(qiáng)調(diào)客觀因素,而優(yōu)秀的程序員的程序員都是先反省自己。要明白自己缺陷,再努力去學(xué)習(xí)。沒有人事事都做的成功,也沒有人生來就什么會做。所以失敗了,多想想自身的原因,這樣你才會不停的進(jìn)步,而不是留在原地抱怨。</p><p> 要想飛的更高,我需要一雙有力的翅膀,一雙有力的翅膀,是飛行
67、的最基本的支撐和前提。</p><p> 那什么是程序開發(fā)的最基本的支撐呢,個人感覺是構(gòu)建一個完整的關(guān)于開發(fā)的知識體系和程序員應(yīng)該具備的最基本能力。</p><p> 對技術(shù)迷茫過?動搖過?很正常,每個人都有過這樣的困惑,審慎的對待自己的性格、能力,并作出合理的選擇是我們這代人需要面對的問題之一,我們沒有可以參考的目標(biāo)(對于軟件行業(yè)而言,在國內(nèi)從無到有也才那么10幾年時間,自然沒有什么
68、參考對象),也不像我們的父輩一樣無法選擇,展現(xiàn)在我們面前的是一條更加寬廣的路,也是一條充滿了荊棘的路,所以,選擇也就更加的重要了。</p><p> 我越來越意識到寫程序不是僅僅把程序?qū)懗鰜?,而是要讓你寫的程序可讀,可維護(hù),并且高效。優(yōu)化正確的程序要比改正已優(yōu)化(但是有錯)的程序要容易。</p><p> 此次的畢業(yè)實習(xí)為我深入社會,體驗生活提供了難得的機(jī)會,讓我在實際的社會活動中感受
69、生活。了解社會中生存所應(yīng)具備的各種能力在工作中嚴(yán)格要求自己,虛心向他人請教,學(xué)到更多的知識,掌握一些基本的會計技能,為以后的工作和生活積累更多的知識和寶貴經(jīng)驗。</p><p> 通過本次畢業(yè)設(shè)計,讓我們掌握如何制作一個游戲軟件,以及制作游戲軟件的整個流程,制作游戲軟件的步驟,讓學(xué)生熟悉項目開發(fā)的完整過程,為即將到來的就業(yè)工作打下基礎(chǔ)。另外也通過本次設(shè)計將三年來所學(xué)的專業(yè)知識和其他方面的知識融入到實際應(yīng)用中,在
70、實際運(yùn)用中學(xué)習(xí)和掌握J(rèn)ava程序開發(fā)的全過程,進(jìn)一步熟悉掌握J(rèn)ava程序設(shè)計語言的基礎(chǔ)內(nèi)容、基本技能和方法,同時培養(yǎng)學(xué)生進(jìn)行分析問題、解決問題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計分析、設(shè)計方法、設(shè)計操作與測試、設(shè)計過程的觀察、理解和歸納能力的提高。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 林建素,孟康健.Eclipse開發(fā)學(xué)習(xí)筆記(第1版).北京
71、:電子工業(yè)出版社. 2008.4</p><p> [2] 百度百科.Java.[http://baike.baidu.com/view/29.htm]</p><p> [3] 夏先波.Java JDK實例寶典. 北京:電子工業(yè)出版社,2007</p><p> [4] 百度百科.Swing.[http://baike.baidu.com/view/8955
72、20.htm#sub10070808]</p><p> [5] (美)??藸?Java編程思想(第4版).機(jī)械工業(yè)出版社.2007.6</p><p> [6] Berg, Daniel J:Fritzinger, J. Steven:1962 .Advanced techniques for Java developers.Wiley</p><p> [
73、7] 林信良.Java JDK 7學(xué)習(xí)筆記.清華大學(xué)出版社.2012.5</p><p><b> 致謝</b></p><p> 從接受課題到現(xiàn)在完成畢業(yè)設(shè)計,衷心感謝高媛老師在這段時間里給我的無私幫助。四年的大學(xué)時光即將過去,但我永遠(yuǎn)也忘不了陪我度過美好青春時光的大學(xué)同學(xué),時光匆匆,年復(fù)一年,但改變不了我們的同學(xué)情誼。再次感謝可愛的老師和所有在學(xué)習(xí)上和生活上幫
74、助過我的同學(xué),感謝如母親般培養(yǎng)我關(guān)懷我的母校!</p><p><b> 附錄</b></p><p><b> 連連看游戲源代碼:</b></p><p> import java.awt.*;</p><p> import javax.swing.*;</p><p
75、> import java.awt.event.*;</p><p> public class lianliankan extends JFrame</p><p><b> {</b></p><p> private static final long serialVersionUID = 1L;</p>&l
76、t;p> public static int jifen;</p><p> public static int jishi;</p><p> public lianliankan()</p><p><b> {</b></p><p> lianliankanJPanel llk=new lianl
77、iankanJPanel();</p><p><b> add(llk);</b></p><p><b> }</b></p><p> class lianliankanJPanel extends JPanel implements ActionListener,ItemListener</p>
78、<p><b> {</b></p><p> private static final long serialVersionUID = 1L;</p><p> private int[][] map=new int[10][10];</p><p> private int kinds,randomx,randomy,r
79、andomx1,randomy1;</p><p> private int coordinatex,coordinatey,coordinatex1,coordinatey1;</p><p> private Point lineStart=new Point(0,0);</p><p> private int clicktimes;</p>
80、<p> private int jishushengyu;</p><p> private int fruitKinds=15;</p><p> private int score;</p><p> private int guanshu;</p><p> jindutiao jdt=new jindutia
81、o();</p><p> public JButton BlockButton[][]=new JButton[10][10];</p><p> Choice difficultChoice = new Choice();</p><p> JButton newgameButton=new JButton("開始");</p&g
82、t;<p> JButton reLoad=new JButton("刷新");</p><p> JButton jieshu=new JButton("結(jié)束");</p><p> ImageIcon aIcon = new ImageIcon("image/shucai1.jpg");</p>
83、<p> ImageIcon bIcon = new ImageIcon("image/shucai2.jpg");</p><p> ImageIcon cIcon = new ImageIcon("image/shucai3.jpg");</p><p> ImageIcon dIcon = new ImageIcon(&qu
84、ot;image/shucai4.jpg");</p><p> ImageIcon eIcon = new ImageIcon("image/shucai5.jpg");</p><p> ImageIcon fIcon = new ImageIcon("image/shucai6.jpg");</p><p>
85、; ImageIcon gIcon = new ImageIcon("image/shucai7.jpg");</p><p> ImageIcon hIcon = new ImageIcon("image/shucai8.jpg");</p><p> ImageIcon iIcon = new ImageIcon("image/s
86、hucai9.jpg");</p><p> ImageIcon jIcon = new ImageIcon("image/shucai10.jpg");</p><p> ImageIcon k1Icon = new ImageIcon("image/shucai11.jpg");</p><p> Imag
87、eIcon lIcon = new ImageIcon("image/shucai12.jpg");</p><p> ImageIcon mIcon = new ImageIcon("image/shucai13.jpg");</p><p> ImageIcon nIcon = new ImageIcon("image/shucai
88、14.jpg");</p><p> ImageIcon oIcon = new ImageIcon("image/shucai15.jpg");</p><p> ImageIcon kIcon = new ImageIcon("image/kongbai.jpg");</p><p> public lia
89、nliankanJPanel()</p><p><b> {</b></p><p> this.setLayout(null);</p><p> for(int i=0;i<10;i++)</p><p><b> {</b></p><p> for(
90、int j=0;j<10;j++)</p><p><b> {</b></p><p> BlockButton[i][j]=new JButton();</p><p> add(BlockButton[i][j]);</p><p> BlockButton[i][j].addActionListen
91、er(this);</p><p> BlockButton[i][j].setBounds(j*40, i*40, 40, 40);</p><p><b> }</b></p><p><b> }</b></p><p> difficultChoice.add("超難&qu
92、ot;);</p><p> difficultChoice.add("較難");</p><p> difficultChoice.add("中等");</p><p> difficultChoice.add("簡單"); </p><p> newgameButton.
93、setBounds(map[0].length*40+30, 20, 60, 20);</p><p> reLoad.setBounds(map[0].length*40+30, 60, 60, 20);</p><p> difficultChoice.setBounds(map[0].length*40+30, 100, 60, 20);</p><p>
94、 jieshu.setBounds(0, map[0].length*40+5, 540, 35);</p><p> difficultChoice.addItemListener(this);</p><p> newgameButton.addActionListener(this);</p><p> reLoad.addActionListener
95、(this);</p><p> jieshu.addActionListener(this);</p><p> jdt.setBounds(map[0].length*40+30, 240, 70, 160);</p><p> this.add(jdt);</p><p> this.add(newgameButton);<
96、;/p><p> this.add(reLoad);</p><p> this.add(difficultChoice);</p><p> this.add(jieshu);</p><p><b> } </b></p><p> public void paintComponen
97、t(Graphics g) //畫畫函數(shù)</p><p><b> {</b></p><p> super.paintComponent(g);</p><p> g.drawString("得分: "+score, 430, 160);</p><p> g.
98、drawString("第 "+(guanshu+1)+" 關(guān)", 430, 200);</p><p> for(int i=0;i<10;i++)</p><p><b> {</b></p><p> for(int j=0;j<10;j++)</p><p&g
99、t;<b> {</b></p><p> switch (map[i][j]) </p><p><b> {</b></p><p><b> case 0:</b></p><p> BlockButton[i][j].setIcon(kIcon);</p
100、><p><b> break;</b></p><p><b> case 1:</b></p><p> BlockButton[i][j].setIcon(aIcon);</p><p><b> break;</b></p><p><
101、b> case 2:</b></p><p> BlockButton[i][j].setIcon(bIcon);</p><p><b> break;</b></p><p><b> case 3:</b></p><p> BlockButton[i][j].se
102、tIcon(cIcon);</p><p><b> break;</b></p><p><b> case 4:</b></p><p> BlockButton[i][j].setIcon(dIcon);</p><p><b> break;</b></p
103、><p><b> case 5:</b></p><p> BlockButton[i][j].setIcon(eIcon);</p><p><b> break;</b></p><p><b> case 6:</b></p><p> B
104、lockButton[i][j].setIcon(fIcon);</p><p><b> break;</b></p><p><b> case 7:</b></p><p> BlockButton[i][j].setIcon(gIcon);</p><p><b> bre
105、ak;</b></p><p><b> case 8:</b></p><p> BlockButton[i][j].setIcon(hIcon);</p><p><b> break;</b></p><p><b> case 9:</b></
106、p><p> BlockButton[i][j].setIcon(iIcon);</p><p><b> break;</b></p><p><b> case 10:</b></p><p> BlockButton[i][j].setIcon(jIcon);</p><
107、;p><b> break;</b></p><p><b> case 11:</b></p><p> BlockButton[i][j].setIcon(k1Icon);</p><p><b> break;</b></p><p><b>
108、case 12:</b></p><p> BlockButton[i][j].setIcon(lIcon);</p><p><b> break;</b></p><p><b> case 13:</b></p><p> BlockButton[i][j].setIcon
109、(mIcon);</p><p><b> break;</b></p><p><b> case 14:</b></p><p> BlockButton[i][j].setIcon(nIcon);</p><p><b> break;</b></p>
110、<p><b> case 15:</b></p><p> BlockButton[i][j].setIcon(oIcon);</p><p><b> break;</b></p><p><b> default:</b></p><p><b
111、> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> pub
112、lic void chongzai() //重載函數(shù)</p><p><b> { </b></p><p> jishushengyu=0;</p><p> for(int i=1;i<9;i++)</p><p><b> {</b></p><p&g
113、t; for(int j=1;j<9;j++)</p><p><b> {</b></p><p> if(map[i][j]>0)</p><p><b> {</b></p><p> jishushengyu++;</p><p><b&g
114、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> int[][] map1=new int[10][10];</p><p> this.map=map1;</p><p> for(int
115、 i=0;i<jishushengyu/2;i++)</p><p><b> {</b></p><p> kinds=(int)(Math.random()*1000)%fruitKinds+1;</p><p><b> do {</b></p><p> randomx1=(i
116、nt)(Math.random()*1000)%8+1;</p><p> randomy1=(int)(Math.random()*1000)%8+1;</p><p> } while (map[randomy1][randomx1]>0);</p><p> map[randomy1][randomx1]=kinds;</p><
117、;p><b> do {</b></p><p> randomx=(int)(Math.random()*1000)%8+1;</p><p> randomy=(int)(Math.random()*1000)%8+1;</p><p> } while (map[randomy][randomx]>0);</p&
118、gt;<p> map[randomy][randomx]=kinds;</p><p><b> }</b></p><p> repaint();</p><p><b> }</b></p><p> public void newGame() //重新開始游戲<
119、;/p><p><b> { </b></p><p> for(int i=0;i<10;i++)</p><p><b> {</b></p><p> for(int j=0;j<10;j++)</p><p><b> {</b>
120、;</p><p> BlockButton[j][i].setEnabled(true);</p><p><b> }</b></p><p><b> }</b></p><p> int[][] map=new int[10][10];</p><p> t
121、his.map=map;</p><p><b> newMap();</b></p><p> jdt.setTimes(0);</p><p><b> score=0;</b></p><p> guanshu=0;</p><p><b> jif
122、en=1;</b></p><p> jdt.setdijiguan(guanshu);</p><p><b> }</b></p><p> public void guoguan() //所有方塊清除 進(jìn)行下一關(guān)</p><p><b> { </b></p>
123、<p> int jishushengyu2=0;</p><p> for(int i=1;i<9;i++)</p><p><b> {</b></p><p> for(int j=1;j<9;j++)</p><p><b> {</b></p>
124、;<p> if(map[i][j]>0)</p><p><b> {</b></p><p> jishushengyu2++;</p><p><b> }</b></p><p><b> }</b></p><p>
溫馨提示
- 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小游戲畢業(yè)設(shè)計論文
- 連連看小游戲設(shè)計
- android課程設(shè)計連連看小游戲
- 連連看游戲設(shè)計論文
- 連連看畢業(yè)論文--基于安卓系統(tǒng)的趣味連連看游戲設(shè)計與實現(xiàn)
- 基于java的連連看游戲設(shè)計畢業(yè)論文
- 基于java的連連看游戲設(shè)計畢業(yè)論文
- [畢業(yè)設(shè)計資料]連連看java小游戲畢業(yè)設(shè)計資料
- 連連看游戲畢業(yè)設(shè)計
- 軟件工程畢業(yè)論文-超級瑪麗小游戲設(shè)計
- 基于java的連連看游戲的設(shè)計與實現(xiàn)-畢業(yè)論文
- 連連看游戲設(shè)計與實現(xiàn)論文.docx
- 連連看游戲開題報告
- 基于java連連看游戲
- 畢業(yè)設(shè)計論文——連連看設(shè)計
- 基于java的連連看游戲設(shè)計
- 軟件工程畢業(yè)論文-貪吃蛇小游戲的設(shè)計與實現(xiàn)
- 基于java的連連看游戲軟件設(shè)計
- 連連看游戲機(jī)
- java課程設(shè)計--連連看游戲設(shè)計
評論
0/150
提交評論