




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、新 鄉(xiāng) 學(xué) 院 畢 業(yè) 論 文論文題目貪吃蛇游戲的設(shè)計與實(shí)現(xiàn)院(系)名稱計算機(jī)與信息工程學(xué)院專業(yè)名稱計算機(jī)應(yīng)用技術(shù)班 級學(xué)生姓名學(xué) 號指導(dǎo)教師姓名2010年4月完成目錄內(nèi)容摘要:1關(guān)鍵詞:1abstract:1key words:11.游戲設(shè)計背景21.1游戲設(shè)計原理21.2游戲設(shè)計的運(yùn)行環(huán)境22.游戲設(shè)計相關(guān)知識介紹42.1 flash理論基礎(chǔ)知識要點(diǎn)42.2面向?qū)ο缶幊?2.3游戲制作中常用函數(shù)的屬性與方法53. 制作貪吃蛇游戲的整體規(guī)劃93.1貪吃蛇游戲的大致結(jié)構(gòu)圖93.2游戲設(shè)計整體構(gòu)思93.3透視游戲設(shè)計的核心重點(diǎn)算法93.4游戲設(shè)計核心重點(diǎn)函數(shù)控制94. 游戲詳細(xì)設(shè)計與核心技術(shù)10
2、4.1游戲的詳細(xì)設(shè)計104.2游戲的核心技術(shù)115.貪吃蛇游戲設(shè)計總結(jié)16參考文獻(xiàn)17致 謝17內(nèi)容摘要:貪吃蛇游戲,因?yàn)橹谱骱唵危壿嬓暂^強(qiáng),通常是學(xué)做游戲的必練的項(xiàng)目。貪食蛇游戲是目前各種流行手機(jī)中附帶的一款休閑小游戲。 flash是macromedia公司發(fā)布的制作高壓縮性網(wǎng)絡(luò)內(nèi)容的專業(yè)標(biāo)準(zhǔn)動畫軟件。隨便打開一個網(wǎng)頁,都能發(fā)現(xiàn)flash動畫的身影flash動畫作品已經(jīng)充斥整個網(wǎng)絡(luò)。毫無疑問flash已經(jīng)是制作網(wǎng)絡(luò)動畫的霸主。透過現(xiàn)象看本質(zhì):游戲的制作與flash的基礎(chǔ)原理密不可分,同時也與制作者的良好修養(yǎng)密不可分,進(jìn)而提高本身綜合素質(zhì)的的整體提高!關(guān)鍵詞:原理 運(yùn)行環(huán)境 理論基礎(chǔ) 詳細(xì)設(shè)
3、計 核心技術(shù)abstract: snake game, because the production of simple logic is strong, often the game will learn to practice projects. snake mobile game is all included with a popular casual games. macromedia flash is the production company released the contents of high-compression network of professional st
4、andards for animation software. casually open a web page, flash animation can be found in the figures of flash animation has flooded the entire network. there is no doubt that flash is already the dominant animation production network. look beyond the surface: the games basic principles of productio
5、n and flash are inseparable, but also with the producers of good training are inseparable, and thus improve their overall quality of the overall improvement!key words:principle operating environment theoretical basis detailed design core technology1.游戲設(shè)計背景隨著科技與經(jīng)濟(jì)的快速發(fā)達(dá),知識經(jīng)濟(jì)的快速增長,娛樂逐漸變成人與智能的交流。智能化的娛樂游
6、戲在網(wǎng)絡(luò)里愈來愈好,眾多的游戲不勝枚舉。比如益智類的小游戲、騰訊游戲、網(wǎng)頁游戲、格斗游戲、模擬游戲等,尤其是最近網(wǎng)絡(luò)上特別流行的flash制作的動畫越來越受關(guān)注?,F(xiàn)在就探究下用flash軟件制作貪吃蛇的游戲的設(shè)計原理。1.1游戲設(shè)計原理游戲貪吃蛇就是在flash軟件用影片剪輯設(shè)計出蛇,食物,同時隨機(jī)地給出食物。游戲者通過鍵盤操作控制貪吃蛇的移動,去吃食物,吃到食物后消失,然后再隨機(jī)給出食物同時蛇的身體增長。設(shè)計蛇的原理就是利用人眼的視覺效應(yīng)先將蛇頭向前移動一格,然后所有蛇身依次向前移動一格,最后再擦除蛇尾。這樣看來好像蛇在向前移動。食物的給出,首先需要產(chǎn)生一個隨機(jī)數(shù),然后通過這個隨機(jī)數(shù)計算得到
7、食物的縱橫坐標(biāo),在軟件運(yùn)行效果里顯示出來??刂粕叩囊苿臃较?,需要掃描鍵盤,然后根據(jù)鍵值改變蛇的移動方向。1.2游戲設(shè)計的運(yùn)行環(huán)境學(xué)習(xí)flash開發(fā),首先要建立首要的、基礎(chǔ)的正確認(rèn)知。在幾乎任何應(yīng)用程序開發(fā)中,都要接觸到三個相互關(guān)聯(lián)的方面:一個是開發(fā)環(huán)境,一個是運(yùn)行環(huán)境,再一個是開發(fā)語言。1.2.1軟件開發(fā)環(huán)境flash應(yīng)用程序開發(fā)也包含著三個方面,即使用flash cs3作為開發(fā)環(huán)境,以actionscript 2.0作為開發(fā)語言,以flash player 9為運(yùn)行環(huán)境進(jìn)行flash應(yīng)用程序開發(fā)和創(chuàng)作的完整知識體系。對于flash應(yīng)用程序開發(fā),在進(jìn)行flash開發(fā)時,安裝一個開發(fā)工具(也被稱
8、為開發(fā)環(huán)境、創(chuàng)作環(huán)境等。目前流行的flash開發(fā)工具基本都是adobe公司的產(chǎn)品,最著名的就是flash cs3和flex。1.2.2運(yùn)行環(huán)境windowsmacintosh處理器800 mhz intel pentium iii processor (or equivalent) and later600 mhz powerpc g3 and later操作系統(tǒng)windows 2000, windows xpmac os x 10.3, 10.4內(nèi)存256 mb ram (1 gb recommended to run more than one studio 8 product simul
9、taneously)256 mb ram (1 gb recommended to run more than one studio 8 product simultaneously) 顯示1024 x 768, 16-bit display (32-bit recommended)1024 x 768, thousands of colors display (millions of colors recommended) 磁盤空間710 mb available disk space360 mb available disk space1.2.3開發(fā)語言用戶要進(jìn)行flash開發(fā),要接觸是a
10、ctionscript(簡稱as),actionscript程序語言是用于flash開發(fā)的交互語言。actionscript有三種語言編寫風(fēng)格,這就是as1、as2和as3。as1遵循ecma-262第3版所制定的規(guī)范,as2遵循即將發(fā)布的ecma-262第4版規(guī)范,但它們的運(yùn)行環(huán)境只有一種,即flash player vm(adobe稱為avm1,avm是actionscript虛擬機(jī)的簡稱)。2.游戲設(shè)計相關(guān)知識介紹了解貪吃蛇的設(shè)計原理后,接下來就是對設(shè)計游戲的一些相關(guān)理論知識基礎(chǔ)及深入點(diǎn)的分層次介紹。2.1 flash理論基礎(chǔ)知識要點(diǎn)2.1.1 基礎(chǔ)概念(1)幀頻是動畫播放的速度,以每秒
11、播放的幀數(shù)為度量。幀頻太慢會使動畫看起來一頓一頓的,幀頻太快會使動畫的細(xì)節(jié)變得模糊。在 web 上,每秒 12 幀 (fps) 的幀頻通常會得到最佳的效果。quicktime 和avi 影片通常的幀頻就是 12 fps,但是標(biāo)準(zhǔn)的運(yùn)動圖像速率是 24 fps。(2)將元件看作是一種模板,使用同一個模板能夠創(chuàng)建多個實(shí)例。對元件的實(shí)例可以做各種變換操作,而這些操作不會對元件的各種屬性有所更改。也可以改變元件的屬性,例如顏色、形狀以及邊線的粗細(xì)等。當(dāng)對這些屬性加以修改后,舞臺上的所有實(shí)例的相應(yīng)屬性也發(fā)生了變化。(3)影片剪輯擁有自身的、獨(dú)立于主影片的時間軸播放的多幀時間軸,即可以將影片剪輯看作主影片
12、內(nèi)的小影片,它可以包含交互式控件、聲音、甚至其他影片剪輯實(shí)例,也可以將影片剪輯實(shí)例放置在按鈕元件的時間軸內(nèi),以創(chuàng)建動畫按鈕。(4)點(diǎn)語法:_root:表示絕對路徑,他指的是時間主軸。_parent:表示當(dāng)前時間軸,可以操控當(dāng)前時間軸上的對象等。變量作用域分為全局變量、本地變量和時間軸變量。2.1.2基本語法規(guī)則及簡單注意事項(xiàng)(1)變量、函數(shù)、對象、操作符、保留關(guān)鍵字等語言元素,有它自己的語法規(guī)則。actionscript擁有自己的句法和標(biāo)點(diǎn)符號使用規(guī)則,這些規(guī)則規(guī)定了一些字符和關(guān)鍵字的含義,以及它們的書寫順序。例如,在英語中句號結(jié)束一個句子,而在actionscript中則用分號結(jié)束一個語句。
13、(2)動畫設(shè)計過程中的簡單注意事項(xiàng)。確保處在動畫測試模式。確保不在多層中添加相互矛盾的幀動作。確保多個動作腳本元素沒有使用相同的名字。確保所有的目標(biāo)路徑以確保他們的正確無誤。2.2面向?qū)ο缶幊獭皩ο蟆?是指屬性和方法的集合,每個對象都具有其各自的名稱,并且都是特定類的實(shí)例。相比較而言,對象是一個形象具體的概念,如生活中所使用的筆、紙張、書籍、計算機(jī)等,都可稱之為對象。而對于每個對象來說,它們都具有一些區(qū)別于其他對象的個體屬性,如大小、形狀、顏色、使用方法等。在面向?qū)ο缶幊讨?,類定義對象的類別,描述對象的屬性(數(shù)據(jù))和行為(方法),類是一個較為抽象的概念,可以說是對象概念的提升,利用類可表現(xiàn)一組
14、相關(guān)對象中某些公共的屬性和行為。如果要使用類所定義的屬性和方法,必須先創(chuàng)建該類的實(shí)例,實(shí)例化對象其實(shí)就是指定某個特定的對象。 2.3游戲制作中常用函數(shù)的屬性與方法2.3.1 mouse類使用mouse類的方法可隱藏和顯示swf文件中的鼠標(biāo)指針(光標(biāo))。默認(rèn)情況下鼠標(biāo)指針是可見的,但是用戶可以將其隱藏并實(shí)現(xiàn)用影片剪輯創(chuàng)建的自定義指針。方法名用法說明mouse.showmouse.show()在swf文件中顯示鼠標(biāo)指針,指針在默認(rèn)情況下可見mouse.hidemouse.hide()隱藏swf文件中的鼠標(biāo)指針mouse.addlistenermouse.addlistener(newlistene
15、r)注冊一個對象以接收onmousedown、onmousemove和onmouseup通知。(參數(shù):newlistener為一個對象)mouse.removelistenermouse.removelistener(listener)刪除用addlistener方法注冊的對象。(參數(shù):listener為一個)movieclip.onmousedownmymovieclip.onmousedown當(dāng)按下鼠標(biāo)左鍵時調(diào)用movieclip.onmousemovemymovieclip.ommousemove當(dāng)鼠標(biāo)移動時調(diào)用movieclip.onmouseupmymovieclip.onmouse
16、up當(dāng)釋放鼠標(biāo)左鍵時調(diào)用2.3.2 key類key類是不通過構(gòu)造函數(shù)即可使用其方法和屬性的頂級類。使用key類的方法可生成用戶能夠通過標(biāo)準(zhǔn)鍵盤控制的界面,該類的屬性是常量,表示控制游戲時最經(jīng)常使用的鍵。方法名用法說明key.addlistenerkey.addlistener(newlistener)注冊一個對象,以接收onkeydown或onkeyup的通知key.getasciikey.getascii()返回按下或釋放的最后一個按鍵的ascii碼值key.getcodekey.getcode()返回最后一次按鍵的鍵控代碼值key.isdownkey.isdown(keycode)判斷是否
17、按下了參數(shù)keycode中指定的鍵。若按下則返回true;否則將返回false。key.istoggledkey.istoggled(keycode) 判斷capslock鍵或numlock鍵是否處于激活狀態(tài),若是則返回true。key.removelistenerkey.removelistener(ustener)刪除通過addlistener方法注冊的對象。若刪除成功,則返回true;否則返回false。key.onkeydownsomelistener.onkeydown當(dāng)按下某個按鍵時獲得通知key.onkeyupsomelistener.onkeyup當(dāng)釋放某個按鍵時獲得通知2.3
18、.3 button類 按鈕是flash影片中實(shí)現(xiàn)交互功能最常見的對象,swf文件中的所有按鈕元件都是對象的實(shí)例,用戶可在屬性檢查器中指定按鈕實(shí)例名稱,并通過動作腳本使用button法和屬性來操縱按鈕。名稱用法說明button.ondragoutmybutton.ondragout當(dāng)在按鈕上按下鼠標(biāo)按鍵,并且不釋放按鍵時,然后將鼠標(biāo)指針滑出按鈕時調(diào)用事件button.ondragovermybutton.ondragover當(dāng)用戶在按鈕上按下鼠標(biāo),然后在不釋放按鍵的情況下將鼠標(biāo)指針拖到按鈕之外后,再次將鼠標(biāo)指針移到按鈕上方時調(diào)用事件button.onkeydownmybutton.onkeydo
19、wn當(dāng)按下鍵盤上的某個按鍵時調(diào)用事件button.onkeyupmybutton.onkeyup當(dāng)釋放鍵盤上的某個按鍵時調(diào)用事件button.onpressmybutton.onpress當(dāng)在按鈕上按下鼠標(biāo)按鍵時調(diào)用事件button.onreleasemybutton.onrelease當(dāng)用戶釋放鼠標(biāo)左鍵時調(diào)用事件2.3.4 movieclip類movieclip中類的方法提供的功能與定位影片剪輯的動作所提供的功能相同,無需使用構(gòu)造函數(shù)方法即可調(diào)用movieclip類的方法,用戶只需在語法中按名稱引用影片剪輯實(shí)例即可。方法名與用法mymovieclip.attachmovie(idname,n
20、ewname,depth,initobject)從【庫】面板中取出一個元件,并將其附加到舞臺上由movieclip指定的影片中。mymovieclip.createmptymovieclip(instancename,depth)為現(xiàn)有的影片剪輯元件實(shí)例創(chuàng)建子級的空影片剪輯元件實(shí)例。新創(chuàng)建的空影片剪輯的注冊點(diǎn)為左上角。mymovieclip.createtextfield(instancename,depth,x,y,width,height)創(chuàng)建現(xiàn)有影片剪輯元件實(shí)例的子級空文本字段。mymovieclip.duplicatemovieclip(newname,depth,initobject
21、) 在影片播放時,復(fù)制指定影片剪輯元件的實(shí)例。mymovieclip.gotoandplay(frame) 跳轉(zhuǎn)到指定幀并開始播放影片。mymovieclip.gotoandstop(frame) 將播放頭跳轉(zhuǎn)到指定的幀,并停止影片的播放。mymovieclip.hittest(x,y,shapeflag) movieclip.hittest(target)判斷指定的實(shí)例是否與標(biāo)識的點(diǎn)擊區(qū)域或target重疊或交叉。mymovieclip.loadmovie(url,variables)在播放原始swf影片時,將外部swf或jpeg文件加載到flashplayer中的影片剪輯中。mymovie
22、clip.removemovieclip()刪除使用duplicatemovieclip動作或movieclip對duplicatemovieclip或attachmovie方法創(chuàng)建的影片剪輯元件實(shí)例。mymovieclip.unloadmovie() 刪除使用loadmovie或attachmovie方法加載的影片剪輯元件實(shí)例。movieclip類的事件處理函數(shù)的八種狀態(tài)名稱用法說明movieclip.ondatamymovieclip.ondata當(dāng)影片剪輯元件實(shí)例通過loadvariables或loadmovie方法調(diào)用接收數(shù)據(jù)時調(diào)用事件movieclip.onkeydownmymovi
23、eclip.onkeydown當(dāng)影片剪輯元件實(shí)例設(shè)置了輸入焦點(diǎn),并且有按鍵被按下時調(diào)用事件movieclip.onkeyupmymovieclip.onkeyup當(dāng)鍵盤按鍵被釋放時調(diào)用事件movieclip.onmousedownmymovieclip.onmousedown當(dāng)鼠標(biāo)左鍵按下時調(diào)用事件ovieclip.onmousemovemymovieclip.onmousemove當(dāng)移動鼠標(biāo)時調(diào)用事件movieclip.onmouseupmymovieclip.onmouseup當(dāng)釋放鼠標(biāo)時調(diào)用事件movieclip.onpressmymovieclip.onpress當(dāng)用戶在指定的影片剪輯
24、元件實(shí)例上按下鼠標(biāo)左鍵時調(diào)用事件movieclip.onreleasemymovieclip.onrelease當(dāng)用戶在指定的影片剪輯元件實(shí)例上釋放鼠標(biāo)左鍵時調(diào)用事件2.3.5 sound類與math類math類的方法和屬性可以訪問和處理數(shù)學(xué)常數(shù)和函數(shù)。math類的所有屬性和方法都是靜態(tài)的,并且必須使用語法math.method(parameter)或math.constant來調(diào)用。游戲中食物的隨機(jī)出現(xiàn)就是利用了math函數(shù)里的隨機(jī)函數(shù)。游戲里的背景音樂還有對聲音圖標(biāo)的控制也就是通過面向?qū)ο缶幊汤锏膕ound類函數(shù)來控制實(shí)現(xiàn)的。名稱用法說明sound.attachsoundmysound.a
25、ttachsound(idname)將指定標(biāo)識符名稱的聲音文件附加到sound對象中sound.startmysound.start(secondoffset,loop)指定聲音文件的播放sound.stopsound.stop(idname)當(dāng)指定了要停止播放的聲音時,將停止該聲音的播放;若未指定idname參數(shù),則停止當(dāng)前所有聲音的播放sound.setvolumemysound.setvolume(volume)設(shè)置sound對象的音量sound.loadsoundmysound.loadsound(url,isstreaming)將mp3聲音文件加載到sound對象的實(shí)例中2.3.6
26、array類通過array 類用戶可以訪問和操縱數(shù)組。數(shù)組是一個對象,其屬性由表示該屬性在數(shù)組中位置的數(shù)字來標(biāo)識。此數(shù)字稱為“索引”。所有數(shù)組都從零開始,這意味著數(shù)組中的第一個元素為 0,第二個元素為 1,依此類推。方法說明array.concat()連接參數(shù),并將其作為新數(shù)組返回array.join()將數(shù)組內(nèi)的所有元素聯(lián)接為一個字符串a(chǎn)rray.pop()刪除數(shù)組中最后一個元素,并返回該元素的值array.push()將一個或多個元素添加到數(shù)組的結(jié)尾,并返回該數(shù)組的新長度array.reverse()倒轉(zhuǎn)數(shù)組的方向array.shift()刪除數(shù)組中第一個元素,并返回該元素的值屬性說明ar
27、ray.length指定數(shù)組中元素數(shù)量的非從零開始的整數(shù)3. 制作貪吃蛇游戲的整體規(guī)劃貪吃蛇游戲設(shè)計整體結(jié)構(gòu)圖3.1貪吃蛇游戲的大致結(jié)構(gòu)圖游戲封面背景與主題游戲運(yùn)行界面核心代碼風(fēng)格與設(shè)計影片剪輯函數(shù)腳本3.2游戲設(shè)計整體構(gòu)思首先場景規(guī)劃,主要有兩個:一個是游戲封面,一個是游戲運(yùn)行界面。其次是電影影片剪輯,主要有蛇,食物,背景設(shè)計等,按鈕及文字屬性都有自己的實(shí)例名,便于腳本控制。最后對整體的進(jìn)行核心代碼編寫與控制。在軟件環(huán)境里運(yùn)行并調(diào)試,發(fā)現(xiàn)問題,分析并解決。最后發(fā)布游戲。3.3透視游戲設(shè)計的核心重點(diǎn)算法貪吃蛇的核心算法是如何實(shí)現(xiàn)移動和吃掉食物。沒有碰到食物的時候,貪吃蛇繼續(xù)移動,吃到食物的時候
28、,蛇身增長。咬住蛇身或蛇尾的時候,能夠暫停和開始。讓游戲繼續(xù)下去,食物隨機(jī)出現(xiàn),貪吃蛇繼續(xù)游動,并記錄游戲所得分?jǐn)?shù)。3.4游戲設(shè)計核心重點(diǎn)函數(shù)控制(1)新建一個數(shù)組來保存當(dāng)前的蛇的身體apiecelist = new array();(2)定義mouselistener對象來偵聽鼠標(biāo)的onmousedown點(diǎn)擊事件mouselistener = new object();mouselistener.onmousedown = function()函數(shù)體;(3)addpiece函數(shù)的作用是調(diào)用一段身體來增長蛇身。(4)movefood函數(shù)的作用是當(dāng)碰撞到食物的時候移動食物的位置。(5)start
29、game是腳本中重要的一部分。包括蛇的移動,碰撞和增加蛇身。4. 游戲詳細(xì)設(shè)計與核心技術(shù)4.1游戲的詳細(xì)設(shè)計實(shí)現(xiàn)游戲,主要的目的就是場景的布局及影片剪輯的在舞臺中的動畫實(shí)現(xiàn)。重點(diǎn)腳本代碼的實(shí)現(xiàn)后臺控制角色的運(yùn)動。主要的設(shè)計內(nèi)容就是如下步驟所示:4.1.1 游戲的設(shè)計的內(nèi)容 (1) 新建一個300*500的文檔;(2)設(shè)置文檔屬性中的幀頻為12(設(shè)置的更高游戲的速度更快);(3)新建兩個場景,分別命名為:sceneone、scenetwo;(4)分別對兩個場景設(shè)置背景效果,是風(fēng)格獨(dú)具一格,注重色彩的搭配;(5)設(shè)置主題文字效果,并為每個場景創(chuàng)建影片剪輯與按鈕;(6)為幀和按鈕添加事件,腳本代碼;
30、(7)測試影片,保存并發(fā)布。 4.1.2游戲影片剪輯的設(shè)計場景1(sceneone):(1)封面背景(2)設(shè)計封面主題文字與游戲規(guī)則(3)添加“游戲進(jìn)入“按鈕,并為該按鈕添加:on(release)gotoandplay(scenetwo,1);場景2(scenetwo):(1)游戲運(yùn)行背景,風(fēng)格是手機(jī)類狀的墨綠背景。(2)新建一層“屏幕”,在舞臺上畫個無邊框的矩形,漸變填充色,具體屬性如下:w:300 h:300 x:0 y:0 (3)選擇文本工具,在屬性面板中設(shè)置為動態(tài)文本。在矩形的正下方放置一個動態(tài)文本來顯示所得的分?jǐn)?shù)。文本中寫上start,設(shè)置字體和顏色。實(shí)例名稱為tscore。(4)
31、按下ctrl+f8,命名為piece,設(shè)置他的屬性為影片剪輯,點(diǎn)擊高級按鈕,選擇為actionscript導(dǎo)出,那個標(biāo)示符自動地被設(shè)置為piece。(5)選擇橢圓工具,在當(dāng)前的舞臺上畫一個正圓并設(shè)置如下屬性:w:15 h:15 x:0 y:0 (6)作為蛇的身體,不想用圓形,其他圖形也可,但是要保持它的高寬都是15。方法同上,制作一個標(biāo)示符為food的影片剪輯。(7)選擇橢圓工具在舞臺上畫一個圓形,并設(shè)置為如下屬性:w:15 h:15 x:0 y:0作為蛇所吃到的食物來增長身體。也可在不修改高寬的情況下進(jìn)行任意的修改。4.2游戲的核心技術(shù)4.2.1腳本函數(shù)(1)在場景1(sceneone)的第
32、一幀添加代碼:stop();(2)在場景2(scenetwo)的第一幀添加代碼:stop();var unit = 15; /正圓形大小var uwh = 20; /穿越或者是向下運(yùn)動的var canmove = false; /控制在鼠標(biāo)點(diǎn)擊之前讓蛇停止var dir = 2; /蛇開始時是向下運(yùn)動的, up=0, left=1, down=2, right=3var score = 0; /所得分?jǐn)?shù)apiecelist = new array(); /新建一個數(shù)組來保存當(dāng)前的蛇的身體/定義mouselistener對象來偵聽鼠標(biāo)的onmousedown點(diǎn)擊事件mouselistener =
33、 new object();mouselistener.onmousedown = function()if (!canmove) /防止在游戲的過程當(dāng)中重新開始游戲 canmove = true; /可以運(yùn)動startgame(); /調(diào)用stargame函數(shù);mouse.addlistener(mouselistener);/當(dāng)鼠標(biāo)被按下的時候后onmousedown事件函數(shù)被激活k = new object();k.onkeydown = function()var k = key.getcode(); /獲得按下的鍵的 ascii碼if (k = key.up & dir != 2 &
34、 canmove) /如果按下了上方向鍵,并且當(dāng)前沒有向下運(yùn)動(防止撞倒自己),就可以移動 dir = 0; /設(shè)置方向?yàn)橄蛏蟘anmove = false; /防止在下一幀之前改變方向而導(dǎo)致的一些bugelse if (k = key.left & dir != 3 & canmove)dir = 1;canmove = false;else if (k = key.down & dir != 0 & canmove)dir = 2;canmove = false;else if (k = key.right & dir != 1 & canmove)dir = 3;canmove = fa
35、lse;key.addlistener(k);/addpiece函數(shù)的作用是調(diào)用一段身體來增長蛇身function addpiece()var p = this.attachmovie(piece, piece + apiecelist.length, apiecelist.length); /加載一段身體到舞臺中p._x = apiecelistapiecelist.length - 1._x; p._y = apiecelistapiecelist.length - 1._y;/ 設(shè)置他的x、y的坐標(biāo)為前一個的位置apiecelist.push(p); /加入到數(shù)組中/movefood函數(shù)
36、的作用是當(dāng)碰撞到食物的時候移動食物的位置function movefood()var moveit = true;while (moveit) /在它碰到食物后移動食物food._x = math.floor(math.random() * uwh) * unit; food._y = math.floor(math.random() * uwh) * unit; /為食物選擇一個隨機(jī)的位置 moveit = false;for (var i = 0; i = 0; i-) /刪除蛇身apiecelisti.removemovieclip();apiecelist.pop();score =
37、0; /設(shè)置分?jǐn)?shù)為0var p = this.attachmovie(piece, piece + apiecelist.length, apiecelist.length); /加載蛇身的第一段apiecelist.push(p); /添加到數(shù)組中p._x = 10 * unit; p._y = 10 * unit; /設(shè)置蛇身的位置var food = this.attachmovie(food, food, -1); /加載食物到舞臺movefood(); /移動食物到隨機(jī)的位置var startinglength = 3; /初始化蛇身的長度為3for (var i = 1; i 0;
38、 i-) /每個蛇身都以移動到它上一個的位置)apiecelisti._x = apiecelisti - 1._x;apiecelisti._y = apiecelisti - 1._y;if (dir = 0) /如果向上移動 apiecelist0._y -= unit; else if (dir = 1) /如果向左移動 apiecelist0._x -= unit; else if (dir = 2) apiecelist0._y += unit; else if (dir = 3) apiecelist0._x += unit; if (apiecelist0._y / unit
39、= 20)/如果蛇身超過最低的區(qū)域則讓它出現(xiàn)在最上邊 apiecelist0._y = 0; else if (apiecelist0._y / unit = -1) apiecelist0._y = 19 * unit; else if (apiecelist0._x / unit = -1) apiecelist0._x = 19 * unit; else if (apiecelist0._x / unit = 20) apiecelist0._x = 0; if (apiecelist0._x = food._x & apiecelist0._y = food._y) /如果碰到食物就移動食物到新的位置,修改分?jǐn)?shù),增加身體score += 10 * apiecelist.length / 2;movefood();addpiece();for (var i = 1; i apiecelist.length; i+) /如果第一部分的身體碰撞到了身體的任何部分就結(jié)束游戲if (apiecelist0._x = apiecelisti._x & apiecelist0._y = apiecelisti._y)gameover();4.2.2游戲的運(yùn)行游戲設(shè)計已經(jīng)做好結(jié)束的收
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西體育職業(yè)學(xué)院《C語言》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴陽康養(yǎng)職業(yè)大學(xué)《微波測量技術(shù)及儀器》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波工程學(xué)院《成本會計學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林城市職業(yè)技術(shù)學(xué)院《傳感與檢測技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 九江職業(yè)技術(shù)學(xué)院《云計算和大數(shù)據(jù)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京城市職業(yè)學(xué)院《商務(wù)決策模型》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年發(fā)電機(jī)組、內(nèi)燃發(fā)電機(jī)組及旋轉(zhuǎn)式變流機(jī)項(xiàng)目資金需求報告代可行性研究報告
- 核磁共振成像設(shè)備維護(hù)保養(yǎng)培訓(xùn)
- 學(xué)生個人規(guī)劃課件
- 小學(xué)生感恩教育主題班會
- DEFORM-3D模擬控制(五):網(wǎng)格重劃分
- 2023年江蘇南京市市屬國企高層次人才招聘筆試參考題庫附帶答案詳解
- COMMERCIAL INVOICE 商業(yè)發(fā)票模板
- 耳尖放血課件完整版
- 履帶式起重機(jī)
- 基于TLR4-ACE2軸研究鐵死亡在幽門螺桿菌感染致病中的作用及機(jī)制
- 籃球比賽計時計分器設(shè)計
- 并購重組試題
- GB/T 23329-2009紡織品織物懸垂性的測定
- GB/T 21411.2-2009石油天然氣工業(yè)井下設(shè)備人工舉升用螺桿泵系統(tǒng)第2部分:地面驅(qū)動裝置
- GB 2757-2012食品安全國家標(biāo)準(zhǔn)蒸餾酒及其配制酒
評論
0/150
提交評論