版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 《數(shù)據(jù)結(jié)構(gòu)與算法》</b></p><p><b> 課程設(shè)計說明書</b></p><p> 題 目: flash 迷宮小游戲</p><p> 學(xué) 院: 計算機(jī)科學(xué)與工程學(xué)院 </p><p> 專
2、 業(yè): 信息安全 </p><p> 姓 名: </p><p> 學(xué) 號: </p><p> 指導(dǎo)教師:
3、 </p><p> 2014年 10 月 1 日</p><p><b> 成績評定標(biāo)準(zhǔn)及成績</b></p><p> 能按照格式進(jìn)行寫作,無抄襲現(xiàn)象(10分) </p><p> 報告內(nèi)容行文通暢,有條理性,無錯別字,結(jié)構(gòu)嚴(yán)謹(jǐn)。(10分) </p><p>
4、; 能夠按照數(shù)據(jù)結(jié)構(gòu)課設(shè)的格式要求、排版要求和字?jǐn)?shù)要求等,有需求分析,系統(tǒng)分析,詳細(xì)設(shè)計,關(guān)鍵技術(shù)的介紹和參考文獻(xiàn)。(10分) </p><p> 在驗收過程中,能合理的回答問題(20分) </p><p> 軟件能正常運(yùn)行,實現(xiàn)所提出的功能(40分) </p><p> 軟件代碼規(guī)范性較好(5分) </p><p>
5、; 具有自己的創(chuàng)新或特色(5分) </p><p> 總成績: </p><p><b> 目 錄</b></p><p><b> 引言3</b></p><p><b> 1 系統(tǒng)概述4</b></p><p>
6、<b> 2 需求分析5</b></p><p> 2.1 系統(tǒng)需求5</p><p> 2.2 開發(fā)環(huán)境5</p><p><b> 3 詳細(xì)設(shè)計9</b></p><p> 3.1 準(zhǔn)備階段9</p><p> 3.2 設(shè)計制作階段9</
7、p><p> 3.3修正并定型9</p><p> 3.4 界面設(shè)計5</p><p> 4 所遇到的問題和分析解決24</p><p> 5 系統(tǒng)特色及關(guān)鍵技術(shù)25</p><p><b> 6 結(jié)論26</b></p><p><b>
8、 參考文獻(xiàn)27</b></p><p><b> 引言</b></p><p> 一個數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來的。對數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計算機(jī)內(nèi)存儲,數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)形式,是其在計算機(jī)內(nèi)的表示;此外討論一個數(shù)據(jù)結(jié)構(gòu)必須同時討論在該類數(shù)據(jù)上執(zhí)行的運(yùn)算才有意義。數(shù)據(jù)結(jié)構(gòu)作為一門獨(dú)立的課程
9、在國外是從1968年才開始的,但在此之前其有關(guān)內(nèi)容已散見于編譯原理及操作系統(tǒng)之中。20世紀(jì)60年代中期,美國的一些大學(xué)開始設(shè)立有關(guān)課程,但當(dāng)時的課程名稱并不叫數(shù)據(jù)結(jié)構(gòu)。1968年美國唐.歐.克努特教授開創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,他所著的《計算機(jī)程序設(shè)計技巧》第一卷《基本算法》是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)及其操作的著作。從20世紀(jì)60年代末到70年代初,出現(xiàn)了大型程序,軟件也相對獨(dú)立,結(jié)構(gòu)程序設(shè)計成為程序設(shè)計方法學(xué)的主要內(nèi)容
10、,人們越來越重視數(shù)據(jù)結(jié)構(gòu)。從70年代中期到80年代,各種版本的數(shù)據(jù)結(jié)構(gòu)著作相繼出現(xiàn)。目前,數(shù)據(jù)結(jié)構(gòu)的發(fā)展并未終結(jié),一方面,面向各專門領(lǐng)域中特殊問題的數(shù)據(jù)結(jié)構(gòu)得到研究和發(fā)展,如多維圖形數(shù)據(jù)結(jié)構(gòu)等;另一方面,從抽象數(shù)據(jù)類型和面向?qū)ο蟮挠^點(diǎn)來討論數(shù)據(jù)結(jié)構(gòu)已成為一種新的趨勢,越來越被人們所重視。隨</p><p> Flash軟件由Macromedia公司推出,除了制作動畫以外,還能實現(xiàn)交互功能。Flash是一種創(chuàng)作工
11、具,設(shè)計人員和開發(fā)人員可使用它來創(chuàng)建演示文稿、應(yīng)用程序和其它允許用戶交互的內(nèi)容。Flash 可以包含簡單的動畫、視頻內(nèi)容、復(fù)雜演示文稿和應(yīng)用程序以及介于它們之間的任何內(nèi)容。它不僅能夠制作出許多眩目多彩的效果,只要你肯賦予它一定的情景,它也會模擬出現(xiàn)實生活中的場景。通過Flash生成的動畫文件非常小,可以很好的用在網(wǎng)頁設(shè)計及更多的領(lǐng)域。Flash可以采用補(bǔ)間形狀或補(bǔ)間動畫等多種手段,產(chǎn)生很復(fù)雜的動畫;同時,F(xiàn)lash不同于gif動畫,它可
12、以附加很復(fù)雜的控制代碼,從而開發(fā)出很復(fù)雜的應(yīng)用,比如一些小游戲。在近年發(fā)展迅速,許多年青人投身其中,并在整個flash行業(yè)中發(fā)揮重要作用。flash player占據(jù)了90%互聯(lián)網(wǎng)用戶的瀏覽器,空間還十分巨大,前途不可估量從第一個電子游戲開發(fā)至今已經(jīng)有30多年,在這個短暫的時期里,隨著硬件水平的提高,游戲開發(fā)技術(shù)層出不窮,經(jīng)典游戲比比皆是?,F(xiàn)在的游戲多指各種平臺上的電子游戲。電子游戲有單機(jī)版和網(wǎng)絡(luò)游戲,而Flash游戲是一種新興的游戲,
13、以游戲簡單、操作</p><p> 通過策劃、需求分析確定游戲規(guī)則玩法、游戲界面、基本功能以及整個游戲的運(yùn)行流程;然后使用Flash CS6軟件制作文本、按鈕、圖形、影片剪輯等界面元素,通過排列、整合、美化等工作完成游戲界面的制作,并實現(xiàn)界面之間的轉(zhuǎn)換;用ActionScript 3.0語言和遞歸算法思想進(jìn)行編程工作實現(xiàn)對鍵盤上下左右控制,來實行對主角控制、自動生成迷宮、實現(xiàn)主人公走到出口碰撞等功能,以及對整個
14、游戲運(yùn)行的控制。最后,把界面和ActionScript代碼進(jìn)行整合,并經(jīng)過游戲運(yùn)行、測試、修正等工作,完成整個游戲的開發(fā),因為要做關(guān)于數(shù)據(jù)結(jié)構(gòu)的flash 小游戲,所以決定選擇在C++中運(yùn)用到棧和隊列的迷宮算法,所以決定制作迷宮小游戲,顧名思義,即是有很多讓人眼花繚亂路徑,并且要成功找出出口的一種小游戲。它能充分鍛煉游戲人眼力,從而通過操作主人公成功走出這個復(fù)雜的路徑中。,F(xiàn)lash游戲設(shè)計的意義就在于:</p><
15、p> 集合不同的藝術(shù)門類,把藝術(shù)與技術(shù)相結(jié)合。從而讓人可以在游戲中的到美的享受。</p><p> 給廣大的互聯(lián)網(wǎng)用戶提供了一個娛樂,休閑,放松身心的地方。</p><p> 讓設(shè)計師之與玩家之間產(chǎn)生交流,從而完善游戲。</p><p> 操作便捷,文件攜帶方便,無需安裝,符合了現(xiàn)在很多快餐式的生活要求便于大眾隨時的下載,游戲。</p>
16、<p> 有豐富的圖像,畫面不受軟件的限制。富有創(chuàng)意,風(fēng)格多變。是其他電子游戲沒有的。</p><p><b> 1 系統(tǒng)概述 </b></p><p> Flash的前身是Future Wave公司的Future Splash,是世界上第一個商用的二維矢量動畫軟件,用于設(shè)計和編輯Flash文檔。1996年11月,美國Macromedia公司收購了F
17、uture Wave,并將其改名為Flash。在出到Flash 8以后,Macromedia又被Adobe公司收購。最新版本為:Adobe Flash CS6。這次所采用的開發(fā)環(huán)境就是flash cs6,它還提供其他的一些增強(qiáng)功能。比如,支持位圖、聲音、漸變色、Alpha、透明等。擁有了這些功能,完全可以建立一個全部由Flash制作的站點(diǎn),不僅如此,flash現(xiàn)在被大量運(yùn)用于游戲的開發(fā),所以現(xiàn)在被廣泛應(yīng)用于游戲,因為游戲開發(fā)的難度更大,
18、不只是圖形元素和幀的設(shè)計,更包含了控制和算法的代碼,對學(xué)習(xí)來說,更有鍛煉能力的價值,我所選擇的就是由flash cs6 制作迷宮小游戲,通過對幀的各種理解和制作,還要結(jié)合actionscript語言結(jié)合開發(fā),ActionScript 3.0 是一種強(qiáng)大的面向?qū)ο缶幊陶Z言,它標(biāo)志著 Flash Player Runtime 演化過程中的一個重要階段。設(shè)計 Acti</p><p><b> 2 需求分
19、析</b></p><p><b> 2.1 系統(tǒng)需求</b></p><p><b> 2.1.1問題需求</b></p><p> 棧:特點(diǎn)就是一個先進(jìn)后出的結(jié)構(gòu)。隊列:特點(diǎn)就是一個先進(jìn)先出的結(jié)構(gòu)。//一般只要你滿足這個特點(diǎn)就可以稱之為?;蜿犃小5膽?yīng)用:非常廣泛,在CPU內(nèi)部就有提供棧這個機(jī)制
20、。主要用途:函數(shù)調(diào)用和返回,數(shù)字轉(zhuǎn)字符,表達(dá)式求值,走迷宮等等。在CPU內(nèi)部棧主要是用來進(jìn)行子程序調(diào)用和返回,中斷時數(shù)據(jù)保存和返回。在編程語言中:主要用來進(jìn)行函數(shù)的調(diào)用和返回??梢哉f在計算機(jī)中,只要數(shù)據(jù)的保存滿足先進(jìn)后出的原理,都優(yōu)先考慮使用棧,所以棧是計算機(jī)中不可缺的機(jī)制。隊列的應(yīng)用:隊列主要用在和時間有關(guān)的地方,特別是操作系統(tǒng)中,隊列是實現(xiàn)多任務(wù)的重要機(jī)制。windows中的消息機(jī)制就是通過隊列來實現(xiàn)的。進(jìn)程調(diào)度也是使用隊列來實現(xiàn)
21、,所以隊列也是一個重要的機(jī)制。只要滿足數(shù)據(jù)的先進(jìn)先出原理就可以使用隊列。</p><p> 2.1.2 情感需求</p><p><b> 1.消遣休閑 </b></p><p> 這種價值主要針對上班族(實際上,學(xué)生們也同樣享受著這種待遇),工作之余,找一個世外空間,在這個空間里,可以隨心所欲地游蕩在虛擬世界,也沒有人管束。游戲過程中,
22、享受刺激感,比起迷茫地閑逛、觀看枯燥無味的電視節(jié)目,更讓人興奮。</p><p><b> 2.成就</b></p><p> 當(dāng)玩家慢慢突破難關(guān),享受到勝利的喜悅,在虛擬的世界中滿足了自己的虛榮感。</p><p><b> 3.幻想</b></p><p> 虛擬的游戲世界中,游戲設(shè)計者
23、可以充分的發(fā)揮想象,用戶也可以體驗到現(xiàn)實中沒有的內(nèi)容。例如想像自己是主角,或把敵人變成可愛的綿羊,贏得了比賽,這些都是體驗的形式。</p><p><b> 4.收獲快樂</b></p><p> 幽默詼諧的人物形象或人物設(shè)定最容易讓大眾接受,讓用戶能笑起來,玩的時候很開心,生活總是樂觀的,少一些抑郁,多一些歡樂,社會更和諧。</p><p&g
24、t;<b> 5.滿足審美需求</b></p><p> 藝術(shù)是人類以感情和想象作為特性的把握世界的一種特殊方式,即通過審美創(chuàng)造活動再現(xiàn)現(xiàn)實和表現(xiàn)情感理想,在想象中實現(xiàn)審美主體和審美客體的互相對象化。具體說,他們是人們現(xiàn)實生活和精神世界的形象反映,也是藝術(shù)家知覺、情感、理想、意念綜合心理活動的有機(jī)產(chǎn)物。作為第九藝術(shù),同樣具備滿足人類審美需求的功能</p><p>
25、 2.1.2 材料需求</p><p> 迷宮游戲?qū)⑻峁└魇礁鳂硬煌穆窂阶叻?,讓玩家能在更好更豐富多彩的環(huán)境下去找出出口。所以,迷宮小游戲的設(shè)計不應(yīng)該只是單一的面或的圖。為了吸引更多玩家,圖片應(yīng)該豐富化。</p><p> 設(shè)計中要解決的問題:</p><p> (1) 素材要充足(圖片素材、聲音素材等)</p><p> (2)
26、 游戲內(nèi)容要充足(要有開始界面、還有游戲說明、游戲完成的界面等)</p><p> (3) 游戲整個框架要美觀簡潔,更能吸引玩家,讓玩家有想玩游戲的想法或欲望。</p><p> (4) 充分利用選擇工具、鉛筆工具、橡皮擦工具勾勒自己所需的圖。</p><p><b> 2.2 開發(fā)環(huán)境 </b></p><p>
27、 軟件:Adobe Flash CS6 系統(tǒng):windows 7</p><p><b> 3 詳細(xì)設(shè)計</b></p><p><b> 3.1準(zhǔn)備階段:</b></p><p> 對迷宮游戲先有一定的理解,確定游戲的內(nèi)容。上網(wǎng)查找自己所需要的圖片跟聲音素材。構(gòu)思好自己要設(shè)計的填色游戲的主框架。</p
28、><p> 3.2設(shè)計制作階段:</p><p> 全部都準(zhǔn)備充足后。利用flash cs6軟件開始制作迷宮游戲。先設(shè)計迷宮游戲的第一個頁面(用豐富的色彩當(dāng)背景,添加些文本吸引玩家點(diǎn)擊進(jìn)入游戲)。接著是主框架和其他部分。在設(shè)計游戲中相應(yīng)的導(dǎo)入所查找好的資料素材,充分利用選擇工具、鉛筆工具和橡皮擦工具繪制自己所要的場景圖片。并對相應(yīng)的動作編寫代碼。</p><p>&
29、lt;b> 3.3修正并定型 </b></p><p> 迷宮游戲設(shè)計完成后,不斷的修正。讓游戲的進(jìn)入界面更完善、迷宮內(nèi)容更加豐富化。最終迷宮游戲的設(shè)計定型。</p><p><b> 3.4設(shè)計界面</b></p><p> 3.4.1游戲的主要界面概述</p><p> 游戲的主要界面分別
30、為:進(jìn)入界面、玩迷宮游戲的界面、結(jié)束界面。</p><p> 3.4.2游戲的進(jìn)入界面概述</p><p> 進(jìn)入第一界面的設(shè)計:用層次豐富的色彩當(dāng)背景,用一個敬禮的小兵作為按鈕點(diǎn)擊進(jìn)入,這樣對玩家更具吸引力。用文本工具填寫文字,文字起引導(dǎo)作用,引導(dǎo)玩家點(diǎn)擊進(jìn)入游戲的第二界面。</p><p> 3.4.3游戲界面概述</p><p>
31、 進(jìn)入第二界面的設(shè)計:主要通絢麗的背景圖片和動聽的音樂讓整個界面更豐富生動,同樣也起到更吸引玩家的作用。游戲通過操縱鍵盤上面的上下左右來完成對小兵的移動,到達(dá)已電廠為圖片的出口,進(jìn)入到有趣生動的第三界面。</p><p> 3.4.4結(jié)束界面概述</p><p> 進(jìn)入結(jié)束界面的設(shè)計:主要通絢麗的背景圖片和動聽的音樂讓整個界面更豐富生動,同樣也起到更吸引玩家的作用。有趣生動的文字和敬
32、禮的小兵讓游戲沒有那么僵硬,按下小兵完成重玩按鈕。</p><p> 3.5游戲過程框架制圖</p><p> 3.6游戲界面的過程和設(shè)計方法</p><p> 3.6.1進(jìn)入界面的制作和過程</p><p> 1. 首先從網(wǎng)上準(zhǔn)備下載的資源,新建一個按鈕,名稱為開始,點(diǎn)擊確認(rèn),點(diǎn)擊文件菜單中導(dǎo)入,選擇導(dǎo)入到舞臺,選擇小兵敬禮圖片,再
33、新建影片剪輯 ,命名為word,在編輯畫面上選擇文本工具,寫上小迷宮游戲,點(diǎn)擊小兵開始,再新建影片剪輯,命名為load,寫上loading.新建一個場景,命名為loading,在屬性面板上設(shè)置幀的熟慮為15pfs,從庫中拖出圖片作為背景,圖形如下</p><p><b> 時間軸的情況如下:</b></p><p> 2.把圖層1改為背景,在第一幀中插入關(guān)鍵幀,把
34、tank 按鈕拖到場景中央,再新建一個圖層,雙擊圖層2,名稱改為red&load,在第一幀上插入關(guān)鍵幀,從庫中把word和load拖到loading中,調(diào)整好位置,再新建一個圖層3,雙擊圖層3,把名稱改為as,在第一幀上選擇屬性,在幀的名稱上寫上begin,在圖層as上編寫腳本語言,在第一幀上選擇動作,寫入以下代碼 </p><p><b> stop();</b></p&g
35、t;<p> fscommand("fullscreen","false"); //點(diǎn)擊某一個按鈕而退出全屏</p><p> loading.onEnterFrame=function(){</p><p> solider._visible=false;</p><p> byteloaded=Ma
36、th.floor(getBytesLoaded()/1024);//取整數(shù)部分,去掉小數(shù)</p><p> bytetotals=Math.floor(getBytesTotal()/1024);</p><p> precent=Math.floor(byteloaded/bytetotals*100)//getBytesLoaded()是指當(dāng)前取得的字節(jié)數(shù),getBytesTota
37、l()是指預(yù)載入影片或內(nèi)容的字節(jié)數(shù)。這兩個屬性用于顯示加載影片或內(nèi)容的進(jìn)度;</p><p> if(precent>=100){</p><p> solider._visible=true;</p><p> loadbar._visible=false;</p><p> red.gotoAndStop(5);</p
38、><p><b> }</b></p><p> loading.gotoAndStop(int(precent/10));</p><p><b> }</b></p><p> 3.點(diǎn)擊開始按鈕,選擇動作,在腳本語言上面輸入以下代碼:</p><p> on(rel
39、ease){</p><p> gotoAndPlay("場景1");//跳入到場景1</p><p><b> }</b></p><p> 3.6.2游戲界面的制作和過程</p><p> 事先準(zhǔn)備好所需要的影片剪輯和按鈕,這里不一一概述了,把圖層1名稱改為重玩,在第一幀上插入關(guān)鍵幀,從庫
40、中拖入兩張圖片,在弟15幀上插入空白關(guān)鍵幀,起到延長時間的效果,如下圖所示,</p><p> 2.再新建一個圖層10,在第1幀中插入關(guān)鍵幀,在第4幀中再插入關(guān)鍵幀,慢慢拖動兩張圖片,再在弟14幀上再插入關(guān)鍵幀,把圖片移動到兩邊,展示游戲界面的圖片。</p><p> 3.新建一個圖層11,在第一幀上插入關(guān)鍵幀,移動圖片,在第3幀中插入幀,在第4幀中插入關(guān)鍵幀,從庫中拖入聲音元件,在第
41、14幀中插入關(guān)鍵幀,拖入聲音到14幀,在15幀上插入空白關(guān)鍵幀</p><p> 4.再新建一個圖層,命名為飛機(jī),在14幀中插入關(guān)鍵幀,從庫中把電廠圖片拖到場景1上,在屬性面板上把電廠實例名稱改為plane.</p><p> 5.再新建一個圖層,把圖層名稱改為坦克,在第14幀中插入一個關(guān)鍵幀,從庫中把事先準(zhǔn)備好的影片剪輯小兵,在屬性面板上把名稱改為tank,拖動到場景1中。</
42、p><p> 6.新建了四個線段的影片剪輯,分別命名為w0,w1,w2,w3,用來自動生成迷宮,新建一個圖層,命名為腳本,在第一幀中插入空白關(guān)鍵幀,在屬性面板中把幀的屬性改為begin,在第3幀中選擇動作,在第3幀中輸入以下代碼:</p><p><b> s=18;</b></p><p><b> k=30;</b>
43、</p><p> MazeH = s;</p><p> MazeW = s; //迷宮的高度和寬度</p><p> TotalCells = MazeH*MazeW; //代表了迷宮所能容納的墻壁總數(shù)</p><p> Maze = new Array();</p><p> for (i=0; i&l
44、t;TotalCells; i++) {</p><p> Room = new Array();</p><p> Cell = new Array();</p><p> Cell.push(true, true, true, true);</p><p> Cell.push(int(i/MazeW));</p>
45、<p> Cell.push(i%MazeW);</p><p> //使用數(shù)組對象的Push方法將參數(shù)值加到數(shù)組中,其中i/MazeW為I和Mazew相除且取//整數(shù)部分,I%MazeW取兩者相除的余數(shù)部分 </p><p> Room.push(Cell);</p><p> Maze.push(Room);</p><p&
46、gt;<b> }</b></p><p> while (true) {</p><p> roomNum = random(Maze.length);</p><p> cellNum = random(Maze[roomNum].length);</p><p> wallNum = random(4);
47、</p><p> //分別取三個隨機(jī)數(shù),roomNum取數(shù)組Maze長度內(nèi)的隨機(jī)數(shù),用來表示迷宮內(nèi)的房間號,cellNum取數(shù)組Room長度內(nèi)的隨機(jī)數(shù),因為roomNum是數(shù)組Maze的最大長度,所以數(shù)組Maze的第roomNum號元素就是其最后一個元素,也即數(shù)組Room。最后一個變量取4以內(nèi)的隨機(jī)數(shù),代表房間內(nèi)不同的四堵墻</p><p> if (Maze[roomNum][ce
48、llNum][wallNum] == false) {</p><p><b> continue;</b></p><p> //如果迷宮中的第roomNum個房間里的第cellNum堵墻的值為faulse,則繼續(xù)進(jìn)行判斷,直到值為true</p><p> }//判斷Maze數(shù)組中編號為[roomNum][cellNum][wallN
49、um]的元素值是否為假,如果為</p><p> //假,進(jìn)行下一步循環(huán)</p><p> x = Maze[roomNum][cellNum][4];</p><p> y = Maze[roomNum][cellNum][5];</p><p> //分別設(shè)置x,y為第roomNum號房間的第cellNum堵墻的第4個和第5個元素
50、</p><p> if (wallNum == 0 and x == mazeW-1) {</p><p><b> continue;</b></p><p> } else if (wallNum == 1 and y == mazeH-1) {</p><p><b> continue;<
51、;/b></p><p> } else if (wallNum == 2 and x == 0) {</p><p><b> continue;</b></p><p> } else if (wallNum == 3 and y == 0) {</p><p><b> continue;&
52、lt;/b></p><p><b> }</b></p><p> oppsCell = new Array();</p><p> if (wallNum == 0) {</p><p> oppsCell = fun_findcell(x+1, y);</p><p> }
53、else if (wallNum == 1) {</p><p> oppsCell = fun_findcell(x, y+1);</p><p> } else if (wallNum == 2) {</p><p> oppsCell = fun_findcell(x-1, y);</p><p> } else if (wal
54、lNum == 3) {</p><p> oppsCell = fun_findcell(x, y-1);</p><p> }// 根據(jù)墻壁編號的不同,分別調(diào)用參數(shù)不同的函數(shù),fun_findcell為自定義函數(shù)</p><p> if(oppsCell!=null){</p><p> if (oppsCell[0] == ro
55、omNum) {</p><p><b> continue;</b></p><p><b> }</b></p><p> if (wallNum == 0) {</p><p> oppsWall = 2;</p><p> } else if (wallNu
56、m == 1) {</p><p> oppsWall = 3;</p><p> } else if (wallNum == 2) {</p><p> oppsWall = 0;</p><p> } else if (wallNum == 3) {</p><p> oppsWall = 1;</
57、p><p> }// 打開單元格中的一堵墻</p><p> Maze[roomNum][cellNum][wallNum] = false;</p><p> Maze[oppsCell[0]][oppsCell[1]][oppsWall] = false;</p><p> Maze[roomNum] = Maze[roomNum].
58、concat(Maze[oppsCell[0]]);</p><p> Maze.splice(oppsCell[0], 1);</p><p> }//用四個墻壁將空間封閉</p><p> if (Maze.length == 1) {</p><p><b> break;</b></p>&
59、lt;p><b> }</b></p><p><b> }</b></p><p> function fun_findcell (a, b) {</p><p> reCell = new Array();</p><p> for (i=0; i<Maze.length;
60、 i++) {</p><p> for (j=0; j<Maze[i].length; j++) {</p><p> if (Maze[i][j][4] == a && Maze[i][j][5] == b) {</p><p> reCell.push(i, j);</p><p> return reCe
61、ll;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> }//自定義函數(shù)fun_findcell,用來尋找沒有封閉的單元格</p><p> 在第14幀上添加如
62、下腳本:</p><p> Maze=Maze[0];</p><p><b> cellW=k;</b></p><p> wn=0;//定義三個變量</p><p> for (i=0; i<Maze.length; i++) {</p><p> cellX = Maze[i
63、][4];</p><p> cellY = Maze[i][5];</p><p> for (j=0; j<4; j++) {</p><p> if (Maze[i][j] == true) {</p><p> _root.attachMovie("w"+j, "ww"+wn, w
64、n);</p><p> eval("ww"+wn)._x = 105+cellW*cellX;</p><p> eval("ww"+wn)._y =20+cellW*cellY;</p><p><b> wn++;</b></p><p><b> }<
65、;/b></p><p><b> }</b></p><p> }//控制游戲主角在迷宮中運(yùn)動,并對路線進(jìn)行判斷</p><p> tank._x=105;</p><p> tank._y=20;</p><p> //設(shè)置游戲主角的坐標(biāo)</p><p>
66、; tank.gotoAndStop(1);</p><p> //主角處于游戲進(jìn)行狀態(tài)</p><p> plane._x=105+(MazeW-1)*cellW;</p><p> plane._y=20+(MazeH-1)*cellW;</p><p> //設(shè)置迷宮出口坐標(biāo)</p><p> tan
67、kX = 0;</p><p> tankY = 0;</p><p> 在第15幀上添加腳本 stop();</p><p> 7.給主角小兵tank 添加如下腳本:</p><p> onClipEvent (keyDown) {</p><p><b> k3=30;</b><
68、;/p><p> kd = Key.getCode();</p><p> if (!this.hitTest(_root.plane)) {</p><p> cell = new Array();</p><p> cell = fun_cellwall(_root.tankX, _root.tankY);</p>&l
69、t;p> if (kd == Key.RIGHT) {</p><p> if (cell[0] == false) {</p><p> _root.tankX++;</p><p> this._x += k3;</p><p><b> }</b></p><p> got
70、oAndStop(1);</p><p> } else if (kd == Key.DOWN) {</p><p> if (cell[1] == false) {</p><p> _root.tankY++;</p><p> this._Y += k3;</p><p><b> }<
71、/b></p><p> gotoAndStop(2);</p><p> } else if (kd == Key.LEFT) {</p><p> if (cell[2] == false) {</p><p> _root.tankX--;</p><p> this._x -= k3;&l
72、t;/p><p><b> }</b></p><p> gotoAndStop(3);</p><p> } else if (kd == Key.UP) {</p><p> if (cell[3] == false) {</p><p> _root.tankY--;</p>
73、;<p> this._Y -= k3;</p><p><b> }</b></p><p> gotoAndStop(4);</p><p><b> }</b></p><p> if (this.hitTest(_root.plane)) {</p>&
74、lt;p> _root.gotoAndPlay("end");</p><p> _root.plane._visible = 0;</p><p><b> }</b></p><p><b> }</b></p><p> function fun_cellw
75、all(a, b) {</p><p> cw = new Array();</p><p> for (i=0; i<_root.Maze.length; i++) {</p><p> if (_root.Maze[i][4] == a && _root.Maze[i][5] == b) {</p><p>
76、 cw = _root.Maze[i];</p><p> return cw;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</
77、b></p><p> 8.完成的界面和時間軸如下圖:</p><p> 3.6.3結(jié)束界面的制作和過程</p><p> 1.新建一個場景,為場景4,在屬性面板上面設(shè)置顏色為黑色,把圖層1改為soubdstop,在98幀上插入一個空白關(guān)鍵幀。</p><p> 再新建一個圖層1,點(diǎn)擊第一幀,在屬性面板上把幀名稱改為end,插入
78、關(guān)鍵幀,添加文本框,在后面的隔幾幀中往文本框中添加文字。</p><p> 新建圖層sound,把聲音控件拖到場景4中,在92幀中插入幀</p><p> 4.新建圖層as ,在幀1,46和87中添加腳本for(i=0;i<wn;i++){</p><p> removeMovieClip("ww"+i);</p>&l
79、t;p> } 在幀92中添加腳本stop();</p><p> 5.結(jié)束界面和時間軸完成如下圖所示</p><p><b> 3.7測試階段</b></p><p><b> 測試方法:</b></p><p> 不停調(diào)試,查看輸出錯誤,根據(jù)提示改正錯誤。</p>
80、<p> 在電腦上用播放器運(yùn)行。打開游戲,運(yùn)行程序進(jìn)行測試。</p><p><b> 測試結(jié)果:</b></p><p> 實現(xiàn)了界面優(yōu)化,實現(xiàn)了開始游戲,游戲聲音,自動生成路徑和點(diǎn)擊重玩等功能;</p><p> 實現(xiàn)了迷宮游戲的基本功能。</p><p><b> 3.8游戲運(yùn)行界面&
81、lt;/b></p><p> 4所遇到的問題和分析解決</p><p> 4.1基礎(chǔ)概念的問題 </p><p> 1.因為沒有接觸過flash,不了解基本的概念,還有相關(guān)幀的使用,通過查閱資料知道了基礎(chǔ)幀,關(guān)鍵幀,關(guān)鍵空白幀的區(qū)別和作用。</p><p> 2.圖形處理的問題,一些圖片本來應(yīng)該自己畫出來,畫功太差,后面直接
82、從網(wǎng)上下載相應(yīng)的資源和圖片,并且導(dǎo)入圖片和聲音。</p><p> 3.還遇到一些相對基礎(chǔ)的問題,例如如何設(shè)置圖片的大小,相應(yīng)改對應(yīng)的名稱,在實現(xiàn)小兵和出口的碰撞時,應(yīng)該設(shè)置出口相應(yīng)的實例名稱,結(jié)果設(shè)置實例 名稱時和代碼上的名稱不一致,結(jié)果耗費(fèi)了大量的時間在調(diào)試代碼上面,這也是很嚴(yán)重的粗心問題,還有對flsh cs6基本概念的不了解和知識掌控的不熟悉度。</p><p> 在設(shè)置元件的
83、時候,不了解影片剪輯,按鈕,圖形三種元件的概念知識,還有對屬性的掌握,不知實例名稱的作用,還有在設(shè)置腳本的時候?qū)嵗Q的作用。</p><p> 5.在進(jìn)行FLSH游戲設(shè)計時最主要的問題還有腳本語言的問題,不知道應(yīng)該怎么自動生成迷宮,腳本語言應(yīng)該在哪里編寫,腳本的語言格式是怎么樣的,還有主人公走到出口的時候碰撞的腳本應(yīng)該怎么寫,編譯出現(xiàn)錯誤的時候應(yīng)該如何修改,后面網(wǎng)上百度大神代碼作為參考,再到圖書館查閱資料,經(jīng)
84、過各種調(diào)試解決問題。</p><p> 6. 如何控制主角的移動經(jīng)過查閱資料已經(jīng)知道, 但是如何做墻壁限制球的移動范圍,通過查詢資料和網(wǎng)上看視頻,知道控制坐標(biāo)比如你左邊的邊界是 X == 0那你就檢測你的球 當(dāng)檢測到球的坐標(biāo)小于0時 就說明碰到墻壁了</p><p> 4.2設(shè)計界面的問題 </p><p> 1. 如何能夠起到吸引玩家的作用,添加圖片如何能
85、夠讓整體美觀,添加聲音讓游戲更加生動。</p><p> 2.拖動圖片到場景中需要合適的大小作為背景,如何設(shè)置快捷鍵,如何把圖片轉(zhuǎn)化為位圖,如何在庫中設(shè)置文件夾,讓庫中整潔一些。</p><p> 5.系統(tǒng)特色和關(guān)鍵技術(shù) </p><p> 1、Flash游戲界面炫酷</p><p> flash游戲雖然是在線游戲或者小游戲下載和安
86、裝都很簡單但是其通過Adobe公司專業(yè)的動漫制作軟件制作出來的效果絕對可以和客戶端游戲媲美。憑借Adobe公司的技術(shù)支持加上Flash Player插件的支持其視覺效果完全可以用炫酷來形容。這也是為什么可以說Flash小游戲不小,并且能夠獲得大部分年輕人喜愛的原因。</p><p> 2、Flash游戲小易于傳播</p><p> 一般的Flash游戲都很小,大小只有十幾兆最
87、多幾十兆左右。這樣體積大小的游戲很容易在互聯(lián)網(wǎng)上傳播。因為Flash游戲下載不需要太多時間,并且很多Flash游戲還可以在線玩耍。玩起來很方便,加上提供Flash游戲的平臺越來越多其傳播速度大大加快。Flash游戲的這個優(yōu)點(diǎn)為其發(fā)展提供了重要支持。</p><p> 3、Flash游戲免費(fèi)</p><p> 與其他大型客戶端游戲相比Flash游戲基本是免費(fèi)的,而客戶端游戲少則幾百動輒上
88、千的游戲投入也讓不少玩家心生厭惡。免費(fèi)的Flash游戲讓玩家體驗到了免費(fèi)的娛樂,而不是那種不投入錢就不能很好的玩游戲的感受。免費(fèi)讓Flash游戲能夠獲得很好的玩家基礎(chǔ),這也是為什么Flash游戲能發(fā)展如此之好的另一重要原因。</p><p> 4、Flash游戲不易上癮</p><p> 因為Flash游戲結(jié)構(gòu)簡單對于玩家來說很容易就能玩耍游戲,且不像大型游戲那樣內(nèi)容會一直更新下去讓人
89、容易上癮。Flash游戲操作和內(nèi)容都很簡單其突出特點(diǎn)是興趣點(diǎn)而不是靠復(fù)雜的內(nèi)容吸引玩家。</p><p> 5、Flash游戲多以益智類為Flash 游戲還有一大優(yōu)點(diǎn)——啟發(fā)益智,這是Flash游戲能夠在小孩間傳播的重要意義。這一優(yōu)點(diǎn)特別適合小孩玩耍加上不容易上癮的優(yōu)點(diǎn)也能讓家長接受孩子們玩耍游戲。這也是Flash游戲能在小孩子間興起的原因。</p><p> 6.flash
90、 的編譯工具輸出是中文,能夠讓編譯人員更好理解錯誤,更能快速解決錯誤。</p><p> 7.這次要完成的是數(shù)據(jù)結(jié)構(gòu)課設(shè),一般選擇的是C或C++,或是java,可是我本次選擇的是flash來開發(fā),flash 的腳本語言比c簡單,但是功能更加完善,界面更加華麗。</p><p><b> 6.結(jié)論 </b></p><p> 數(shù)據(jù)結(jié)構(gòu)是計算
91、機(jī)科學(xué)與技術(shù)專業(yè)、計算機(jī)信息管理與應(yīng)用專業(yè),電子商務(wù)等專業(yè)的基礎(chǔ)課,是十分重要的核心課程。所有的計算機(jī)系統(tǒng)軟件和應(yīng)用軟件都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。因此,要想更好地運(yùn)用計算機(jī)來解決實際問題,僅掌握幾種計算機(jī)程序設(shè)計語言是難以應(yīng)付當(dāng)前眾多復(fù)雜的課題。要想有效地使用計算機(jī)、充分發(fā)揮計算機(jī)的性能,還必須學(xué)習(xí)和掌握好數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識。打好“數(shù)據(jù)結(jié)構(gòu)”這門課程的扎實基礎(chǔ),對于學(xué)習(xí)計算機(jī)專業(yè)的其他課程,如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、軟件工程、編譯原
92、理、人工智能、圖視學(xué)等都是十分有益的。</p><p> 《數(shù)據(jù)結(jié)構(gòu)》在計算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課.數(shù)據(jù)結(jié)構(gòu)的研究不僅涉及到計算機(jī)的硬件(特別是編碼理論、存儲裝置和存取方法等)的研究范圍,而且和計算機(jī)軟件的研究有著更密切的關(guān)系,無論是編譯程序還是操作系統(tǒng),都涉及到數(shù)據(jù)元素在存儲器中的分配問題.在研究信息檢索時也必須考慮如何組織數(shù)據(jù),以便查找和存取數(shù)據(jù)元素更為方面.因此,可以認(rèn)為數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計算
93、機(jī)硬件和計算機(jī)軟件三者之間的一門核心課程.在計算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計(特別是非數(shù)值計算的程序設(shè)計)的基礎(chǔ),而且是設(shè)計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)。迷宮游戲是一種經(jīng)久不衰的游戲,其玩法也很簡單,就是從起點(diǎn)開始找到出口。傳統(tǒng)的迷宮游戲只能通過復(fù)雜的地圖,多種出路組合來吸引玩家的興趣。而本例中的這個迷宮游戲則不同,因為它的地圖是隨機(jī)生成的,這樣就大大地增強(qiáng)了游戲的可玩性。這也是該游
94、戲設(shè)計最有吸引力的地方。在整個迷宮游戲的制作過程中讓我更加懂得了如何去運(yùn)用flash面板中的那些工具以及某些代碼的書寫,而且讓我在設(shè)計方面得到了很大的提高,在這過程當(dāng)中也碰到了些困難。當(dāng)然,最后都得到及時</p><p> 這次課程設(shè)計在鑒于相關(guān)資料后是由我獨(dú)立完成的。通過這次課程設(shè)計,使我對flash這門生動有趣的學(xué)科有了更深刻的認(rèn)識,也更加了解了數(shù)據(jù)結(jié)構(gòu)中的迷宮算法,并且用flash完成了對數(shù)據(jù)結(jié)構(gòu)的迷宮游
95、戲,并對flash實際制作有了較大的提高。</p><p> 在我的指導(dǎo)老師的熱心幫助下,不斷的修改不斷的向老師指定的目標(biāo)靠近。一點(diǎn)點(diǎn)地進(jìn)步。在制作中遇到不少困難,自己查找大量資料,翻閱相關(guān)書籍幫助自己解決困難,缺點(diǎn)是沒有運(yùn)用到恨明顯的數(shù)據(jù)結(jié)構(gòu)知識,下次會努力改進(jìn)。 </p><p> 在這次的實踐中,我進(jìn)步了很多也明白了很多。我懂得了如何自己發(fā)現(xiàn)問題再自己去尋找資料解決問題。除了老師
96、對我的指導(dǎo)外憑借自己所學(xué)的知識去解決問題后的那種感覺也是令人難忘的。</p><p><b> 7.參考文獻(xiàn) </b></p><p> [1] 張乃孝,陳光,孫猛.算法設(shè)計與數(shù)據(jù)結(jié)構(gòu)[M].北京: 高等教育出版社,2012:85~96.</p><p> [2] 鄭伯鴻.actionscript 語法參考辭典[M].北京:中國鐵道出
97、版社,2003</p><p> [3] 劉小東.flash mx 中文版特效與游戲制作[M].北京:中國水利水電出版社,2003</p><p> [4] 石民勇.flash游戲設(shè)計與制作教程[M].北京:中國傳媒大學(xué)出版</p><p><b> 2007-1-1</b></p><p> [5] 李永
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 迷宮游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---迷宮
- 迷宮問題——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(迷宮問題)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-走迷宮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)迷宮問題課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計—迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計之迷宮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--迷宮
評論
0/150
提交評論