![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/b7a6dbf1-394f-494c-9080-56986f894712/b7a6dbf1-394f-494c-9080-56986f894712pic.jpg)
![連連看課程設(shè)計(jì)報(bào)告_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/b7a6dbf1-394f-494c-9080-56986f894712/b7a6dbf1-394f-494c-9080-56986f8947121.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱(chēng):程序設(shè)計(jì)實(shí)訓(xùn)(2)</p><p> 報(bào)告題目:連連看游戲的開(kāi)發(fā)</p><p><b> 學(xué)生姓名: </b></p><p> 所在學(xué)院:信息科學(xué)與工程學(xué)院</p><p> 專(zhuān)業(yè)班
2、級(jí):計(jì)科1002班</p><p><b> 學(xué)生學(xué)號(hào):</b></p><p><b> 指導(dǎo)教師: </b></p><p> 2013年6月25日</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p><b> 摘
3、 要</b></p><p> 在計(jì)算機(jī)逐步滲入社會(huì)生活各個(gè)層面的今天,計(jì)算機(jī)已經(jīng)成為人們?nèi)粘I畈豢苫蛉钡囊徊糠?,越?lái)越多的人使用計(jì)算機(jī)辦公、娛樂(lè)、購(gòu)物等等。游戲行業(yè)發(fā)展一日千里,該行業(yè)極大的影響和改變了人們的生活和娛樂(lè)方式,游戲?yàn)橄M(fèi)者提供豐富多彩的虛擬空間,使消費(fèi)者可以自由自在的享受虛擬世界的樂(lè)趣,實(shí)現(xiàn)自己在現(xiàn)實(shí)生活著那個(gè)可能永遠(yuǎn)不能實(shí)現(xiàn)的夢(mèng)想,滿(mǎn)足了消費(fèi)者的心理和精神需求。</p>
4、;<p> 連連看游戲是一款很流行的小游戲,有的是連水果圖片,有的是連麻將牌,有的是連各種小圖片的等等。各種圖片讓人看得眼花繚亂,這也可以鍛煉人的反應(yīng)能力和眼力,所以這款小游戲受到了越來(lái)越多人的喜愛(ài),尤其是小孩子的喜愛(ài)。連連看游戲也是比較經(jīng)典的一款小游戲,實(shí)現(xiàn)它的方法很多,可以用很多不同算法設(shè)計(jì)和語(yǔ)言實(shí)現(xiàn),如C,C#,C++,VB,JAVA等。在本課程設(shè)計(jì)中我是利用C#語(yǔ)言編寫(xiě),開(kāi)發(fā)平臺(tái)是Microsoft Visual
5、 Studio 2010,功能較為簡(jiǎn)單,寓學(xué)于樂(lè)。</p><p> 程序的功能是通過(guò)找出游戲中兩個(gè)相同圖案的小方塊,然后分別點(diǎn)擊兩個(gè)小方塊將其消除;可通過(guò)倒計(jì)時(shí)的方式控制游戲時(shí)間,游戲時(shí)間到或者沒(méi)有匹配的圖案時(shí)則游戲結(jié)束,需要重新開(kāi)局,每一局開(kāi)始倒計(jì)時(shí)都重新開(kāi)始;能夠響應(yīng)鼠標(biāo)事件。論文首先介紹了進(jìn)行該游戲課程設(shè)計(jì)的目的,然后是任務(wù)描述和設(shè)計(jì)的相關(guān)要求,最后是最重要的需求分析和設(shè)計(jì)方案。重點(diǎn)介紹了在游戲過(guò)程中各
6、種事件的處理,其中又以鼠標(biāo)事件的處理最為最要,鼠標(biāo)事件是利用鼠標(biāo)所發(fā)出的信息了解用戶(hù)的意圖,進(jìn)而做出相對(duì)應(yīng)的動(dòng)作,消除需要消除的小方塊。</p><p> 關(guān)鍵詞:連連看游戲;算法設(shè)計(jì);事件;C#;Microsoft Visual Studio 2010</p><p><b> 目 錄</b></p><p><b> 摘
7、 要I</b></p><p> 一、課程設(shè)計(jì)目的1</p><p> 二、任務(wù)描述和要求2</p><p> 2.1 問(wèn)題描述2</p><p> 2.2 任務(wù)描述2</p><p> 2.3 設(shè)計(jì)要求3</p><p><b> 三、需求分析
8、4</b></p><p><b> 3.1功能分析4</b></p><p><b> 3.2功能需求4</b></p><p> 3.3 功能模塊5</p><p> 3.4系統(tǒng)需求分析總結(jié)6</p><p><b> 四、設(shè)計(jì)方案
9、7</b></p><p> 4.1 總體設(shè)計(jì)7</p><p> 4.1.1 系統(tǒng)基本功能7</p><p> 4.1.2 系統(tǒng)流程8</p><p> 4.1.3 主要功能模塊10</p><p> 4.2 詳細(xì)設(shè)計(jì)10</p><p> 4.2.1 規(guī)則
10、詳解10</p><p> 4.2.2部分程序代碼解析11</p><p> 4.2.3運(yùn)行結(jié)果分析16</p><p><b> 五、總結(jié)20</b></p><p><b> 六、參考文獻(xiàn)21</b></p><p><b> 一、課程設(shè)計(jì)目
11、的</b></p><p> 《程序設(shè)計(jì)實(shí)訓(xùn)》課程是是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)重要的實(shí)踐性課程之一,其實(shí)踐性和應(yīng)用性都很強(qiáng)。本課程設(shè)計(jì)是對(duì)這門(mén)課程經(jīng)過(guò)一個(gè)學(xué)期的學(xué)習(xí)后進(jìn)行的一次全面而綜合的練習(xí)。C#程序設(shè)計(jì)的設(shè)計(jì)目的就是加深理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)計(jì)及其在軟件開(kāi)發(fā)的廣泛應(yīng)用,同時(shí)也是為后續(xù)各門(mén)計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下基礎(chǔ)。本次課程設(shè)計(jì)的目的主要有:</p>
12、<p> ?。?)鞏固和加深學(xué)生對(duì)C#的基本知識(shí)和語(yǔ)法的理解與掌握;</p><p> (2)掌握C#語(yǔ)言編程和調(diào)試的基本技能;</p><p> (3)運(yùn)用C#語(yǔ)言對(duì)程序進(jìn)行簡(jiǎn)單的框架設(shè)計(jì);</p><p> ?。?)讓學(xué)生掌握較為簡(jiǎn)單的算法分析能力;</p><p> ?。?)提高與運(yùn)用C#語(yǔ)言能解決實(shí)際問(wèn)題的能力。<
13、/p><p> (6)更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。</p><p> ?。?)對(duì)掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力進(jìn)行考核。</p><p> (8)培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。</p><p> ?。?)掌握程序設(shè)計(jì)說(shuō)明文檔的能力與技巧;</p>
14、<p><b> 二、任務(wù)描述和要求</b></p><p> 本章主要內(nèi)容包括本課程設(shè)計(jì)的任務(wù)描述和設(shè)計(jì)要求兩大模塊。任務(wù)描述主要是介紹在課程設(shè)計(jì)的整個(gè)過(guò)程的任務(wù)流程和時(shí)間規(guī)劃等;設(shè)計(jì)要求是提出課程設(shè)計(jì)過(guò)程中要注意的一些細(xì)節(jié)問(wèn)題。</p><p><b> 2.1 問(wèn)題描述</b></p><p> 連
15、連看游戲,用戶(hù)需要找出游戲中相同的兩個(gè)方塊,用鼠標(biāo)分別點(diǎn)擊兩個(gè)相同的小方塊,如果它們之間的連接線不超過(guò)三條直線,就可以將著兩個(gè)小方塊消掉,當(dāng)游戲中沒(méi)有滿(mǎn)足條件的圖案時(shí),還可以實(shí)現(xiàn)重新排列的功能,即點(diǎn)擊“重列”按鈕就可以重新排列本局游戲中剩余的圖案,但計(jì)時(shí)器還是會(huì)繼續(xù)計(jì)時(shí),在游戲結(jié)束時(shí)能夠看到最后的得分。</p><p><b> 2.2 任務(wù)描述</b></p><p&
16、gt; 隨著人們工作壓力變得越來(lái)越大,現(xiàn)如今更多的人開(kāi)始通過(guò)玩游戲來(lái)排解內(nèi)心的壓力,而各種各樣的游戲也排入市場(chǎng),一些大型網(wǎng)絡(luò)游戲更是一些年輕用戶(hù)的最?lèi)?ài),所有連連看游戲面對(duì)市場(chǎng)的競(jìng)爭(zhēng)壓力還是非常大的。</p><p> 分析連連看游戲的游戲規(guī)則,查找規(guī)則并對(duì)主要功能進(jìn)行模仿程序?qū)崿F(xiàn),對(duì)于實(shí)現(xiàn)過(guò)程中出現(xiàn)的bug進(jìn)行調(diào)試解決。</p><p> 經(jīng)過(guò)對(duì)連連看游戲的初步分析,游戲含有如下規(guī)則
17、:</p><p> 根據(jù)用戶(hù)執(zhí)行的鼠標(biāo)事件,做出相應(yīng)的消除操作。在檢驗(yàn)兩個(gè)小方塊能否消掉的時(shí)候,要讓兩個(gè)小方塊同時(shí)滿(mǎn)足兩個(gè)條件才行,就是兩者配對(duì)并且連線成功。如果要配對(duì)并且連線成功又要分為三種情況,也就是檢測(cè)三種情況。這三種檢測(cè)分別檢測(cè)一條直路徑,這樣就會(huì)有三條路徑;如果這三條路徑上面都是空的小方塊,那么就剛好是三條直線把兩個(gè)小方塊連接起來(lái)了。要讓兩個(gè)小方塊連接起來(lái),一條路徑最多不能超過(guò)三條直線,也就是最多只
18、能有兩個(gè)轉(zhuǎn)彎。</p><p><b> 具體任務(wù)如下:</b></p><p> ?。?)本課題為連連看游戲的開(kāi)發(fā);</p><p> ?。?)需要為Windows操作系統(tǒng)的用戶(hù)設(shè)計(jì)完成一款連連看游戲,這是一個(gè)根據(jù)某種算法隨機(jī)排列具有不同圖案的小方塊,并形成一個(gè)友好的用戶(hù)界面,供用戶(hù)娛樂(lè)之用的小軟件;</p><p>
19、; ?。?)本游戲在難度設(shè)置上跟傳統(tǒng)的小游戲有點(diǎn)區(qū)別,不是分為初、中、高三個(gè)難度等級(jí),而是一個(gè)已經(jīng)固定的難度,即每局游戲的圖案種類(lèi)數(shù)為20種,每種圖案的重復(fù)數(shù)為4對(duì);</p><p> ?。?)程序模塊清晰,具有較好的人機(jī)交互能力,核心代碼需要加上必要的注釋?zhuān)员阌脩?hù)能夠很快讀懂本游戲的集體實(shí)現(xiàn)過(guò)程;</p><p> ?。?)設(shè)計(jì)過(guò)程中,前兩周,對(duì)整個(gè)游戲所實(shí)現(xiàn)的功能進(jìn)行詳細(xì)的設(shè)計(jì)以及對(duì)
20、存在的問(wèn)題及解決辦法進(jìn)行最終確定;一周完成游戲的程序編寫(xiě),并優(yōu)化;最后一周,寫(xiě)出設(shè)計(jì)本游戲的詳細(xì)文檔說(shuō)明,并作課程設(shè)計(jì)匯報(bào);</p><p> ?。?)連連看游戲課程設(shè)計(jì)實(shí)現(xiàn)流程圖如圖2.1所示:</p><p> 圖2.1 課程實(shí)現(xiàn)流程圖</p><p> 圖2.1描述了整個(gè)課程設(shè)計(jì)的實(shí)現(xiàn)流程。前期工作是制定規(guī)則和設(shè)計(jì)算法,這一階段主要任務(wù)是搜集相關(guān)資料,然后
21、根據(jù)搜集到的資料結(jié)合自己所學(xué)知識(shí)制定系統(tǒng)實(shí)現(xiàn)算法;中期工作是算法實(shí)現(xiàn)和調(diào)試系統(tǒng),這一階段主要任務(wù)是完成算法的實(shí)現(xiàn),然后進(jìn)行調(diào)試和優(yōu)化系統(tǒng);后期工作是對(duì)數(shù)據(jù)結(jié)果進(jìn)行分析,然后完成課程設(shè)計(jì)報(bào)告。</p><p><b> 2.3 設(shè)計(jì)要求</b></p><p> 按照指導(dǎo)老師對(duì)課程設(shè)計(jì)的要求,學(xué)生要自行完成各個(gè)環(huán)節(jié),并且實(shí)現(xiàn)且達(dá)到靈活運(yùn)用的目的,要求能夠全面深入理解
22、和熟練掌握所學(xué)的內(nèi)容,能夠分析、設(shè)計(jì)和解答各類(lèi)專(zhuān)業(yè)問(wèn)題。</p><p> ?。?)系統(tǒng)需求分析,對(duì)系統(tǒng)中需要實(shí)現(xiàn)的功能進(jìn)行具體分析和設(shè)計(jì);</p><p> ?。?)采用結(jié)構(gòu)化、模塊化程序設(shè)計(jì)思想設(shè)計(jì);</p><p> (3)理解連連看游戲玩法的特點(diǎn),并分析玩法的實(shí)現(xiàn)功能;</p><p> (4)設(shè)計(jì)是否消除相同小方塊的判斷算法;&
23、lt;/p><p> (5)游戲“暫停/重新開(kāi)始”的實(shí)現(xiàn)方法;</p><p> (6)進(jìn)行概念設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì),以便使系統(tǒng)實(shí)現(xiàn)進(jìn)展順利;</p><p> (7)進(jìn)行詳細(xì)的設(shè)計(jì)方案,包括總體設(shè)計(jì)和詳細(xì)設(shè)計(jì),這包括程序設(shè)計(jì)代碼的分析和系統(tǒng)運(yùn)行界面截圖的分析;</p><p> (8)要求人機(jī)交互性較強(qiáng),界面較美觀;設(shè)計(jì)方案和執(zhí)行結(jié)果的分
24、析總結(jié)。</p><p><b> 三、需求分析</b></p><p> 需求分析的主要任務(wù)即詳細(xì)的找出程序所需要的各種功能實(shí)現(xiàn),是對(duì)系統(tǒng)功能進(jìn)一步分析和抽象,以確定系統(tǒng)應(yīng)當(dāng)做什么的問(wèn)題,從而完成系統(tǒng)的邏輯設(shè)計(jì)。本課程設(shè)計(jì)是連連看游戲的實(shí)現(xiàn),首先是要實(shí)現(xiàn)連連看游戲的基本功能,根據(jù)連連看游戲的玩法,設(shè)計(jì)程序,實(shí)現(xiàn)程序功能。本系統(tǒng)需求分析分為四個(gè)部分:功能分析、功能
25、需求、功能模塊和系統(tǒng)需求分析報(bào)告。</p><p><b> 3.1功能分析</b></p><p> 每次用戶(hù)選擇兩個(gè)相同的小方塊,如果小方塊滿(mǎn)足一定條件(這兩個(gè)小方塊之間存在轉(zhuǎn)彎少于3的路徑),則兩個(gè)小方塊可以消掉,給定任意具有相同圖案的兩個(gè)小方塊,用戶(hù)需要尋找這兩個(gè)小方塊之間在轉(zhuǎn)彎最少的情況下,如果這個(gè)最優(yōu)路徑的轉(zhuǎn)彎數(shù)目小于3,則這兩個(gè)小方塊可以消掉。所以,
26、主要需要解決的問(wèn)題就是怎么樣得出相同小方塊之間的最優(yōu)路徑,這個(gè)最優(yōu)路徑首先需要保證轉(zhuǎn)彎數(shù)目最少。</p><p> 游戲開(kāi)始時(shí),系統(tǒng)會(huì)在游戲區(qū)域中隨機(jī)布下20*4個(gè)不同圖案的小方塊。第一次使用鼠標(biāo)點(diǎn)擊游戲界面中的小方塊,該小方塊此時(shí)為"被選中"狀態(tài),再次用鼠標(biāo)點(diǎn)擊其他小方塊,若該小方塊與被選中的小方塊圖案相同,且把第一個(gè)小方塊到第二個(gè)小方塊連起來(lái),連線的路徑中間的直線不超過(guò) 3 根(最多兩次
27、轉(zhuǎn)彎),則消掉這一對(duì)小方塊,否則第一個(gè)小方塊恢復(fù)成未被選中狀態(tài),而第二個(gè)小方塊變成“被選中”狀態(tài)。每次消除一對(duì)小方塊會(huì)增加一定的時(shí)間。</p><p> 勝利條件:將游戲區(qū)域上的小方塊全部消除掉且時(shí)間未消耗完。</p><p> 失敗條件:時(shí)間消耗完,或者剩下的小方塊沒(méi)有路徑能夠匹配(即界面上的小方塊仍未全部消掉)。</p><p><b> 3.2
28、功能需求</b></p><p> (1)游戲界面大致分為兩大區(qū),左邊為游戲操作區(qū),右邊是設(shè)置區(qū);</p><p> ?。?)本游戲功能較為簡(jiǎn)單,只具有連連看游戲的基本功能(計(jì)時(shí)器、積分器、暫停/重新開(kāi)始、重列),默認(rèn)的圖案種類(lèi)數(shù)是20種,重復(fù)數(shù)每種圖案為4對(duì);</p><p> ?。?)游戲操作區(qū)是系統(tǒng)自動(dòng)排列的默認(rèn)的20*4個(gè)小方塊,用戶(hù)可以點(diǎn)擊小
29、方塊來(lái)消除具有相同圖案的小方塊;</p><p> ?。?)設(shè)置區(qū)中顯示當(dāng)前游戲的種類(lèi)數(shù)、重復(fù)數(shù)、“開(kāi)始游戲”按鈕、“重列”按鈕、“暫停/重新開(kāi)始”按鈕和得分情況;</p><p> ?。?)在游戲操作區(qū)的下方顯示有“剩余時(shí)間”的進(jìn)度條,當(dāng)進(jìn)度條的時(shí)間耗完時(shí),則游戲結(jié)束;</p><p> ?。?)游戲中用到的部分圖案如下所示:</p><p&g
30、t; 1 2 3 4 5 6 7 8 9 10 11 12</p><p> 13 14 15 16 17 18 19 20 21 22 23 24 </p><p> 25 26 27 28 29 30
31、31 32 33 34 35 36 </p><p><b> 3.3 功能模塊</b></p><p> 本游戲主要細(xì)分為以下幾大模塊:</p><p><b> ?。?)游戲主界面</b></p><p> 以Microsoft Visual Studio 2
32、010為開(kāi)發(fā)平臺(tái)設(shè)計(jì)主界面,主要控件有1個(gè)主窗體Form、1個(gè)groupbox、1個(gè)progressbar、4個(gè)button、7個(gè)label。</p><p> ?。?)隨機(jī)排列小方塊</p><p><b> (3)鼠標(biāo)事件</b></p><p> ?。?)小方塊消除判斷</p><p><b> (5
33、)游戲難度設(shè)置</b></p><p> 本游戲沒(méi)有用戶(hù)自定義游戲難度選擇,而是使用默認(rèn)的圖案種類(lèi)數(shù)是20種,每種圖案的重復(fù)數(shù)是4對(duì),所以游戲的靈活性較差。</p><p><b> ?。?)游戲重列</b></p><p> 對(duì)本局游戲中剩下的小方塊重新排列,計(jì)時(shí)器不會(huì)暫停。此模塊的主要作用就是在用戶(hù)自身不能找到能夠消掉的小方
34、塊的情況下,通過(guò)重列剩下的小方塊來(lái)產(chǎn)生新的路徑,使游戲能夠繼續(xù)玩下去。</p><p> (7)暫停/重新開(kāi)始</p><p> 點(diǎn)擊“暫?!卑粹o能夠使當(dāng)前正在運(yùn)行的游戲暫時(shí)停止,主要是使讓時(shí)間停止,不再倒計(jì)時(shí);游戲暫停時(shí)鼠標(biāo)不能對(duì)游戲操作區(qū)域進(jìn)行操作,此時(shí)“暫?!卑粹o變成“重新開(kāi)始”按鈕,用戶(hù)只要點(diǎn)擊“重新開(kāi)始”按鈕即可繼續(xù)游戲操作。</p><p> (8
35、)游戲勝利(游戲結(jié)束,需要重新開(kāi)始游戲)</p><p> ?。?)游戲失?。ㄓ螒蚪Y(jié)束,需要重新開(kāi)始游戲)</p><p> 3.4系統(tǒng)需求分析總結(jié)</p><p> 本系統(tǒng)的結(jié)構(gòu)基本合理,系統(tǒng)功能也基本能夠達(dá)到連連看游戲的要求,采用了最基本的最短路徑優(yōu)先的算法,使系統(tǒng)地運(yùn)行效率達(dá)到最高。本系統(tǒng)的輸入邊界是用戶(hù)進(jìn)行的鼠標(biāo)事件操作和對(duì)游戲的復(fù)雜程度進(jìn)行設(shè)置;輸出邊
36、界是游戲結(jié)束,游戲勝利或者游戲失敗。通過(guò)對(duì)連連看游戲規(guī)則以及相關(guān)算法的分析,本系統(tǒng)總的數(shù)據(jù)量較小,規(guī)模不是很大,適合于在普通微機(jī)或小型機(jī)上運(yùn)行。</p><p><b> 四、設(shè)計(jì)方案</b></p><p> 設(shè)計(jì)方案是對(duì)一個(gè)系統(tǒng)進(jìn)行詳細(xì)而具體的設(shè)計(jì),本系統(tǒng)的設(shè)計(jì)方案主要分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩部分。總體設(shè)計(jì)是對(duì)整個(gè)系統(tǒng)結(jié)構(gòu)化的設(shè)計(jì),包括系統(tǒng)的大致框架和各個(gè)函數(shù)
37、以及類(lèi)的說(shuō)明;詳細(xì)設(shè)計(jì)是對(duì)各個(gè)類(lèi)和函數(shù)進(jìn)行定義和具體實(shí)施,以及各種圖例的詳解。</p><p><b> 4.1 總體設(shè)計(jì)</b></p><p> 本課程設(shè)計(jì)采用的是單機(jī)模式,當(dāng)在規(guī)定的時(shí)間內(nèi)消除完全部的小方塊則游戲過(guò)關(guān),如果在規(guī)定的時(shí)間內(nèi)沒(méi)能消除完所有的小方塊則游戲結(jié)束,需要重新開(kāi)始新游戲。游戲規(guī)則是模仿普通的連連看游戲,主要是鼠標(biāo)兩次點(diǎn)擊的小方塊能否消去的問(wèn)
38、題。前提是點(diǎn)擊兩個(gè)具有相同的圖案的小方塊,若點(diǎn)擊的是同一個(gè)小方塊或者兩個(gè)不同的圖案的小方塊,則不進(jìn)行處理;在兩個(gè)相同圖案的小方塊用三根以?xún)?nèi)(包括三根)的直線能連在一起,就可以消掉;否則,不進(jìn)行處理。</p><p> 游戲過(guò)程,如果用戶(hù)在規(guī)定的時(shí)間內(nèi)消掉所有的小方塊則提示游戲勝利,會(huì)彈出一個(gè)“游戲勝利!”的對(duì)話框;如果在規(guī)定時(shí)間內(nèi)小方塊沒(méi)有消完則提示時(shí)間到游戲失敗,會(huì)彈出一個(gè)“游戲失?。 钡膶?duì)話框??紤]到本游戲
39、是單機(jī)小游戲,所以充分考慮到它的娛樂(lè)性,并沒(méi)有很復(fù)雜的功能。</p><p> 系統(tǒng)的總體設(shè)計(jì)是對(duì)整個(gè)系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì),包括系統(tǒng)基本功能的設(shè)計(jì)、系統(tǒng)流程的設(shè)計(jì)和各個(gè)功能模塊的設(shè)計(jì)等。</p><p> 4.1.1 系統(tǒng)基本功能</p><p> 本系統(tǒng)與我們常玩的連連看游戲相比較為簡(jiǎn)單,只具有連連看游戲的基本功能,邏輯設(shè)計(jì)方面也只有簡(jiǎn)單的“開(kāi)始游戲”、“重列”
40、、圖案“種類(lèi)數(shù)”和“重復(fù)數(shù)”的設(shè)定、剩余時(shí)間和暫停/重新開(kāi)始。</p><p> 開(kāi)始游戲:初始化游戲區(qū)域,隨機(jī)排列小方塊。</p><p> 重列:對(duì)正在進(jìn)行的游戲中剩余的小方塊重新排列。</p><p> 種類(lèi)數(shù):本游戲固定圖案種類(lèi)是20種。</p><p> 重復(fù)數(shù):每種圖案的重復(fù)次數(shù)是4次,也就是4對(duì)。</p>
41、<p> 剩余時(shí)間:計(jì)時(shí)器,通過(guò)顯示時(shí)間進(jìn)度的方式對(duì)游戲進(jìn)行倒計(jì)時(shí)。</p><p> 暫停/重新開(kāi)始:暫停正在運(yùn)行的游戲,游戲暫停后也可以重新開(kāi)始(繼續(xù)本局游戲)。</p><p> 系統(tǒng)基本功能如圖4.1所示</p><p> 圖4.1 系統(tǒng)基本功能圖</p><p> 圖4-1是連連看游戲的系統(tǒng)基本功能圖,從圖中可以
42、看出系統(tǒng)主要分為六大功能,即開(kāi)始游戲、重列、種類(lèi)數(shù)、重復(fù)數(shù)、剩余時(shí)間和暫停/重新開(kāi)始的設(shè)置。</p><p> 4.1.2 系統(tǒng)流程</p><p> 系統(tǒng)流程是對(duì)系統(tǒng)進(jìn)行大概分析后得出的系統(tǒng)各功能的流動(dòng)情況以及各個(gè)操作之間的關(guān)系,上一步操作都與下一步操作有著緊密的聯(lián)系,即下一步操作都是由上一步操作所決定的。系統(tǒng)流程主要是對(duì)系統(tǒng)流程圖的分析,系統(tǒng)流程圖清晰的地反映出了系統(tǒng)的運(yùn)行情況和走
43、向。</p><p> (1)鼠標(biāo)事件具體流程圖如圖4.2所示</p><p> 圖4.2 鼠標(biāo)事件具體流程圖</p><p> 圖4.2是鼠標(biāo)事件的具體流程圖,在連連看游戲中,鼠標(biāo)事件是很重要的一部分,因?yàn)榛径际强际髽?biāo)去操作的,所以鼠標(biāo)事件的控制就非常重要了;上圖就是鼠標(biāo)在游戲過(guò)程中的具體判斷過(guò)程,主要是兩個(gè)相同小方塊之間路徑的判斷,分為一條直線(沒(méi)有轉(zhuǎn)彎
44、)、兩條直線(一個(gè)轉(zhuǎn)彎)、三條直線(兩個(gè)轉(zhuǎn)彎)。</p><p> (2)系統(tǒng)詳細(xì)運(yùn)行流程如圖4.3所示</p><p> 圖4.3 運(yùn)行流程圖</p><p> 圖4.3是游戲詳細(xì)的運(yùn)行流程圖,圖中清晰地描述了系統(tǒng)的執(zhí)行過(guò)程,即根據(jù)不同的事件,游戲狀態(tài)的轉(zhuǎn)換。過(guò)程為:游戲開(kāi)始,等待事件,發(fā)出鼠標(biāo)事件,根據(jù)用戶(hù)發(fā)出的鼠標(biāo)命令,然后進(jìn)行各種判斷,系統(tǒng)分別作出不同
45、的反應(yīng)。</p><p> 4.1.3 主要功能模塊</p><p> private void Form1_MouseDown(object sender, MouseEventArgs e) //最重要的鼠標(biāo)事件</p><p> private void ProcessCorner(Point p1,Point p2) //此方法做處理畫(huà)線和消除&l
46、t;/p><p> private void button1_Click_1(object sender, EventArgs e) //開(kāi)始游戲按鈕</p><p> private void button2_Click(object sender, EventArgs e) //重列按鈕</p><p> private void button3_Clic
47、k(object sender, EventArgs e) //暫停/重新開(kāi)始按鈕</p><p> private void pbtimer_Tick(object sender, EventArgs e) //計(jì)時(shí)器操作,判斷游戲是否失敗</p><p> public bool IsDirectLink(int x1, int y1, int x2, int y2) //判
48、斷兩個(gè)小方塊是否為直連關(guān)系,即判斷兩個(gè)小方塊之間是否能用一條之間連接(沒(méi)有轉(zhuǎn)彎)</p><p> public bool IndirectLink(int x1, int y1, int x2, int y2) //處理直連以外的情況,即一個(gè)轉(zhuǎn)彎和兩個(gè)轉(zhuǎn)彎的情況</p><p><b> 4.2 詳細(xì)設(shè)計(jì)</b></p><p> 總
49、體設(shè)計(jì)是對(duì)整個(gè)系統(tǒng)的結(jié)構(gòu)化和模塊化設(shè)計(jì),包括各功能模塊的設(shè)計(jì)和各個(gè)功能函數(shù)的說(shuō)明。詳細(xì)設(shè)計(jì)則是對(duì)各個(gè)類(lèi)和功能函數(shù)進(jìn)行具體的定義和實(shí)施。下面是對(duì)系統(tǒng)中幾個(gè)較為重要的函數(shù)進(jìn)行描述。</p><p> 在總體設(shè)計(jì)中提到過(guò)要想消掉兩個(gè)小方塊,可以分為三種情況,下面就是三種情況的詳細(xì)解釋?zhuān)?lt;/p><p> 4.2.1 規(guī)則詳解</p><p> 1、兩個(gè)相同的小方塊相
50、鄰,則可以直接消掉。</p><p> 2、若不相鄰的先在第一個(gè)小方塊的同一行中找一個(gè)空方塊;1)找到后看第二個(gè)小方塊橫向到這個(gè)空方塊所在的列是否有小方塊;2)沒(méi)有的話再看第一個(gè)小方塊到與它同行的那個(gè)空方塊之間是否有小方塊;3)如果還是沒(méi)有的話,再?gòu)呐c第一個(gè)小方塊同行的那個(gè)空方塊豎向到與第二個(gè)小方塊的同行看是否有其他的小方塊。沒(méi)有的話路經(jīng)就是通了,則可以將兩個(gè)小方塊消掉。 </p><p&g
51、t; 3、若上述2失敗后,再在第一個(gè)小方塊的同列找一個(gè)空方塊;1)找到后看第二個(gè)小方塊豎向到這個(gè)空方塊所在的行是否有小方塊;2)沒(méi)有的話,再看第一個(gè)小方塊到與它同列的那個(gè)空方塊之間是否有小方塊;3)如果還是沒(méi)有的話,再?gòu)呐c第一個(gè)小方塊同列的那個(gè)空方塊橫向到與第二個(gè)小方塊同列看是否有其他的小方塊。沒(méi)有的話路經(jīng)就是通了,則可以將兩個(gè)小方塊消掉。</p><p> 如果以上三步都失敗,說(shuō)明這兩個(gè)按鈕不可以消掉。&l
52、t;/p><p> 兩個(gè)小方塊能夠相連并消掉的所有情況如下所示:</p><p> ?。?) (2) (3)</p><p> ?。?) (5) (6)</p><p>
53、(7) -</p><p> ?。?)兩個(gè)小方塊相鄰,可以直接消掉;</p><p> ?。?)兩個(gè)小方塊在同一行上面且不相鄰,但中間沒(méi)有其他方塊阻擋;</p><p> (3)兩個(gè)小方塊在同一行上,但中間有其他圖案的小方塊阻隔;</p><p> ?。?)兩個(gè)小方塊在同一列,但中間有其他圖案的小方塊阻隔;</p
54、><p> (5)兩個(gè)小方塊既不在同一行也不在同一列,用三條直線連接(因?yàn)榈谝粋€(gè)小方塊的右邊可能有其他小方塊阻隔);</p><p> ?。?)兩個(gè)小方塊既不在同一行也不在同一列,用兩條直線連接(第一個(gè)小方塊的某一方正好可以連接到第二個(gè)小方塊);</p><p> ?。?)兩個(gè)小方塊既不在同一行也不在同一列,用三條直線連接(系統(tǒng)自動(dòng)檢測(cè),連線從第一個(gè)小方塊的空閑的一面
55、引出)</p><p> 4.2.2部分程序代碼解析</p><p> private int picnum = 20; //本局中圖片的數(shù)量</p><p> private int multipic = 4;//一張圖片重復(fù)出來(lái)的次數(shù),一定為偶數(shù)</p><p> //鼠標(biāo)事件處理,主要是判斷轉(zhuǎn)彎數(shù)目和位置,并做相應(yīng)的消除操作&l
56、t;/p><p> private void Form1_MouseDown(object sender, MouseEventArgs e)</p><p> { int curx = e.X / 31;</p><p> int cury = e.Y/ 34;</p><p> if (curx > 18 || cur
57、y > 10)</p><p><b> return;</b></p><p> if (gamestop == true)</p><p><b> return;</b></p><p> if (gmap[curx, cury] != 0)</p><p&g
58、t; { Pen pen = new Pen(new SolidBrush(this.BackColor));</p><p> g_g.DrawRectangle(pen, new Rectangle(curx * 31,cury * 34, 31, 34));</p><p><b> two++;</b></p><p> s
59、witch (two)</p><p> { case 1:</p><p> fpoint = new Point(curx, cury);break;</p><p><b> case 2:</b></p><p> if (AI.IsLink(fpoint.X, fpoint.Y, curx, cur
60、y))</p><p> { two = 0;</p><p> //獲得拐點(diǎn)數(shù)目和位置,做畫(huà)線處理</p><p> ProcessCorner(fpoint,new Point(curx,cury));</p><p> if (CheckWin(ref gmap))</p><p> { sta
61、rttimer = false;</p><p> MessageBox.Show("恭喜過(guò)關(guān)!");</p><p> pbtimer.Stop();</p><p> bStart = false;</p><p><b> }</b></p><p><b&
62、gt; }</b></p><p><b> else</b></p><p> { if (pbvalue == 0) break;</p><p><b> two = 1;</b></p><p> fpoint = new Point(curx, cury);&l
63、t;/p><p><b> }</b></p><p><b> break;</b></p><p> default: break;</p><p><b> }</b></p><p><b> }</b></p&
64、gt;<p><b> }</b></p><p> //此方法做處理畫(huà)線和消除,直連時(shí)加10分,一個(gè)轉(zhuǎn)彎加20分,兩個(gè)轉(zhuǎn)彎加40分</p><p> private void ProcessCorner(Point p1,Point p2)</p><p> { Point[] corner = new Point[
65、3];</p><p> corner = AI.GetPoints();</p><p> Pen pen = new Pen(new SolidBrush(Color.Red), 5);//線畫(huà)筆</p><p> Pen bkpen = new Pen(new SolidBrush(this.BackColor), 5);//擦去畫(huà)筆</p>
66、<p> pbvalue += 4;</p><p> switch (corner[2].X) //轉(zhuǎn)彎數(shù)</p><p> { case 1: </p><p> score += 20; //一個(gè)轉(zhuǎn)彎加20分;</p><p> g_g.DrawLine(pen, new Point(p1.X*31+
67、15,p1.Y*34+17), new Point(corner[0].X*31+15,corner[0].Y*34+17));</p><p> g_g.DrawLine(pen, new Point(p2.X * 31+15, p2.Y * 34+17), new Point(corner[0].X * 31+15, corner[0].Y * 34+17));</p><p>
68、Thread.Sleep(100);</p><p> EraseBlock(g_g, p1, p2);</p><p> g_g.DrawLine(bkpen, new Point(p1.X * 31 + 15, p1.Y * 34 + 17), new Point(corner[0].X * 31 + 15, corner[0].Y * 34 + 17));</p>
69、<p> g_g.DrawLine(bkpen, new Point(p2.X * 31 + 15, p2.Y * 34 + 17), new Point(corner[0].X * 31 + 15, corner[0].Y * 34 + 17));</p><p><b> break;</b></p><p><b> case 2: &
70、lt;/b></p><p> score += 40; //兩個(gè)轉(zhuǎn)彎加40分</p><p> Point[] ps ={ new Point(p1.X*31+15,p1.Y*34+17),new Point( corner[1].X*31+15,corner[1].Y*34+17),new Point(corner[0].X*31+15,corner[0].Y*34+17),
71、new Point(p2.X*31+15,p2.Y*34+17)};</p><p> g_g.DrawLines(pen, ps);</p><p> Thread.Sleep(100);</p><p> EraseBlock(g_g, p1, p2);</p><p> g_g.DrawLines(bkpen,ps);</
72、p><p><b> break;</b></p><p><b> case 0:</b></p><p> score += 10;//直連加10分</p><p> g_g.DrawLine(pen, new Point(p1.X * 31 + 15, p1.Y * 34 + 17), n
73、ew Point(p2.X * 31 + 15, p2.Y * 34 + 17));</p><p> Thread.Sleep(100);</p><p> EraseBlock(g_g, p1, p2);</p><p> g_g.DrawLine(bkpen, new Point(p1.X * 31 + 15, p1.Y * 34 + 17), new
74、Point(p2.X * 31 + 15, p2.Y * 34 + 17));</p><p><b> break;</b></p><p> default: break;</p><p><b> }</b></p><p> label5.Text = score.ToString(
75、);</p><p><b> }</b></p><p> //開(kāi)始游戲按鈕,初始化游戲區(qū)域、計(jì)時(shí)器開(kāi)始計(jì)時(shí)、分?jǐn)?shù)歸零并重新開(kāi)始累積分?jǐn)?shù)</p><p> private void button1_Click_1(object sender, EventArgs e)</p><p> { int m
76、= 0;</p><p> gamestop = false;</p><p> label5.Text = m.ToString();</p><p> if (!starttimer)</p><p> { progressBar1.Value = PBMAX;</p><p> pbtimer.In
77、terval = 500; //時(shí)間初始值為500</p><p> pbtimer.Start(); //計(jì)時(shí)器開(kāi)始計(jì)時(shí)</p><p> starttimer = true;</p><p><b> }</b></p><p><b> //處理分?jǐn)?shù)</b></p>&l
78、t;p> score = 0; //初始游戲時(shí)分?jǐn)?shù)歸零</p><p> picnum = 20; //每次開(kāi)局固定的圖案數(shù)</p><p> multipic = 4; //每種圖案重復(fù)的次數(shù)</p><p> IniteBmp(picnum);</p><p> pbvalue = 500; //初始化時(shí)間值</p&
79、gt;<p> bStart = true; </p><p> this.Invalidate();</p><p><b> }</b></p><p><b> //重列按鈕</b></p><p> private void button2_Click(object
80、sender, EventArgs e)</p><p> { FreshMap(ref gmap); //調(diào)用重新排列函數(shù),僅對(duì)游戲中剩余的小方塊進(jìn)行重列</p><p> this.Invalidate();</p><p><b> }</b></p><p> // 時(shí)間判斷,即對(duì)游戲是否失敗進(jìn)行判斷
81、,時(shí)間耗完則游戲結(jié)束</p><p> private void pbtimer_Tick(object sender, EventArgs e)</p><p> { pbvalue = pbvalue - reducestep;</p><p> if (pbvalue > 100)</p><p> pbvalue
82、= 100;</p><p> if (pbvalue == 0 && starttimer)</p><p> { pbtimer.Stop(); //計(jì)時(shí)器停止</p><p> starttimer = false;</p><p> MessageBox.Show("游戲失敗!");&l
83、t;/p><p> gamestop = true;</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p> progressBar1.Value = p
84、bvalue; //給時(shí)間進(jìn)度條賦值</p><p><b> }</b></p><p> //暫停按鈕,主要是時(shí)間暫停,并且鼠標(biāo)不能在游戲區(qū)域操作</p><p> private void button3_Click(object sender, EventArgs e)</p><p> { this
85、.button3.Visible = false;</p><p> gamestop = true;</p><p> pbtimer.Stop();</p><p> this.button4.Visible = true;</p><p><b> }</b></p><p> /
86、/判斷兩個(gè)小方塊是否為直連關(guān)系,即判斷兩個(gè)小方塊之間是否能用一條之間連接(沒(méi)有轉(zhuǎn)彎)</p><p> public bool IsDirectLink(int x1, int y1, int x2, int y2)</p><p> { if (x1 == x2 && y1 == y2)</p><p> { return fal
87、se; }</p><p> if (x1 == x2)</p><p> { int bigger = y1 > y2 ? y1 : y2;</p><p> int smaller = y1 > y2 ? y2 : y1;</p><p> int miny = smaller+ 1;</p>&l
88、t;p> while (map[x1, miny] == BLANK)</p><p> { miny++;</p><p> if (miny >= N)</p><p><b> break;</b></p><p><b> }</b></p><
89、p> if (miny == bigger)</p><p> return true;</p><p><b> else</b></p><p> return false;</p><p><b> }</b></p><p> if (y1 == y
90、2)</p><p> { int bigger = x1 > x2 ? x1 : x2;</p><p> int smaller = x1 > x2 ? x2 : x1;</p><p> int minx = smaller + 1;</p><p> while (map[minx, y1] == BLANK)
91、</p><p> { minx++;</p><p> if (minx >= M)</p><p><b> break;</b></p><p><b> }</b></p><p> if (minx == bigger)</p>&
92、lt;p> return true;</p><p><b> else</b></p><p> return false;</p><p><b> }</b></p><p> return false;</p><p><b> }<
93、/b></p><p> //處理直連以外的情況,即一個(gè)轉(zhuǎn)彎和兩個(gè)轉(zhuǎn)彎的情況</p><p> public bool IndirectLink(int x1, int y1, int x2, int y2)</p><p> { int pos = 0;</p><p> Point[] ar1 = new Point[2
94、09];</p><p> int ar1Len = 0;</p><p> Point[] ar2 = new Point[209];</p><p> int ar2Len = 0;</p><p> pos = y1 - 1;</p><p> while (0 <= pos &&
95、 pos < N && map[x1,pos] == BLANK)</p><p> { ar1Len = FindEmpty(x1, pos, ref ar1);</p><p> ar2Len = FindEmpty(x2, y2, ref ar2);</p><p> if (IsShare(ref ar1, ar1Len, r
96、ef ar2, ar2Len))</p><p> { co = 2;</p><p> corner[1] = new Point(x1, pos);</p><p> return true;</p><p><b> }</b></p><p><b> pos--;
97、</b></p><p><b> }</b></p><p> pos = y1 + 1;</p><p> while (0 <= pos && pos < N && map[x1,pos] == BLANK)</p><p> { ar1Len =
98、 FindEmpty(x1, pos, ref ar1);</p><p> ar2Len = FindEmpty(x2, y2, ref ar2);</p><p> if (IsShare(ref ar1, ar1Len, ref ar2, ar2Len))</p><p> { co = 2;</p><p> corner
99、[1] = new Point(x1, pos);</p><p> return true;</p><p><b> }</b></p><p><b> pos++;</b></p><p><b> }</b></p><p> //如
100、果兩點(diǎn)是左右且非直連關(guān)系</p><p> pos = x1 - 1;</p><p> while (0 <= pos && pos < M && map[pos,y1] == BLANK)</p><p> { ar1Len = FindEmpty(pos, y1, ref ar1);</p>
101、<p> ar2Len = FindEmpty(x2, y2, ref ar2);</p><p> if (IsShare(ref ar1, ar1Len, ref ar2, ar2Len))</p><p> { co = 2;</p><p> corner[1] = new Point(pos, y1);</p><
102、p> return true;</p><p><b> }</b></p><p><b> pos--;</b></p><p><b> }</b></p><p> pos = x1 + 1;</p><p> while (0
103、 <= pos && pos < M && map[pos,y1] == BLANK)</p><p> { ar1Len = FindEmpty(pos, y1, ref ar1);</p><p> ar2Len = FindEmpty(x2, y2, ref ar2);</p><p> if (IsSha
104、re(ref ar1, ar1Len, ref ar2, ar2Len))</p><p> { co = 2;</p><p> corner[1] = new Point(pos, y1);</p><p> return true;</p><p><b> }</b></p><p
105、><b> pos++;</b></p><p><b> }</b></p><p> //如果非上下非左右,即構(gòu)成矩形的關(guān)系</p><p> return false;</p><p><b> }</b></p><p> 4.
106、2.3運(yùn)行結(jié)果分析</p><p> 系統(tǒng)界面分析這一部分主要是系統(tǒng)的運(yùn)行與維護(hù)等,在這里展出了系統(tǒng)的部分運(yùn)行效果圖,并對(duì)這些界面進(jìn)行了分析。</p><p> (1)游戲主界面如圖4.4所示</p><p> 圖4.4 游戲主界面</p><p> 圖4.4是游戲主界面,圖案種類(lèi)數(shù)是20,每種圖案的最大重復(fù)數(shù)是4,在沒(méi)有點(diǎn)擊“開(kāi)始游
107、戲”按鈕時(shí),游戲圖案排列不會(huì)呈現(xiàn)出來(lái),剩余時(shí)間的進(jìn)度條也不會(huì)倒計(jì)時(shí)。</p><p> ?。?)游戲運(yùn)行中(一)如圖4.5所示</p><p> 圖4.5 游戲運(yùn)行中(一)</p><p> 圖4.5是游戲運(yùn)行中(一)的狀態(tài),用戶(hù)可以根據(jù)連連看游戲的相關(guān)規(guī)則進(jìn)行相應(yīng)的鼠標(biāo)事件,使其能夠消掉,同時(shí)積分器累計(jì)積分,上圖中紅圈處為“暫?!卑粹o,可以點(diǎn)擊此按鈕來(lái)暫停游戲
108、。</p><p> ?。?)游戲運(yùn)行中(二)如圖4.6所示</p><p> 圖4.6游戲運(yùn)行中(二)</p><p> 圖4.6是游戲運(yùn)行中(二)的狀態(tài),上圖紅圈處顯示“重新開(kāi)始”,此時(shí)游戲是在“暫?!睜顟B(tài),用戶(hù)可以點(diǎn)擊“重新開(kāi)始”按鈕,游戲可以繼續(xù)進(jìn)行。</p><p> (4)游戲過(guò)關(guān)如圖4.7所示</p><
109、;p><b> 圖4.7 游戲過(guò)關(guān)</b></p><p> 圖4.7是游戲過(guò)關(guān)后的界面,游戲過(guò)關(guān)后會(huì)彈出一個(gè)“恭喜過(guò)關(guān)!”的對(duì)話框,同時(shí)可以看出的最后的得分情況。用戶(hù)可以點(diǎn)擊確定后,然后繼續(xù)點(diǎn)擊“開(kāi)始游戲”,這時(shí)系統(tǒng)又會(huì)重列游戲區(qū)域,積分器歸零。</p><p> ?。?)游戲失敗如圖4.8所示</p><p><b>
110、 圖4.8 游戲失敗</b></p><p> 圖4.8是游戲失敗時(shí)的界面,當(dāng)時(shí)間耗完時(shí)或者游戲區(qū)域中沒(méi)有能夠匹配消掉的圖案時(shí),系統(tǒng)將提示“游戲失?。 ?,即游戲失敗。</p><p><b> 五、總結(jié)</b></p><p> 首先感謝老師給我們一次實(shí)訓(xùn)的機(jī)會(huì)。通過(guò)這次課程設(shè)計(jì),讓我充分體會(huì)到了理論與實(shí)踐相結(jié)合的重要性。通過(guò)
111、我們所學(xué)過(guò)的知識(shí),老師給我們?cè)敿?xì)講解并帶領(lǐng)我們做這個(gè)連連看游戲,在這個(gè)過(guò)程中我們學(xué)到了很多書(shū)本上學(xué)不到的東西,我在寫(xiě)程序的時(shí)候也遇到了很多問(wèn)題,不過(guò)在自己的努力和老師的指導(dǎo)下完成了任務(wù)。在這次課程設(shè)計(jì)中,我不斷的上網(wǎng)查資料以及翻閱相關(guān)書(shū)籍,通過(guò)不斷的摸索、測(cè)試、發(fā)現(xiàn)問(wèn)題、解決問(wèn)題,在老師的幫助下這些問(wèn)題都一一得到了解決,使得程序能夠正常運(yùn)行。</p><p> 在此游戲的設(shè)計(jì)過(guò)程中,遇到了很多問(wèn)題,有些問(wèn)題比較
112、簡(jiǎn)單但就是不知道錯(cuò)在哪里,有些大問(wèn)題知道錯(cuò)在哪里但就是不知道怎么辦,后來(lái)經(jīng)過(guò)自己的不斷修改和調(diào)試,這些問(wèn)題都得到了解決。經(jīng)過(guò)這次課程設(shè)計(jì),我認(rèn)識(shí)到應(yīng)該注意的細(xì)節(jié)問(wèn)題,雖然是很小的問(wèn)題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。編寫(xiě)完這個(gè)連連看游戲,我發(fā)現(xiàn)自己有很多不足的地方,感觸最深的就是我真的要扎扎實(shí)實(shí)的打基礎(chǔ)。并且我感覺(jué)到只要肯下功夫?qū)W習(xí),我也可以做出很好的東西,深深明白,只有自己的東
113、西才是最珍貴的。</p><p> 總之,通過(guò)這次課程設(shè)計(jì),我學(xué)到了很多,也收獲了很多,這包括學(xué)習(xí)上的和生活中的。盡管可能這個(gè)系統(tǒng)中還存在一些問(wèn)題,但我覺(jué)得還是很高興,因?yàn)槭亲约旱淖钪匾?lt;/p><p><b> 六、參考文獻(xiàn)</b></p><p> [1] 周存杰.C#網(wǎng)絡(luò)核心編程[M],北京:清華大學(xué)出版社,2002.11<
114、/p><p> [2] 梁立新.C#核心技術(shù)應(yīng)用開(kāi)發(fā)[M],北京:電子工業(yè)出版社,2010.9</p><p> [3] 王曉東.計(jì)算機(jī)算法設(shè)計(jì)與分析(第3版)[M],北京:電子工業(yè)出版社,2007</p><p> [4] 劉瑞新.C#網(wǎng)絡(luò)編程及應(yīng)用[M],北京:機(jī)械工業(yè)出版社,2004</p><p> [5] (美)沃森,(美)內(nèi)格
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java連連看課程設(shè)計(jì)報(bào)告
- labview連連看課程設(shè)計(jì)報(bào)告
- java連連看課程設(shè)計(jì)報(bào)告
- 連連看課程設(shè)計(jì)
- 連連看課程設(shè)計(jì)
- java連連看課程設(shè)計(jì)
- java連連看課程設(shè)計(jì)
- java課程設(shè)計(jì)—連連看
- 連連看c語(yǔ)言課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告----java實(shí)現(xiàn)游戲連連看
- jav課程設(shè)計(jì)報(bào)告書(shū)——連連看
- java課程設(shè)計(jì)--連連看游戲設(shè)計(jì)
- android課程設(shè)計(jì)連連看小游戲
- java課程設(shè)計(jì)--連連看游戲的開(kāi)發(fā)
- java課程設(shè)計(jì)說(shuō)明書(shū)---連連看
- 連連看游戲開(kāi)題報(bào)告
- 連連看
- 連連看.docx
- 連連看項(xiàng)目
- 連連看解釋
評(píng)論
0/150
提交評(píng)論