版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)文檔</b></p><p> 題 目: 連連看 </p><p> 作 者: </p><p> 系 別: 信息系 班級(jí): 三隊(duì) </p><p> 專 業(yè): 信
2、息網(wǎng)絡(luò)安全監(jiān)察(軟件方向)</p><p> 指導(dǎo)教師: </p><p><b> 前 言</b></p><p> 現(xiàn)在小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡(jiǎn)單外(不像其他游戲還需要注冊(cè)下載繁瑣過程),很多游戲不乏經(jīng)典。連連看游戲就是典型了!</p&
3、gt;<p> 游戲“連連看”,只要將相同花色的兩張牌用三根以內(nèi)的直線連在一起就可以消除,規(guī)則簡(jiǎn)單容易上手。游戲速度節(jié)奏快,畫面清晰可愛,老少皆宜。</p><p> 不管你走到哪個(gè)游戲網(wǎng)站,連連看游戲總是排在受玩家歡迎排名的前5位,休閑、趣味、益智是連連看玩不厭的精華,且不分男女老少、工薪白領(lǐng),是一款適合大眾的經(jīng)典網(wǎng)絡(luò)休閑小游戲。</p><p> 豐富的道具和公共模
4、式的加入,增強(qiáng)游戲的競(jìng)爭(zhēng)性。多樣式的地圖,使玩家在各個(gè)游戲水平都可以尋找到挑戰(zhàn)的目標(biāo),長(zhǎng)期地保持游戲的新鮮感。使用新穎的連擊積分規(guī)則,使游戲玩家在體會(huì)連擊的快感后,同時(shí)對(duì)自己的游戲速度,更有挑戰(zhàn)性和追求極速的欲望。</p><p> 游戲產(chǎn)業(yè)作為現(xiàn)代電腦電子技術(shù)的產(chǎn)物,正在以其獨(dú)特的魅力在全世界的娛樂領(lǐng)域占據(jù)主流位置,我們?cè)诔姓J(rèn)廣大娛樂網(wǎng)民的選擇空間狹小的同時(shí),也必須明確的一點(diǎn)就是游戲本身所具有的強(qiáng)大的吸引力。
5、游戲的吸引力主要在于,它在讓玩家打發(fā)時(shí)間的同時(shí),可以讓人實(shí)現(xiàn)在顯示生活中不能實(shí)現(xiàn)的理想,得到在現(xiàn)實(shí)中不能得到的東西。而且游戲產(chǎn)業(yè)促動(dòng)高科技技術(shù)不斷升級(jí),作為經(jīng)濟(jì)增長(zhǎng)的一大支撐點(diǎn),已經(jīng)成為經(jīng)濟(jì)騰飛的“第四產(chǎn)業(yè)”。</p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p>
6、<b> 關(guān) 鍵 字1</b></p><p> Abstract2</p><p> Keywords2</p><p> 第1章 項(xiàng)目概述3</p><p> 1.1 項(xiàng)目背景3</p><p> 1.2 任務(wù)概述3</p><p> 1.3
7、項(xiàng)目開發(fā)計(jì)劃4</p><p><b> 1.4 術(shù)語表5</b></p><p> 第2章 分析階段6</p><p><b> 2.1 用況6</b></p><p> 2.2 概念模型10</p><p> 2.3 系統(tǒng)順序圖11</p>
8、;<p> 第3章 設(shè)計(jì)階段16</p><p> 3.1 協(xié)作圖16</p><p> 3.2 設(shè)計(jì)類圖17</p><p> 3.3 界面設(shè)計(jì)與界面類18</p><p> 第4章 構(gòu)造階段20</p><p> 4.1 核心代碼20</p><p>
9、 4.2 系統(tǒng)測(cè)試26</p><p> 第5章 用戶手冊(cè)30</p><p> 5.1 系統(tǒng)主要功能30</p><p> 5.2 運(yùn)行環(huán)境要求30</p><p> 5.3 游戲操作方法30</p><p> 第6章 畢業(yè)設(shè)計(jì)小結(jié)31</p><p><b>
10、 致 謝32</b></p><p><b> 參考文獻(xiàn)32</b></p><p><b> 摘 要</b></p><p> 小游戲制作的目的是滿足了人們休閑的需要,在緊張工作之余休閑類的小游戲能夠給人帶來最大程度的放松,也可以增進(jìn)人們之間的交流,溝通,通過游戲還可以認(rèn)識(shí)更多的朋友。 &
11、lt;/p><p> 本程序?qū)⑷陙硭鶎W(xué)的專業(yè)知識(shí)和其他方面的知識(shí)融入到實(shí)際應(yīng)用中。</p><p> 通過此次課題的設(shè)計(jì),掌握如何制作一個(gè)游戲軟件,以及制作游戲軟件的整個(gè)流程,制作游戲軟件的步驟,為以后的就業(yè)工作打下基礎(chǔ)。</p><p><b> 關(guān) 鍵 字</b></p><p><b> 小游戲;連
12、連看; </b></p><p><b> Abstract</b></p><p> The small game manufactures the goal has met the people leisure needs, when intense work the leisure class small game can bring the g
13、reatest degree to the human the relaxation, may also promote between people's exchange, the communication, may also know more friends through the game. This procedure the specialized knowledge which and other aspect
14、knowledge studies for three years integrates to the practical application. Through does this topic's design, how grasp manufactures a game software, as</p><p><b> Keywords</b></p><
15、;p> Small game; Looked again and again;</p><p><b> 項(xiàng)目概述</b></p><p><b> 項(xiàng)目背景</b></p><p> 現(xiàn)在小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡(jiǎn)單外(不像其他游戲還需要注冊(cè)下載繁瑣過程),很多游戲不乏經(jīng)典。連連看游戲
16、就是典型了!</p><p> 游戲產(chǎn)業(yè)作為現(xiàn)代電腦電子技術(shù)的產(chǎn)物,正在以其獨(dú)特的魅力在全世界的娛樂領(lǐng)域占據(jù)主流位置,我們?cè)诔姓J(rèn)廣大娛樂網(wǎng)民的選擇空間狹小的同時(shí),也必須明確的一點(diǎn)就是游戲本身所具有的強(qiáng)大的吸引力。游戲的吸引力主要在于,它在讓玩家打發(fā)時(shí)間的同時(shí),可以讓人實(shí)現(xiàn)在顯示生活中不能實(shí)現(xiàn)的理想,得到在現(xiàn)實(shí)中不能得到的東西。而且游戲產(chǎn)業(yè)促動(dòng)高科技技術(shù)不斷升級(jí),作為經(jīng)濟(jì)增長(zhǎng)的一大支撐點(diǎn),已經(jīng)成為經(jīng)濟(jì)騰飛的“第四
17、產(chǎn)業(yè)”。</p><p> 相關(guān)技術(shù)及開發(fā)工具介紹</p><p> 本系統(tǒng)采用面向?qū)ο蟮能浖_發(fā)辦法,Microsoft公司的可視化集成開發(fā)以 環(huán)境 Visual Studio .Net作為開發(fā)平臺(tái),以C#作為開發(fā)語言實(shí)現(xiàn)預(yù)定的需求功能。 </p><p> Visual Studio .Net 集成開發(fā)環(huán)境簡(jiǎn)介: .Net是Microsoft XML We
18、b services 平臺(tái)。.Net平臺(tái)為創(chuàng)建新一代分布式Web應(yīng)用提供了所有的工具和技術(shù)(表示技術(shù)、構(gòu)件技術(shù)和數(shù)據(jù)庫技術(shù))。它支持標(biāo)準(zhǔn)的 Internet 協(xié)議,包括 HTTP 協(xié)議、XML(可擴(kuò)展標(biāo)記語言)和SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議,從而實(shí)現(xiàn)了異構(gòu)系統(tǒng)間應(yīng)用程序的集成和通信。.Net平臺(tái)包括5個(gè)主要部分:Windows .Net ,.Net 企業(yè)級(jí)服務(wù)器,.Net Web服務(wù)構(gòu)件,.Net Framework ,Visual St
19、udio .Net,Windows .Net ,.Net企業(yè)級(jí)服務(wù)器,.Net Web服務(wù)構(gòu)件,.Net Framework ,Visual Studio .Net,Visual Studio .Net是為建立基于.Net Framework 應(yīng)用程序而設(shè)的一個(gè)可視化集成開發(fā)環(huán)境,它提供了更優(yōu)秀的多種編譯語言的編輯和編譯統(tǒng)一的開發(fā)平臺(tái),他是一個(gè)快速開發(fā)企業(yè)級(jí)Web 應(yīng)用程序以及高性能桌面應(yīng)用的工具。它為所有的編程語言提供了簡(jiǎn)單統(tǒng)一的代
20、碼編輯器,包括XML</p><p> 1.3.2 C#語言簡(jiǎn)介: C#是一種現(xiàn)代的、面向?qū)ο蟮恼Z言,它結(jié)合了C/C++和 Visual C++的強(qiáng)大功能以及Visual Basic的簡(jiǎn)單易用性。C#有以下新特性:簡(jiǎn)單:C#做了些該進(jìn),使語言更簡(jiǎn)單;面向?qū)ο螅篊#支持面向?qū)ο蟮娜N編程原則:封裝、繼承和多態(tài);類型安全:C#去掉了指針,從根本上保證了程序的穩(wěn)定性和類型安全;版本控制:C#實(shí)現(xiàn)了版本技術(shù),避免了“D
21、LL 災(zāi)難” ;兼容性:C#允許在遵守.Net Framework CLS 的條件下訪問不同的 API, 可以與 Windows 的幾種傳統(tǒng)服務(wù)交互;靈活性:C#允許聲明一些不安全的方法和類,從而使用指針、結(jié)構(gòu)和靜態(tài)數(shù)組??傊?,C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言,它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏和模板,不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C
22、++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET 開發(fā)的首選語言。</p><p><b> 任務(wù)概述</b></p><p><b> 任務(wù)概述</b></p><p><b> 實(shí)現(xiàn)單機(jī)版連連看</b></p><
23、p> 開始游戲后,隨機(jī)生成圖片位置</p><p><b> 游戲中可使用道具</b></p><p><b> 實(shí)現(xiàn)目標(biāo)</b></p><p><b> 游戲概況</b></p><p><b> 方案論證</b></p>
24、<p><b> 界面設(shè)計(jì)</b></p><p><b> 圖片選取及生成</b></p><p><b> 算法路徑實(shí)現(xiàn)</b></p><p><b> 游戲運(yùn)行</b></p><p><b> 項(xiàng)目開發(fā)計(jì)劃<
25、/b></p><p> 如表11項(xiàng)目開發(fā)計(jì)劃</p><p> 日期 階段</p><p> 2月19到2月24 確定設(shè)計(jì)方向</p><p> 2月24到3月5
26、 可行性分析</p><p> 3月5到3月11 概要設(shè)計(jì)</p><p> 3月12到3月17 詳細(xì)設(shè)計(jì)</p><p> 3月19到4月7 編寫代碼</p><p> 4月9
27、到4月14 軟件測(cè)試</p><p> 4月14到4月18 編寫項(xiàng)目文檔 </p><p><b> 術(shù)語表</b></p><p> 重列:將游戲中的所有對(duì)子重新排列一次。</p><p> 延長(zhǎng)時(shí)間:將游
28、戲中的使用時(shí)間延長(zhǎng)。</p><p> 種子數(shù):產(chǎn)生圖片的數(shù)量</p><p> 重復(fù)數(shù):每種圖片的重復(fù)出現(xiàn)數(shù)</p><p><b> 分析階段</b></p><p><b> 用況</b></p><p><b> 系統(tǒng)用況圖</b>&l
29、t;/p><p> 如圖 21系統(tǒng)用況</p><p><b> 圖 21系統(tǒng)用況</b></p><p><b> 開始游戲</b></p><p><b> 如表 2.1.2</b></p><p> 表 2.1.2開始游戲用況</p
30、><p><b> 種類數(shù)/重復(fù)數(shù)設(shè)置</b></p><p> 如表 2.1.3種類數(shù)/重復(fù)數(shù)設(shè)置用況</p><p> 表 2.1.3種類數(shù)/重復(fù)數(shù)設(shè)置用況</p><p><b> 2.1.4重列游戲</b></p><p> 如表 2.1.4重列游戲用況<
31、/p><p> 表 2.1.4重列游戲用況</p><p> 2.1.5暫停/開始</p><p> 如表2.1.5暫停/開始用況</p><p> 表 2.1.5暫停/開始用況</p><p><b> 概念模型</b></p><p><b> 候選概
32、念</b></p><p> 游戲、重列、生成圖片數(shù)、選擇音樂文件、延長(zhǎng)時(shí)間等</p><p><b> 關(guān)聯(lián)</b></p><p> 如圖 2.2.2關(guān)聯(lián)</p><p><b> 圖 2.2.2關(guān)聯(lián)</b></p><p><b> 屬性
33、</b></p><p><b> 圖 2.2.3屬性</b></p><p><b> 圖 2.2.3屬性</b></p><p><b> 概念模型圖</b></p><p> 圖 2.2.4概念模型圖</p><p><b
34、> 系統(tǒng)順序圖</b></p><p><b> 開始游戲順序圖</b></p><p><b> 如圖 2.3.1</b></p><p> 圖 2.3.1開始游戲順序圖</p><p><b> 修改背景音樂順序圖</b></p>
35、<p> 如圖 2.3.2修改背景音樂順序圖</p><p> 圖 2.3.2修改背景音樂順序圖</p><p><b> 重列游戲順序圖</b></p><p> 如圖 2.3.3重列游戲順序圖</p><p> 圖 2.3.3重列游戲順序圖</p><p> 種類數(shù)/重復(fù)
36、數(shù)順序圖</p><p> 如圖 2.3.4種類數(shù)/重復(fù)數(shù)順序圖</p><p> 圖 2.3.4種類數(shù)/重復(fù)數(shù)順序圖</p><p> 2.3.5暫停/開始順序圖</p><p> 如圖 2.3.5暫停/開始順序圖</p><p> 圖 2.3.5暫停/開始順序圖</p><p>&
37、lt;b> 設(shè)計(jì)階段</b></p><p><b> 協(xié)作圖</b></p><p><b> 修改背景音樂協(xié)作圖</b></p><p> 1. 如圖 3.1.1修改背景音樂的協(xié)作圖</p><p> 圖 3.1.1修改背景音樂的協(xié)作圖</p><
38、p><b> 2.解釋</b></p><p> 修改背景音樂信息被發(fā)送到一個(gè)系統(tǒng)實(shí)例,它對(duì)應(yīng)于修改背景音樂這個(gè)系統(tǒng)操作消息</p><p> 系統(tǒng)對(duì)象發(fā)送修改背景音樂消息到背景音樂的實(shí)例</p><p><b> 重列的協(xié)作圖</b></p><p> 1.如圖3.1.2重列的協(xié)作
39、圖</p><p> 圖 3.1.2重列的協(xié)作圖</p><p><b> 2.解釋</b></p><p> 重列信息被發(fā)送到一個(gè)系統(tǒng)實(shí)例,它對(duì)應(yīng)于重列這個(gè)系統(tǒng)操作消息</p><p> 系統(tǒng)對(duì)象發(fā)送重列消息到圖片的實(shí)例</p><p><b> 設(shè)計(jì)類圖</b>
40、</p><p><b> 軟件類</b></p><p><b> 加入方法</b></p><p><b> 加入關(guān)聯(lián)</b></p><p> 基本設(shè)計(jì)概念和處理流程</p><p><b> 界面設(shè)計(jì)與界面類</b>
41、;</p><p><b> 主界面</b></p><p> 如圖 3.4.1主界面</p><p> 圖 3.4.1主界面</p><p><b> 游戲失敗界面</b></p><p> 如圖 3.4.2游戲失敗界面</p><p>
42、 圖 3.4.2游戲失敗界面</p><p><b> 游戲控制區(qū)界面</b></p><p> 如圖 3.4.3游戲控制區(qū)界面</p><p> 圖 3.4.3游戲控制區(qū)界面</p><p><b> 3.4.4流程邏輯</b></p><p><b>
43、 構(gòu)造階段</b></p><p><b> 核心代碼</b></p><p> 圖片的隨機(jī)生成所用到的方法 </p><p> 說明:通過數(shù)組從圖片庫隨即獲取規(guī)定個(gè)數(shù)得到圖片,隨機(jī)分布在畫布上。圖片個(gè)數(shù)一定是偶數(shù)個(gè)。 </p><p><b> 代碼如下:</b></p
44、><p> namespace LLK</p><p><b> {</b></p><p> public partial class Form1 : Form</p><p><b> {</b></p><p> public Form1()</p>
45、<p><b> {</b></p><p> InitializeComponent();</p><p> IniteBmp(MAXPICS);</p><p><b> }</b></p><p> Music music = new Music();</p>
46、<p> SoundPlayer selectplayer = new SoundPlayer("Sounds\\select.wav");</p><p> SoundPlayer eraseplayer = new SoundPlayer("Sounds\\erase.wav");</p><p> SoundPlayer r
47、efreshplayer = new SoundPlayer("Sounds\\refresh.wav");</p><p> SoundPlayer bombplayer = new SoundPlayer("Sounds\\bomb.wav");</p><p> int[,] gmap = new int[MAPWIDTH,MAPHEIGH
48、T];//實(shí)際的圖片矩陣為19*11</p><p> Graphics g_g = null;//全局畫布</p><p> const int PBMAX = 100;//processbar的最大值</p><p> static int pbvalue=PBMAX;//proecssbar現(xiàn)在的值</p><p> stat
49、ic int reducestep = 1;//第次減少的步數(shù)</p><p> static long score = 0;//游戲得分</p><p><b> //圖片的寬和高</b></p><p> private const int PICWIDTH = 31;</p><p> private co
50、nst int PICHEIGHT = 34;</p><p> private const int MAPWIDTH = 19;</p><p> private const int MAPHEIGHT = 11;</p><p> private const int MAXPICS = 39;</p><p> //本局中圖片的數(shù)
51、量</p><p> private int picnum = 18;</p><p> private int multipic = 4;//一張圖片重復(fù)出來的次數(shù),一定為偶數(shù)</p><p> //加載到內(nèi)存中的圖片</p><p> Image[] img = new Image[39];</p><p>
52、; Image[] bombimg = new Image[6];</p><p> Kernal AI=null;</p><p><b> //游戲開始</b></p><p> bool bStart = false;</p><p><b> //加載圖</b></p>
53、<p> private void IniteBmp(int maxnum)</p><p><b> {</b></p><p> g_g = this.CreateGraphics();</p><p> for (int i = 0; i < MAPWIDTH; i++)</p><p>
54、; for (int j = 0; j < MAPHEIGHT; j++)</p><p> gmap[i, j] = 0;</p><p> IniteRandomMap(ref gmap, maxnum);</p><p> AI = new Kernal(ref gmap);</p><p> for (int i =
55、0; i < maxnum; i++)</p><p><b> {</b></p><p> ResourceManager rm = new ResourceManager("LLK.data", Assembly.GetExecutingAssembly());</p><p> img[i]= (Imag
56、e)rm.GetObject(i.ToString()+".bmp");</p><p> //img[i] = (Image)Bitmap.FromFile("Images\\"+(i+1).ToString()+".bmp");</p><p><b> }</b></p><p&
57、gt; for (int i = 0; i < 6; i++)</p><p><b> {</b></p><p> //bombimg[i] = (Image)Bitmap.FromFile("Images\\B"+(i+1).ToString()+".bmp");</p><p><
58、;b> }</b></p><p><b> }</b></p><p> private bool CheckWin(ref int[,] map)</p><p><b> {</b></p><p> bool Win = true;</p><
59、p> for (int i = 0; i < MAPWIDTH; i++)</p><p> for (int j = 0; j < MAPHEIGHT; j++)</p><p> if (map[i, j] != 0)</p><p> Win = false;</p><p> return Win;<
60、/p><p><b> }</b></p><p> private void IniteRandomMap(ref int[,] map,int num)</p><p><b> {</b></p><p> Random r=new Random();</p><p&g
61、t; while (num > 0)</p><p><b> {</b></p><p> for (int i = 0; i < multipic; i++)</p><p><b> {</b></p><p> int xrandom = r.Next(19) ;<
62、;/p><p> int yrandom = r.Next(11) ;</p><p> if (map[xrandom, yrandom] == 0)</p><p><b> {</b></p><p> map[xrandom, yrandom] = num;</p><p><b
63、> }</b></p><p><b> else</b></p><p><b> i--;</b></p><p><b> }</b></p><p><b> num--;</b></p><p>
64、;<b> }</b></p><p><b> }</b></p><p> private void FreshMap(ref int[,] map)</p><p><b> {</b></p><p> Random r = new Random();<
65、/p><p> for(int i=0;i<MAPWIDTH;i++)</p><p> for (int j = 0; j < MAPHEIGHT; j++)</p><p><b> {</b></p><p> if (gmap[i, j] != 0)</p><p><
66、;b> {</b></p><p> int x = r.Next(19);</p><p> int y = r.Next(11);</p><p> int temp = gmap[x, y];</p><p> gmap[x, y] = gmap[i, j];</p><p> gm
67、ap[i, j] = temp;</p><p><b> }</b></p><p><b> }</b></p><p> TransportMap(ref gmap);</p><p><b> }</b></p><p> privat
68、e void TransportMap(ref int[,] map)</p><p><b> {</b></p><p> for(int i=0;i<MAPWIDTH;i++)</p><p> for (int j = 0; j < MAPHEIGHT; j++)</p><p><b&g
69、t; {</b></p><p> AI.GiveMapValue(i, j, map[i, j]);</p><p><b> }</b></p><p><b> }</b></p><p> //在指定位置畫指定圖</p><p> privat
70、e void Draw(Graphics g, Image scrImg, int PicX,int PicY)</p><p><b> {</b></p><p> g.DrawImage(scrImg, new Point(PicX, PicY));</p><p><b> }</b></p>
71、<p> private void Form1_Paint(object sender, PaintEventArgs e)</p><p><b> {</b></p><p> g_g.DrawLine(new Pen(new SolidBrush(Color.DeepSkyBlue), 5), 0, 11 * 34 + 5, 19 * 34, 1
72、1 * 34 + 5);</p><p> if (bStart)</p><p><b> {</b></p><p> for (int i = 0; i < MAPWIDTH; i++)</p><p> for (int j = 0; j < MAPHEIGHT; j++)</p>
73、<p><b> {</b></p><p> if (gmap[i, j] != 0)</p><p><b> {</b></p><p> Draw(g_g, img[gmap[i, j] - 1], i * PICWIDTH, j * PICHEIGHT);</p><p&
74、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> int two = 0;//用來計(jì)算點(diǎn)擊塊的次數(shù),最大為2</p>&l
75、t;p> Point fpoint;//記錄第一次點(diǎn)擊的位置</p><p> private void Form1_MouseDown(object sender, MouseEventArgs e)</p><p><b> {</b></p><p> int curx = e.X / 31;</p><
76、p> int cury = e.Y/ 34;</p><p> if (curx > 18 || cury > 10)</p><p><b> return;</b></p><p> if (gmap[curx, cury] != 0)</p><p><b> {</b&
77、gt;</p><p> selectplayer.Play();</p><p> Pen pen = new Pen(new SolidBrush(this.BackColor));</p><p> g_g.DrawRectangle(pen, new Rectangle(curx * 31, cury * 34, 31, 34));</p>
78、<p><b> two++;</b></p><p> switch (two)</p><p><b> {</b></p><p><b> case 1:</b></p><p> fpoint = new Point(curx, cury);&
79、lt;/p><p><b> break;</b></p><p><b> case 2:</b></p><p> if (AI.IsLink(fpoint.X, fpoint.Y, curx, cury))</p><p><b> {</b></p>
80、<p><b> two = 0;</b></p><p> eraseplayer.Play();</p><p><b> 過關(guān)設(shè)置 </b></p><p> 把界面上全部圖片都消去即為通過此關(guān),進(jìn)入下一關(guān),種類數(shù)加1.</p><p><b> 代碼如下:&l
81、t;/b></p><p> //獲得拐點(diǎn)數(shù)目和位置,做畫線處理</p><p> ProcessCorner(fpoint,new Point(curx,cury));</p><p> if (CheckWin(ref gmap))</p><p><b> {</b></p><p
82、> starttimer = false;</p><p> MessageBox.Show("恭喜過關(guān)!");</p><p> bStart = false;</p><p> picnum++;//種類加1</p><p> if (picnum>38)</p><p>
83、<b> {</b></p><p> picnum = 39;</p><p> multipic += 2;</p><p> if (picnum * multipic > 209)</p><p><b> {</b></p><p> Messag
84、eBox.Show("你太強(qiáng)悍了,請(qǐng)聯(lián)系孫法憲(電話15838095284),請(qǐng)為你提高難度!哈哈!");</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p>
85、 button1_Click_1(sender, e);</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p
86、><b> two = 1;</b></p><p> fpoint = new Point(curx, cury);</p><p><b> }</b></p><p><b> break;</b></p><p><b> default:&l
87、t;/b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 得分設(shè)
88、置 </b></p><p><b> 說明:</b></p><p> 1:兩個(gè)目標(biāo)是相同的 </p><p> 2:兩個(gè)目標(biāo)之間連接線的折點(diǎn)不超過兩個(gè)。(連接線由x軸和y軸的平行線組成) 那么分析一下連接的情況可以看到,一般分三種情況</p><p> 1:直線相連 2:一個(gè)折點(diǎn) 3:兩個(gè)折點(diǎn):
89、</p><p> 可以發(fā)現(xiàn),如果有折點(diǎn),每個(gè)折點(diǎn)必定有且至少有一個(gè)坐標(biāo)(x或者y)是和其中一個(gè)目標(biāo)點(diǎn)是相同的,也就是說,折點(diǎn)必定在兩個(gè)目標(biāo)點(diǎn)所在的x方向或y方向的直線上。</p><p><b> 所以設(shè)計(jì)思路就是:</b></p><p> 假設(shè)目標(biāo)點(diǎn) p1 , p2 ,如果有兩個(gè)折點(diǎn)分別為z1 , z2 那么,所要進(jìn)行的是 <
90、/p><p> 1:如果驗(yàn)證p1 , p2 直線連線,則連接成立 </p><p> 2:搜索以p1,p2的x,y方向四條直線(可能某兩條直線會(huì)重合)上的有限點(diǎn),每次取兩點(diǎn)作為z1,z2 ,驗(yàn)證p1到z1/z1到z2/z2到p2 是否都能直線相連 ,是則連接成立。</p><p><b> 代碼如下:</b></p><p
91、> //此方法用做處理畫線和消去,寫的比較爛</p><p> private void ProcessCorner(Point p1,Point p2)</p><p><b> {</b></p><p> Point[] corner = new Point[3];</p><p> corner
92、= AI.GetPoints();</p><p> Pen pen = new Pen(new SolidBrush(Color.Red), 5);//線畫筆</p><p> Pen bkpen = new Pen(new SolidBrush(this.BackColor), 5);//擦去畫筆</p><p> pbvalue += 4;</p&
93、gt;<p> // MoveUp(p1.X, p1.Y);</p><p> //MoveUp(p2.X, p2.Y);</p><p> switch (corner[2].X)</p><p><b> {</b></p><p><b> case 1:</b><
94、;/p><p> score += 20;//一個(gè)拐點(diǎn)加20;</p><p> g_g.DrawLine(pen, new Point(p1.X*31+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
95、 * 31+15, p2.Y * 34+17), new Point(corner[0].X * 31+15, corner[0].Y * 34+17));</p><p> Thread.Sleep(100);</p><p> EraseBlock(g_g, p1, p2);</p><p> g_g.DrawLine(bkpen, new Point(p
96、1.X * 31 + 15, p1.Y * 34 + 17), new Point(corner[0].X * 31 + 15, corner[0].Y * 34 + 17));</p><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
97、* 34 + 17));</p><p><b> break;</b></p><p><b> case 2:</b></p><p> score += 40;//兩個(gè)拐點(diǎn)加40</p><p> Point[] ps ={ new Point(p1.X*31+15,p1.Y*34+1
98、7),new Point( corner[1].X*31+15,corner[1].Y*34+17),new Point(corner[0].X*31+15,corner[0].Y*34+17),new Point(p2.X*31+15,p2.Y*34+17)};</p><p> g_g.DrawLines(pen, ps);</p><p> Thread.Sleep(100);&
99、lt;/p><p> EraseBlock(g_g, p1, p2);</p><p> g_g.DrawLines(bkpen,ps);</p><p> //foreach (Point mp in ps)</p><p><b> //{</b></p><p> //MessageB
100、ox.Show("("+mp.X.ToString()+","+mp.Y.ToString()+")");</p><p><b> //}</b></p><p><b> break;</b></p><p><b> case 0:</
101、b></p><p> score += 10;//直連加10</p><p> g_g.DrawLine(pen, new Point(p1.X * 31 + 15, p1.Y * 34 + 17), new Point(p2.X * 31 + 15, p2.Y * 34 + 17));</p><p> Thread.Sleep(100);</
102、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(p2.X * 31 + 15, p2.Y * 34 + 17));</p><p><b> break;</b>&
103、lt;/p><p> default: break;</p><p><b> }</b></p><p> //RefreshMap(ref gmap);</p><p> label5.Text = score.ToString();</p><p><b> }</b&
104、gt;</p><p> private void EraseBlock(Graphics g, Point p1, Point p2)</p><p><b> {</b></p><p> g.FillRectangle(new SolidBrush(this.BackColor), new Rectangle(p1.X * 31,
105、p1.Y * 34, 31, 34));</p><p> g.FillRectangle(new SolidBrush(this.BackColor), new Rectangle(p2.X * 31, p2.Y * 34, 31, 34));</p><p> gmap[p1.X, p1.Y] = 0;</p><p> gmap[p2.X, p2.Y]
106、= 0;</p><p> AI.GiveMapValue(p1.X, p1.Y, 0);</p><p> AI.GiveMapValue(p2.X, p2.Y, 0);</p><p><b> }</b></p><p> bool starttimer = false;</p><p&
107、gt; private void button1_Click_1(object sender, EventArgs e)</p><p><b> {</b></p><p> //處理Processbar</p><p> if (!starttimer)</p><p><b> {</b&
108、gt;</p><p> progressBar1.Value = PBMAX;</p><p> pbtimer.Interval = 500;</p><p> pbtimer.Start();</p><p> starttimer = true;</p><p><b> }</b&g
109、t;</p><p><b> //處理分?jǐn)?shù)</b></p><p> score = 0;</p><p> picnum = Convert.ToInt16(textBox1.Text);</p><p> multipic = Convert.ToInt16(textBox2.Text);</p>
110、;<p> if (picnum * multipic > 209)</p><p><b> {</b></p><p> MessageBox.Show("游戲區(qū)域內(nèi)最多只有209個(gè)空,您選的數(shù)據(jù)太多!請(qǐng)重新選 !");</p><p> textBox1.Text = "18&qu
111、ot;;</p><p> textBox2.Text = "4";</p><p><b> return;</b></p><p><b> }</b></p><p> IniteBmp(picnum);</p><p> if (bSta
112、rt)</p><p><b> {</b></p><p> MessageBox.Show("游戲已在運(yùn)行!");</p><p><b> return;</b></p><p><b> }</b></p><p>&
113、lt;b> else</b></p><p><b> {</b></p><p> bStart = true;</p><p> this.Invalidate();</p><p> music.Play("Sounds\\左邊.mp3");</p>&
114、lt;p> //music.Play("Sounds\\bg-07.mid");</p><p><b> }</b></p><p><b> }</b></p><p><b> //將塊向上移</b></p><p> private
115、void MoveUp(int x, int y)</p><p><b> {</b></p><p> if (y < 1)</p><p><b> return;</b></p><p> for (int i = y; i < MAPHEIGHT-1;i++ )<
116、/p><p><b> {</b></p><p> gmap[x, i] = gmap[x, i + 1];</p><p><b> }</b></p><p><b> }</b></p><p> private void RefreshM
117、ap(ref int[,] map)</p><p><b> {</b></p><p> if (bStart)</p><p><b> {</b></p><p> for (int i = 0; i < MAPWIDTH; i++)</p><p>
118、 for (int j = 0; j < MAPHEIGHT; j++)</p><p><b> {</b></p><p> if (gmap[i, j] != 0)</p><p><b> {</b></p><p> Draw(g_g, img[gmap[i, j] - 1]
119、, i * PICWIDTH, j * PICHEIGHT);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p
120、> private void button2_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> refreshplayer.Play();</p><p> FreshMap(ref gmap);</p><p> this.Inv
121、alidate();</p><p><b> }</b></p><p> /// 以下為爆炸處理</p><p> private void button3_Click(object sender, EventArgs e)</p><p><b> {</b></p>&
122、lt;p><b> }</b></p><p> private void pbtimer_Tick(object sender, EventArgs e)</p><p><b> {</b></p><p> pbvalue = pbvalue - reducestep;</p><p
123、> if (pbvalue > 100)</p><p> pbvalue = 100;</p><p> if (pbvalue == 0&&starttimer)</p><p><b> {</b></p><p> starttimer = false;</p>
124、<p> pbtimer.Stop();</p><p> MessageBox.Show("Failed!");</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</
125、b></p><p> progressBar1.Value = pbvalue;</p><p><b> }</b></p><p> private void Form1_Load(object sender, EventArgs e)</p><p><b> {</b><
126、;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 系統(tǒng)測(cè)試</b></p><p><b> 游戲測(cè)試結(jié)果</b>
127、</p><p> 在程序代碼基本完成后,經(jīng)過不斷的調(diào)試與修改,最后測(cè)試本次所設(shè)計(jì)的連連看游戲能夠正常運(yùn)行,在基本功能與比較成熟的連連看游戲沒有太大差別,沒有出現(xiàn)明顯的錯(cuò)誤和漏洞,但是在一些細(xì)節(jié)方面仍然需要完善,比如在游戲中可以加入一些聲音的提示,在游戲完成和失敗的時(shí)候可以彈出一些小的Flash動(dòng)畫,還有就是可以加入一個(gè)連連看英雄榜等等??偟膩碚f本次設(shè)計(jì)在功能上已經(jīng)基本達(dá)到要求,其他細(xì)節(jié)方面有待以后完善。<
128、;/p><p><b> 功能實(shí)現(xiàn):正常</b></p><p><b> 用戶手冊(cè)</b></p><p><b> 系統(tǒng)主要功能</b></p><p> 重列道具,暫時(shí)/開始游戲</p><p><b> 運(yùn)行環(huán)境要求</b&
129、gt;</p><p> 操作系統(tǒng):Windows 2000、Windows XP、Windows NT、Windows Vista、Windows 7</p><p> 必備組件包:Microsoft .NET Framework 2.0</p><p><b> 游戲操作方法</b></p><p> 第一次
130、使用鼠標(biāo)點(diǎn)擊棋盤中的棋子,該棋子此時(shí)為“被選中”,以特殊方式顯示;再次以鼠標(biāo)點(diǎn)擊其他棋子,若該棋子與被選中的棋子圖案相同,且把第一個(gè)棋子到第二個(gè)棋子連起來,中間的直線不超過 3 根,則消掉這一對(duì)棋子,否則第一顆棋子恢復(fù)成未被選中狀態(tài),而第二顆棋子變成被選中狀態(tài)。</p><p> 勝利條件 :消除畫面上所有圖片獲得一局勝利,種子數(shù)為18初始值時(shí),總關(guān)數(shù)為4關(guān),4關(guān)完成后游戲通關(guān)當(dāng)圖片的數(shù)量大于209張的時(shí)候完成
131、游戲后勝利</p><p> 失敗條件 :游戲所需時(shí)間用盡時(shí),游戲結(jié)束</p><p> 計(jì)分規(guī)則 :兩圖片直連加強(qiáng)10分,一個(gè)拐點(diǎn)加20分,兩個(gè)拐點(diǎn)加30</p><p> 使用道具 :道具總共有兩種,第一種是重列道具,當(dāng)玩家無法找到能消除的游戲圖片時(shí),可以使用重列道具。</p><p><b> 畢業(yè)設(shè)計(jì)小結(jié)</b
132、></p><p> 這個(gè)游戲是我和傅丞合作完成的,由于以前沒有配合過,控件命名,代碼書寫都有各自的習(xí)慣,給程序的寫作帶來了很多的麻煩。為了克服這些困難解決這些問題,我們花了一下午的時(shí)間用于交流,結(jié)合個(gè)人的習(xí)慣,取長(zhǎng)補(bǔ)短,去蕪存菁,統(tǒng)一了格式。</p><p> 實(shí)踐證明我們那一個(gè)下午沒有白費(fèi),在以后的合作中我們配合默契,節(jié)省了很多的時(shí)間。讓我明白了,團(tuán)隊(duì)就不是一個(gè)人的事,要學(xué)會(huì)
133、適應(yīng),交流和包容。 </p><p> 這個(gè)游戲分兩個(gè)模塊,其中第一的內(nèi)容是非常分散,而且內(nèi)部又有很多小模塊,互相之間也有非常密切的聯(lián)系,很多變量之間數(shù)據(jù)的傳遞都要考慮好。而第二個(gè)模塊(即路徑判斷問題)相對(duì)比較集中,代碼內(nèi)容非常長(zhǎng),工作量也是很大的,且?guī)缀跞渴窃诖a中編寫,沒有添加什么界面上的控件操作。 </p><p> 另外這個(gè)游戲沒有用到數(shù)據(jù)庫,所使用的功能也不是很多,但
134、是由于考慮到要按固有的游戲規(guī)則來編寫,因此要寫較多時(shí)間考慮游戲怎么玩,怎么通過代碼判斷用戶每個(gè)鼠標(biāo)點(diǎn)擊的坐標(biāo)以及當(dāng)前坐標(biāo)位置代表的圖片內(nèi)容等各方面的判斷考慮得就較多了。 </p><p><b> 致 謝</b></p><p> 感謝所有關(guān)心、幫助過我們的老師、朋友和同學(xué)們,使我們大學(xué)三年的時(shí)光更加美好、難忘。</p><p>&l
135、t;b> 參考文獻(xiàn)</b></p><p> [1] 孫三才, 許薰尹.精通 C#與 ASP.net 程序設(shè)計(jì).中國(guó)鐵道出版社 ;</p><p> [2] Charles C. Caison.ASP.NET 程序員查詢辭典.中國(guó)鐵道出版社 ;</p><p> [3] 2005 王興東.ASP & ASP.NET 應(yīng)用編程150例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 連連看java小游戲畢業(yè)設(shè)計(jì)論文
- [畢業(yè)設(shè)計(jì)資料]連連看java小游戲畢業(yè)設(shè)計(jì)資料
- 畢業(yè)設(shè)計(jì)--連連看游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)實(shí)現(xiàn)
- 連連看游戲設(shè)計(jì)論文
- 連連看小游戲設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文——連連看設(shè)計(jì)
- 連連看游戲開題報(bào)告
- 基于java連連看游戲
- 連連看畢業(yè)論文--基于安卓系統(tǒng)的趣味連連看游戲設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的連連看游戲設(shè)計(jì)
- 連連看游戲機(jī)
- java課程設(shè)計(jì)--連連看游戲設(shè)計(jì)
- 連連看游戲設(shè)計(jì)與實(shí)現(xiàn)2
- 連連看游戲設(shè)計(jì)與實(shí)現(xiàn).docx
- qt連連看游戲設(shè)計(jì)與實(shí)現(xiàn)
- 安卓版連連看畢業(yè)設(shè)計(jì)報(bào)告
- 基于java的連連看游戲設(shè)計(jì)畢業(yè)論文
- 基于java的連連看游戲設(shè)計(jì)畢業(yè)論文
- android課程設(shè)計(jì)連連看小游戲
- 連連看游戲設(shè)計(jì)與實(shí)現(xiàn)論文.docx
評(píng)論
0/150
提交評(píng)論