flash游戲畢業(yè)設(shè)計(jì)_第1頁
已閱讀1頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  畢業(yè)設(shè)計(jì)(論文)說明書</p><p>  課題名稱 xxxxxxxxxxxxxxxxx</p><p>  系 別 xxx </p><p>  專 業(yè) xxx </p><p>  班 級(jí) xxx </p>

2、<p>  學(xué) 號(hào) xxx </p><p>  姓 名 xxx </p><p>  指導(dǎo)教師 xxx </p><p><b>  項(xiàng)目簡(jiǎn)介</b></p><p>  隨著現(xiàn)代科技的高速發(fā)展短短幾十年,電腦游戲得到迅

3、猛發(fā)展。電腦游戲充分利用多媒體網(wǎng)絡(luò)優(yōu)勢(shì),拓寬了傳統(tǒng)游戲的界限,給人們帶來全新的體驗(yàn)。在這些游戲中,F(xiàn)LASH游戲以其好看的動(dòng)畫,絢麗的聲光效果,高度的通暢性,及很強(qiáng)的可玩性,而受到廣大青少年的青睞。本文就一款名為“反向漂移”的FLASH游戲的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行分析和闡述。該游戲主要使用Adobe Flash Professional CS4軟件進(jìn)行游戲的設(shè)計(jì),是一款操作簡(jiǎn)單、休閑益智的網(wǎng)頁游戲。游戲主角是兩個(gè)相互旋轉(zhuǎn)的球,當(dāng)一個(gè)停下后另一個(gè)

4、會(huì)圍繞它旋轉(zhuǎn),它們之間有一條線相連,當(dāng)用鼠標(biāo)點(diǎn)擊游戲的界面時(shí)正在旋轉(zhuǎn)的球會(huì)停止下來,而另一個(gè)球就會(huì)旋轉(zhuǎn)運(yùn)動(dòng)。鍵盤的左右鍵也可以控制游戲主角的旋轉(zhuǎn)運(yùn)動(dòng)。游戲共有九個(gè)關(guān)卡,每個(gè)關(guān)卡都有不同的物品,碰到不同的物品會(huì)有不同的反映:有的會(huì)得到分?jǐn)?shù)、有的會(huì)使游戲主角喪失生命、有的會(huì)使游戲主角停止運(yùn)動(dòng)、有的會(huì)使游戲主角反向運(yùn)動(dòng)等等。每一關(guān)都有需要游戲主角在規(guī)定時(shí)間內(nèi),碰完所需要的球才能進(jìn)入下一關(guān)。只有通關(guān)才能進(jìn)入排行榜,留下自己的名字和成績(jī)。<

5、/p><p>  Project Synopsis</p><p>  With the rapid development of modern science and technology only lasts for a few decades, computer games rapid development. Computer games make full use of multim

6、edia network advantage, and widened the limits of traditional games, bring people a whole new experience. In these games, FLASH game with its nice animation, gorgeous sound and light effect, the height of the unobstructe

7、d sex, and strong can play sex, and by the the young people of all ages. This paper called a "rotating brothers" FLASH</p><p><b>  目錄</b></p><p><b>  項(xiàng)目簡(jiǎn)介I</b>

8、</p><p>  Project SynopsisII</p><p>  目錄……………………………………………………………………………………III</p><p><b>  1.緒論1</b></p><p>  1.1 設(shè)計(jì)內(nèi)容1</p><p>  1.2 FLASH游戲現(xiàn)狀和

9、展望1</p><p><b>  2.游戲分析1</b></p><p>  2.1 游戲簡(jiǎn)介2</p><p>  2.2 需求分析2</p><p>  2.3 游戲特點(diǎn)4</p><p>  3.游戲開發(fā)相關(guān)技術(shù)5</p><p>  3.1 FLASH

10、游戲開發(fā)簡(jiǎn)介5</p><p>  3.2 游戲開發(fā)原則6</p><p>  3.3 面向?qū)ο癯绦蚓幊毯?jiǎn)介7</p><p><b>  4.游戲設(shè)計(jì)9</b></p><p>  4.1 角色設(shè)計(jì)9</p><p>  4.2 場(chǎng)景設(shè)計(jì)9</p><p> 

11、 4.3 界面設(shè)計(jì)17</p><p>  4.4 規(guī)則設(shè)計(jì)17</p><p>  4.5 數(shù)據(jù)管理18</p><p><b>  5.游戲開發(fā)22</b></p><p>  5.1 開發(fā)思路22</p><p>  5.2 游戲編程22</p><p>

12、  5.3 游戲制作分工27</p><p><b>  總結(jié)29</b></p><p><b>  致謝30</b></p><p><b>  參考文獻(xiàn)31</b></p><p><b>  1 緒論</b></p><

13、;p><b>  1.1 設(shè)計(jì)內(nèi)容 </b></p><p>  一款FLASH小游戲,玩家通過一個(gè)相互旋轉(zhuǎn)的球在地面上行走,并對(duì)地面上的物體進(jìn)行碰撞得分的小游戲。</p><p>  1.2 FLASH游戲開發(fā)現(xiàn)狀和展望</p><p>  FLASH游戲是一種新興起的游戲形式,以游戲簡(jiǎn)單,操作方便,綠色,無需安裝,文件體積小等優(yōu)點(diǎn)現(xiàn)在

14、漸漸被廣大網(wǎng)友喜愛。FLASH游戲又叫FLASH 小游戲,因?yàn)镕LASH游戲主要應(yīng)用于一些趣味化的、小型的游戲之上,以完全發(fā)揮它基于矢量圖的優(yōu)勢(shì)。FLASH游戲在游戲形式上的表現(xiàn)與傳統(tǒng)游戲基本無異,但主要生存于網(wǎng)絡(luò)之上,因?yàn)樗捏w積小、傳播快、畫面美觀,所以大有取代傳統(tǒng)web網(wǎng)游的趨勢(shì),現(xiàn)在國內(nèi)外用FLASH制作無端網(wǎng)游已經(jīng)成為一種趨勢(shì),只要瀏覽器安裝了ADOBE的Flash player,就可以玩所有的Flash游戲了,這比傳統(tǒng)的we

15、b網(wǎng)游進(jìn)步許多。</p><p>  FLASH是開發(fā)的網(wǎng)頁富媒體及強(qiáng)交互技術(shù),最初用來研發(fā)交互式或動(dòng)畫網(wǎng)站組件,近幾年獲得了突飛猛進(jìn)的發(fā)展。根據(jù)Adobe公司的統(tǒng)計(jì),其互聯(lián)網(wǎng)PC桌面普及率達(dá)到了驚人的99%,而JAVA為85.1%。目前FLASH更在大力向PDA及智能手機(jī)終端發(fā)展。</p><p><b>  2 游戲分析</b></p><p

16、><b>  2.1 游戲簡(jiǎn)介</b></p><p>  游戲主角是兩個(gè)相互旋轉(zhuǎn)的球,當(dāng)一個(gè)停下后另一個(gè)會(huì)圍繞它旋轉(zhuǎn),它們之間有一條線相連,當(dāng)用鼠標(biāo)點(diǎn)擊游戲的界面時(shí)正在旋轉(zhuǎn)的球會(huì)停止下來,而另一個(gè)球就會(huì)旋轉(zhuǎn)運(yùn)動(dòng)。鍵盤的左右鍵也可以控制游戲主角的旋轉(zhuǎn)運(yùn)動(dòng)。游戲共有九個(gè)關(guān)卡,每個(gè)關(guān)卡都有不同的物品,碰到不同的物品會(huì)有不同的反映;有的會(huì)得到分?jǐn)?shù)、有的會(huì)使游戲主角喪失生命、有的會(huì)使游戲主角停

17、止運(yùn)動(dòng)、有的會(huì)使游戲主角反向運(yùn)動(dòng)等等。每一關(guān)都有需要游戲主角在規(guī)定時(shí)間內(nèi),碰完所需要的球才能進(jìn)入下一關(guān)。只有通關(guān)才能進(jìn)入排行榜,留下自己的名字和成績(jī)。</p><p><b>  2.2 需求分析</b></p><p>  現(xiàn)今我們走進(jìn)了信息時(shí)代,隨著互聯(lián)網(wǎng)的普及,人們的生活方式發(fā)生了巨大的改變。網(wǎng)上購物、網(wǎng)上交友、網(wǎng)上沖浪等等,成為了現(xiàn)代生活的重要組成部分。[2]

18、根據(jù)瑞典互聯(lián)網(wǎng)市場(chǎng)研究公司Royal Pingdom與2012年1月份發(fā)表的2011全球互聯(lián)網(wǎng)發(fā)展現(xiàn)狀報(bào)告,全球互聯(lián)網(wǎng)用戶達(dá)21億,對(duì)于2012年,互聯(lián)網(wǎng)毫無疑問會(huì)繼續(xù)發(fā)展。隨著人們把更多的私人生活和商務(wù)生活安排到互聯(lián)網(wǎng)上,人們將在一些以往不可想象的方面依賴于互聯(lián)網(wǎng)。無論好與壞,互聯(lián)網(wǎng)現(xiàn)在已經(jīng)成為幾乎一切事物的重要因素。而網(wǎng)上的休閑娛樂方式更是給人們的帶來了極大地樂趣。據(jù)文化部2012年發(fā)布的《2011中國網(wǎng)絡(luò)游戲市場(chǎng)年度報(bào)告》,中國網(wǎng)

19、絡(luò)游戲市場(chǎng)規(guī)模(包括互聯(lián)網(wǎng)游戲和移動(dòng)網(wǎng)游戲市場(chǎng))為468.5億元,其中互聯(lián)網(wǎng)游戲?yàn)?29.8億元,互聯(lián)網(wǎng)游戲用戶總數(shù)突破1.6億人,其中,網(wǎng)頁游戲用戶持續(xù)增長(zhǎng),規(guī)模為1.45億人,增長(zhǎng)率達(dá)24%。而FLASH小游戲又是網(wǎng)頁游戲的主要組成部分,由此可以看出Flash小游戲的巨大發(fā)展?jié)摿ΑO旅嫖揖蛷挠脩舻慕嵌确治鲆幌戮W(wǎng)頁游戲的需求:</p><p><b>  2.2.1 挑戰(zhàn)</b></

20、p><p>  挑戰(zhàn)在競(jìng)技類游戲中體現(xiàn)得淋漓盡致。隨著網(wǎng)絡(luò)游戲的流行,多種游戲例如大型多人在線游戲和休閑競(jìng)技類游戲中,競(jìng)技形式豐富多樣,玩家在一起切磋技藝,或同心協(xié)力挑戰(zhàn)一個(gè)兇猛強(qiáng)大的BOSS,有些玩家已經(jīng)把這些作為自己的長(zhǎng)年的工作,職業(yè)戰(zhàn)隊(duì)每年吸引著無數(shù)的頂尖玩家參與其中,就像F1比賽一樣。有些玩家則在游戲中組成自己的公會(huì)或戰(zhàn)隊(duì),花費(fèi)數(shù)周、數(shù)月為最先戰(zhàn)勝一個(gè)boss不斷地嘗試,關(guān)鍵時(shí)候經(jīng)常通宵達(dá)旦地進(jìn)行,他們有專門

21、的即時(shí)語音通信系統(tǒng)、專業(yè)的網(wǎng)站、鐵桿玩家、嚴(yán)明的制度、苛刻的入會(huì)條件、分工明確的職業(yè)、思維靈活的戰(zhàn)隊(duì)指揮,在歐美,有些公會(huì)戰(zhàn)勝BOSS后,還能在網(wǎng)上出售攻略。競(jìng)技游戲職業(yè)戰(zhàn)隊(duì)出現(xiàn)得較早,大型多人在線游戲中的,競(jìng)技系統(tǒng)做得好的游戲的玩家中,出現(xiàn)了專業(yè)的團(tuán)隊(duì)。</p><p><b>  2.2.2 交流</b></p><p>  交流在游戲中以多種形式呈現(xiàn),其中至少包

22、括聊天、交友、郵件和組隊(duì)系統(tǒng)。這些系統(tǒng)使得玩家認(rèn)識(shí)越來越多的朋友,在這些系統(tǒng)上聊天、組隊(duì)、發(fā)郵件,其便捷程度絲毫不亞于游戲MSN等即時(shí)聊天系統(tǒng)。</p><p>  但是有些游戲?qū)⒔涣鲀?nèi)容限制在游戲內(nèi)容內(nèi),甚至在用戶協(xié)議中寫明,不得討論游戲外的內(nèi)容,例如:”我姐姐買了一輛新車”之類的話題都是被禁止的。但最終目的是強(qiáng)調(diào)不破壞游戲氛圍。實(shí)際上,玩家在游戲中交流的內(nèi)容主要還是游戲內(nèi)的,例如交流戰(zhàn)法等。</p>

23、;<p><b>  2.2.3 成就 </b></p><p>  成就系統(tǒng)讓玩家不斷獲得裝備、聲望、金錢、經(jīng)驗(yàn)、技能、榮譽(yù)、稱號(hào)、寵物、魔法道具、材料等的系統(tǒng),玩家一邊玩,一邊獲得收益,玩家將會(huì)持續(xù)地沉浸在游戲世界中,也是游戲最容易黏住用戶的地方,但這個(gè)結(jié)果對(duì)健康不見得有益,長(zhǎng)時(shí)間游戲?qū)τ谇嗌倌晔遣唤】档?。因此,防沉迷系統(tǒng)被強(qiáng)制推行。</p><p>

24、;<b>  2.2.4 幻想</b></p><p>  虛擬的游戲世界中,游戲設(shè)計(jì)者可以充分地發(fā)揮幻想,用戶也可以體驗(yàn)到現(xiàn)實(shí)中沒有的內(nèi)容。例如角色長(zhǎng)了翅膀,或把敵人變成可愛的綿羊,或當(dāng)上了國王。這些都是體驗(yàn)的形式。</p><p>  2.2.5 消遣休閑</p><p>  這種價(jià)值主要針對(duì)上班族(實(shí)際上,學(xué)生們也同樣享受著這種待遇),工

25、作之余,找一個(gè)世外空間,在這個(gè)空間里,可以隨心所欲地游蕩在虛擬世界,也沒有人管束。游戲過程中,經(jīng)常獲得各種各樣的些獎(jiǎng)勵(lì),比起迷茫地閑逛、觀看枯燥無味的電視節(jié)目,更讓人興奮。</p><p>  2.2.6 故事體驗(yàn)</p><p>  游戲內(nèi)必定承載一定內(nèi)容的故事,這些故事可以和和影視節(jié)目或小說中的故事一樣,但體驗(yàn)更為直接,玩家身臨其境,親自扮演故事中的角色。</p><

26、;p>  2.2.7 獲得知識(shí)</p><p>  人類進(jìn)入快速發(fā)展時(shí)期后,知識(shí)傳播更為快速,知識(shí)不斷地改進(jìn)著人們的生活。如果有種方式,寓教于樂,那么這種方式必然是最容易接受的,游戲能很好地解決這個(gè)問題,那游戲就是健康的,可以是有益而無害的。在網(wǎng)絡(luò)游戲?qū)η嗌倌瓿砷L(zhǎng)造成各種的影響的今天,這種可以讓人獲得知識(shí)的健康的游戲形式,是游戲的最好出路。</p><p>  2.2.8 收獲快樂&

27、lt;/p><p>  幽默詼諧的故事最容易讓讓大眾接受。讓觀眾或用戶能笑起來,生活總是樂觀地態(tài)度,少一些抑郁,多一些歡樂,社會(huì)更和諧。</p><p>  2.2.9 滿足審美需求</p><p>  藝術(shù)是人類以感情和想象作為特性的把握世界的一種特殊方式,即通過審美創(chuàng)造活動(dòng)再現(xiàn)現(xiàn)實(shí)和表現(xiàn)情感理想,在想象中實(shí)現(xiàn)審美主體和審美客體的互相對(duì)象化。具體說,他們是人們現(xiàn)實(shí)生活

28、和精神世界的形象反映,也是藝術(shù)家知覺、情感、理想、意念綜合心理活動(dòng)的有機(jī)產(chǎn)物。作為第九藝術(shù),同樣具備滿足人類審美需求的功能。</p><p><b>  2.3 游戲特點(diǎn)</b></p><p>  首先,游戲簡(jiǎn)單易操控,只需點(diǎn)擊屏幕就可操控。其次,益智,需要在規(guī)定時(shí)間內(nèi)將需要碰撞的球消失掉,需要每一步都要計(jì)算最佳落腳位置。再者,有行走的動(dòng)感,關(guān)卡背景會(huì)隨著游戲角色的

29、移動(dòng)而移動(dòng)。每一關(guān)卡都有新的東西加入進(jìn)來,有的可以使主角反向旋轉(zhuǎn),有的會(huì)使主角停止運(yùn)動(dòng)。不同的東西被主角碰到后會(huì)有不同的反應(yīng)。</p><p>  3 游戲開發(fā)相關(guān)技術(shù)</p><p>  3.1 FLASH游戲開發(fā)簡(jiǎn)介</p><p>  我就從Flash的基本情況、歷史發(fā)展和設(shè)計(jì)方式簡(jiǎn)單介紹一下什么是Flash。并了解一下游戲開發(fā)。</p>&l

30、t;p>  3.1.1 FLASH簡(jiǎn)介</p><p>  FLASH是一種創(chuàng)作工具計(jì)算機(jī)軟件,目前最新的零售版本為Adobe Flash CS5.5 Professional(2011年發(fā)布),現(xiàn)在已經(jīng)有FLASH CS6 Professional提供測(cè)試版本的下載。Adobe FLASH Professional CS5為創(chuàng)建數(shù)字動(dòng)畫和交互式Web站點(diǎn)提供了功能全面的創(chuàng)作和編輯環(huán)境。FLASH廣泛用于創(chuàng)

31、建吸引人的應(yīng)用程序,它們包含豐富 的視頻、聲音、圖形和動(dòng)畫。可以在FLASH中創(chuàng)建原始內(nèi)容或者從其它Adobe應(yīng)用程序(如Photoshop或Illustrator)導(dǎo)入它們,快速設(shè)計(jì)簡(jiǎn)單的動(dòng)畫,以及使用Adobe AcitonScript 3.0開發(fā)高級(jí)的交互式項(xiàng)目。設(shè)計(jì)人員和開發(fā)人員可使用它來創(chuàng)建演示文稿、應(yīng)用程序和其它允許用戶交互的內(nèi)容。FLASH可以包含簡(jiǎn)單的動(dòng)畫、視頻內(nèi)容、復(fù)雜演示文稿和應(yīng)用程序以及介于它們之間的任何內(nèi)容。通常

32、,使用FLASH創(chuàng)作的各個(gè)內(nèi)容單元稱為應(yīng)用程序,即使它們可能只是很簡(jiǎn)單的動(dòng)畫。也可以通過添加圖片、聲音、視頻和特殊效果,構(gòu)建包含豐富媒體的FLASH應(yīng)用程序。 </p><p>  3.1.2 FLASH歷史簡(jiǎn)介</p><p>  FLASH的前身是Future Splash Animator(也有被稱為SchockwaveAnimator),在出現(xiàn)時(shí)它僅僅作為當(dāng)時(shí)交互制作軟件Direc

33、tor和Authorware的一個(gè)小型插件,后來才由Macromedia公司出品成單獨(dú)的軟件。曾與Dreamweaver(網(wǎng)頁制作工具軟件)和Fireworks(圖像處理軟件)并成為“網(wǎng)頁三劍客”。FLASH隨著互聯(lián)網(wǎng)的發(fā)展,在AdobeFlash4版本之后嵌入了ActionScript函數(shù)調(diào)用功能,使互聯(lián)網(wǎng)在交互應(yīng)用上更加便捷。該公司及旗下軟件于2007年被Adobe公司收購并進(jìn)行后續(xù)開發(fā)。(Macromedia最后一個(gè)版本為FLAS

34、H8,Adobe收購后第一個(gè)發(fā)布的版本為FLASH CS) 但是Adobe Flash Professional僅僅是FLASH CS5工具套件當(dāng)中的一個(gè)產(chǎn)品。除了FLASH Professional之外,Adobe還提供了FLASH Catalyst和Flash Builder。Flash Catalyst是一個(gè)設(shè)計(jì)工具,它無需編寫代碼即可快速創(chuàng)建富有表現(xiàn)力的界面和交互式內(nèi)容。FLASH Buil</p><p&g

35、t;  3.1.3 FLASH游戲設(shè)計(jì)簡(jiǎn)介</p><p>  Flash特別適用于創(chuàng)建通過Internet提供的內(nèi)容,因?yàn)樗奈募浅P LASH是通過廣泛使用矢量圖形做到這一點(diǎn)的。與位圖圖形相比,矢量圖形需要的內(nèi)存和存儲(chǔ)空間小很多,因?yàn)樗鼈兪且詳?shù)學(xué)公式而不是大型數(shù)據(jù)集來表示的。位圖圖形之所以更大,是因?yàn)閳D像中的每個(gè)像素都需要一組單獨(dú)的數(shù)據(jù)來表示。 </p><p>  要在FLASH

36、中構(gòu)建應(yīng)用程序,可以使用FLASH繪圖工具創(chuàng)建圖形,并將其它媒體元素導(dǎo)入FLASH文檔。接下來,定義如何以及何時(shí)使用各個(gè)元素來創(chuàng)建設(shè)想中的應(yīng)用程序。 </p><p>  FLASH是一個(gè)非常優(yōu)秀的矢量動(dòng)畫制作軟件,它以流式控制技術(shù)和矢量技術(shù)為核心,制作的動(dòng)畫具有短小精悍的特點(diǎn),所以被廣泛應(yīng)用于網(wǎng)頁動(dòng)畫的設(shè)計(jì)中,以成為當(dāng)前網(wǎng)頁動(dòng)畫設(shè)計(jì)最為流行的軟件之一。 在FLASH中創(chuàng)作內(nèi)容時(shí),需要在FLASH文檔文件中工作。

37、FLASH文檔的文件擴(kuò)展名為.fla(FLA)。FLASH文檔有四個(gè)主要部分: </p><p>  舞臺(tái):舞臺(tái)是在回放過程中顯示圖形、視頻、按鈕等內(nèi)容的位置。</p><p>  時(shí)間軸:時(shí)間軸用來通知FLASH顯示圖形和其它項(xiàng)目元素的時(shí)間,也可以使用時(shí)間軸指定舞臺(tái)上各圖形的分層順序。位于 較高圖層中的圖形顯示在較低圖層中的圖形的上方。 </p><p>  庫面

38、板:庫面板是FLASH顯示FLASH文檔中的媒體元素列表的位置。 </p><p>  ActionScript:ActionScript代碼可用來向文檔中的媒體元素添加交互式內(nèi)容。例如,可以添加代碼以便用戶在單擊某按鈕時(shí)顯示一幅新圖像,還可以使用ActionScript向應(yīng)用程序添加邏輯。邏輯使應(yīng)用程序能夠根據(jù)用戶的操作和其它情況采取不同的工作方式。FLASH包括兩個(gè)版本的ActionScript,可滿足創(chuàng)作者

39、的不同具體需要。FLASH包含了許多種功能,如預(yù)置的拖放用戶界面組件,可以輕松地將ActionScript添加到文檔的內(nèi)置行為,以及可以添加到媒體對(duì)象的特殊效果。這些功能使FLASH不僅功能強(qiáng)大,而且易于使用。</p><p>  3.2 游戲開發(fā)原則</p><p>  游戲開發(fā)的原則包括很多種,我就從中選出游戲性原則、活性原則、可靠性原則和經(jīng)濟(jì)性原則進(jìn)行簡(jiǎn)單論述。</p>

40、<p>  3.2.1 游戲性原則</p><p>  游戲作為統(tǒng)一整體而存在,因此,在游戲設(shè)計(jì)中,要從整個(gè)游戲的角度出發(fā),游戲的代碼要統(tǒng)一,設(shè)計(jì)規(guī)范要標(biāo)準(zhǔn),傳遞語言要盡可能一致。</p><p>  3.2.2 活性原則</p><p>  為保持游戲的長(zhǎng)久生命力,要求系統(tǒng)具有較強(qiáng)的環(huán)境適應(yīng)性。為此,游戲應(yīng)具有較好的開放性和結(jié)構(gòu)的可變化性。在游戲設(shè)計(jì)中

41、,應(yīng)盡量采用模塊化結(jié)構(gòu),提高模塊的獨(dú)立性,以便于對(duì)模塊的修改,提高游戲適應(yīng)環(huán)境變化的能力。</p><p>  3.2.3 可靠性原則</p><p>  可靠性既是評(píng)價(jià)游戲設(shè)計(jì)質(zhì)量的一個(gè)重要指標(biāo),又是游戲設(shè)計(jì)的一個(gè)基本出發(fā)點(diǎn)。只有設(shè)計(jì)出的游戲是安全可靠的,才能在實(shí)際運(yùn)行中發(fā)揮出它應(yīng)有的作用。所以在系統(tǒng)設(shè)計(jì)中必須考慮到對(duì)各種不安全因素抵御能力的設(shè)計(jì)。例如安全保密、檢錯(cuò)、抗病毒能力和在出現(xiàn)意

42、外情況后,游戲恢復(fù)能力的設(shè)計(jì)等。</p><p>  3.2.4 經(jīng)濟(jì)性原則</p><p>  在滿足游戲需求的前提下,盡可能的減少游戲的開銷。這里既要考慮到現(xiàn)實(shí)系統(tǒng)的費(fèi)用,又要考慮到游戲?qū)嵤┖蟮馁M(fèi)用。</p><p>  3.3 面向?qū)ο窬幊毯?jiǎn)介</p><p>  面向?qū)ο窬幊逃⑽拿?,Object Oriented Programmi

43、ng,簡(jiǎn)稱OOP。是九十年代才流行的一種軟件編程方法。它強(qiáng)調(diào)對(duì)象的“抽象”、“封裝”、“繼承”、“多態(tài)”。我們講程序設(shè)計(jì)是由“數(shù)據(jù)結(jié)構(gòu)”+“算法”組成的。從宏觀的角度講,OOP下的對(duì)象是以編程為中心的,是面向程序的對(duì)象。</p><p>  3.3.1 面向?qū)ο缶幊痰亩x</p><p>  Alan Kay(Smalltalk面向?qū)ο缶幊汰h(huán)境語言的發(fā)明人之一,也是面向?qū)ο缶幊趟?/p>

44、想的創(chuàng)始人之一)對(duì)OOP的定義:</p><p>  面向?qū)ο缶幊淌腔谶f歸設(shè)計(jì)的原則:</p><p><b>  一切都是對(duì)象。</b></p><p>  計(jì)算通過對(duì)象間相互通信,請(qǐng)求其他對(duì)象執(zhí)行動(dòng)作來實(shí)現(xiàn)。對(duì)象間通過發(fā)送和接收消息來通信。</p><p>  每個(gè)對(duì)象都有自己的內(nèi)存,其中可能包括了其他的對(duì)象。&l

45、t;/p><p>  每一個(gè)對(duì)象都是某個(gè)類的實(shí)例。類就是一組相似的對(duì)象。</p><p>  類是對(duì)象相關(guān)行為的儲(chǔ)存庫。也就是說,同一個(gè)類的所有對(duì)象都能執(zhí)行同樣的動(dòng)作。 </p><p>  類被組織成有單個(gè)根節(jié)點(diǎn)的樹狀結(jié)構(gòu),被稱為繼承層次結(jié)構(gòu)。與類實(shí)例相關(guān)的內(nèi)存和行為都會(huì)被樹結(jié)構(gòu)中的后代自動(dòng)繼承。</p><p>  3.3.2 面向?qū)ο笤O(shè)計(jì)的

46、概念</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念主要包括:對(duì)象、類、數(shù)據(jù)抽象、繼承、動(dòng)態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。   1、對(duì)象 對(duì)象是運(yùn)行期的基本實(shí)體,它是一個(gè)封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實(shí)體。</p><p>  類:類是具有相同類型的對(duì)象的抽象。一個(gè)對(duì)象所包含的所有數(shù)據(jù)和代碼可以通過類來構(gòu)造。</p><

47、;p>  封裝:封裝是將數(shù)據(jù)和代碼捆綁到一起,避免了外界的干擾和不確定性。對(duì)象的某些數(shù)據(jù)和代碼可以是私有的,不能被外界訪問,以此實(shí)現(xiàn)對(duì)數(shù)據(jù)和代碼不同級(jí)別的訪問權(quán)限。</p><p>  繼承:繼承是讓某個(gè)類型的對(duì)象獲得另一個(gè)類型的對(duì)象的特征。通過繼承可以實(shí)現(xiàn)代碼的重用:從已存在的類派生出的一個(gè)新類將自動(dòng)具有原來那個(gè)類的特性,同時(shí),它還可以擁有自己的新特性。</p><p>  多態(tài):

48、多態(tài)是指不同事物具有不同表現(xiàn)形式的能力。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口,通過這種方式減少代碼的復(fù)雜度。   </p><p>  動(dòng)態(tài)綁定:綁定指的是將一個(gè)過程調(diào)用與相應(yīng)代碼鏈接起來的行為。動(dòng)態(tài)綁定是指與給定的過程調(diào)用相關(guān)聯(lián)的代碼只有在運(yùn)行期才可知的一種綁定,它是多態(tài)實(shí)現(xiàn)的具體形式。</p><p>  消息傳遞:對(duì)象之間需要相互溝通,溝通的途徑就是對(duì)象之間收發(fā)信息

49、。消息內(nèi)容包括接收消息的對(duì)象的標(biāo)識(shí),需要調(diào)用的函數(shù)的標(biāo)識(shí),以及必要的信息。消息傳遞的概念使得對(duì)現(xiàn)實(shí)世界的描述更容易。</p><p>  方法:方法(Method)是定義一個(gè)類可以做的,但不一定會(huì)去做的事。</p><p><b>  4 游戲設(shè)計(jì)</b></p><p><b>  4.1 角色設(shè)計(jì)</b></p

50、><p>  游戲主角是兩個(gè)相互旋轉(zhuǎn)的球,一個(gè)是紅球、一個(gè)是黃球,它們之間有一條線相連。兩個(gè)球中只有一個(gè)球在旋轉(zhuǎn)。當(dāng)一個(gè)停下后另一個(gè)會(huì)圍繞它旋轉(zhuǎn),當(dāng)用鼠標(biāo)點(diǎn)擊游戲的界面時(shí)正在旋轉(zhuǎn)的球會(huì)停止下來,而另一個(gè)球就會(huì)旋轉(zhuǎn)運(yùn)動(dòng)。鍵盤的左右鍵也可以控制游戲主角的旋轉(zhuǎn)運(yùn)動(dòng)。當(dāng)落腳點(diǎn)控制恰當(dāng)時(shí),他們就會(huì)按照一定方向進(jìn)行移動(dòng)。如4.1圖1所示:</p><p>  4.1圖1 游戲主角</p>&

51、lt;p><b>  4.2 場(chǎng)景設(shè)計(jì)</b></p><p>  游戲共有九關(guān),每一關(guān)對(duì)應(yīng)一個(gè)場(chǎng)景。每個(gè)場(chǎng)景都有一個(gè)時(shí)間條,根據(jù)關(guān)卡的情況,時(shí)間條播放速度不同。時(shí)間到了游戲結(jié)束。第一關(guān)的場(chǎng)景,包括兩個(gè)黃球(黃色的主角踩到或者碰到才能得分),兩個(gè)紅球(紅色的主角踩到或者碰到才能得分),紅球和黃球各有一個(gè)是平面球,另一個(gè)是立體球,還有兩個(gè)立體的藍(lán)球(碰到就得分)。如4.2圖1所示:<

52、;/p><p><b>  4.2圖1 第一關(guān)</b></p><p>  第二關(guān)的場(chǎng)景,包括一個(gè)立體的紅球,一個(gè)立體的黃球,兩個(gè)立體的藍(lán)球,兩個(gè)平面的籃球,兩個(gè)平面的灰球(會(huì)隨機(jī)的減少時(shí)間和分?jǐn)?shù)),還有四個(gè)靜止的障礙物(碰撞后會(huì)反向漂移)。如4.2圖2:</p><p><b>  4.2圖2 第二關(guān)</b></p&g

53、t;<p>  第三關(guān)的場(chǎng)景,包括一個(gè)立體的紅球,一個(gè)立體的黃球,兩個(gè)立體的藍(lán)球,兩個(gè)平面的黃球和紅球,兩個(gè)平面的灰球,還有兩個(gè)移動(dòng)止的障礙物,還有一個(gè)加時(shí)間的表(踩到才能增加時(shí)間)。如4.2圖3:</p><p><b>  4.2圖3 第三關(guān)</b></p><p>  第四關(guān)場(chǎng)景,三個(gè)立體藍(lán)球,兩個(gè)平面黃球,兩個(gè)平面紅球,兩個(gè)白色的立體球,四個(gè)加時(shí)

54、間的表,一個(gè)障礙物和一個(gè)平面灰球(碰撞三次才能被消滅并得分)。如4.2圖4、4.2圖5:</p><p><b>  4.2圖4 第四關(guān)</b></p><p><b>  4.2圖5 第四關(guān)</b></p><p>  第五關(guān)場(chǎng)景,包括兩個(gè)靜止的障礙物,兩個(gè)黃球和兩個(gè)紅球(一個(gè)平面球,一個(gè)立體球),一個(gè)灰色的平面球,一個(gè)

55、白色的立體球,兩個(gè)黑色的刺球(碰到后會(huì)反向漂移并損失一顆紅心,當(dāng)沒有紅心時(shí)就會(huì)死亡),四個(gè)藍(lán)球和一個(gè)加時(shí)間的表。如4.2圖6和4.2圖7:</p><p><b>  4.2圖6 第五關(guān)</b></p><p><b>  4.2圖7 第五關(guān)</b></p><p>  第六關(guān)場(chǎng)景,包括四個(gè)靜止的障礙物,十個(gè)藍(lán)色的球(六個(gè)

56、立體球,四個(gè)平面球),四個(gè)黃球(兩個(gè)立體球,兩個(gè)平面球),四個(gè)紅球(兩個(gè)立體球,兩個(gè)平面球),兩個(gè)刺球,六個(gè)立體的綠球(可伸縮,碰到后會(huì)反向漂移),兩個(gè)加時(shí)間表。如4.2圖8和4.2圖9:</p><p><b>  4.2圖8 第六關(guān)</b></p><p><b>  4.2圖9 第六關(guān)</b></p><p>  第

57、七關(guān)場(chǎng)景,包括四個(gè)立體的綠球(可伸縮),兩個(gè)黃球(一個(gè)平面球,一個(gè)立體球),兩個(gè)紅球(一個(gè)平面球,一個(gè)立體球),四個(gè)藍(lán)球(兩個(gè)立體球,兩個(gè)平面球),三個(gè)立體的白球。兩個(gè)可移動(dòng)的刺球(碰到后會(huì)反向漂移并損失一顆紅心)。如4.2圖10和4.2圖11:</p><p>  4.2圖10 第七關(guān)</p><p>  4.2圖11 第七關(guān)</p><p>  第八關(guān)場(chǎng)景,包括

58、兩個(gè)靜止的障礙物,六個(gè)藍(lán)球(兩個(gè)立體球,四個(gè)平面球),兩個(gè)平面灰球,兩個(gè)立體的白球,兩個(gè)紅球(平面),兩個(gè)黃球(平面),兩個(gè)加時(shí)間的表,一個(gè)柵欄(時(shí)開時(shí)關(guān),碰到后會(huì)停止旋轉(zhuǎn))。如4.2圖12、4.2圖13和4.2圖14:</p><p>  4.2圖12 第八關(guān)</p><p>  4.2圖13 第八關(guān)</p><p>  4.2圖14 第八關(guān)</p>

59、<p>  第九關(guān)場(chǎng)景,包括八個(gè)藍(lán)球(四個(gè)平面球,四個(gè)立體球),四個(gè)紅球(兩個(gè)立體球,兩個(gè)平面球),四個(gè)黃球(兩個(gè)立體球,兩個(gè)平面球),四個(gè)靜止的障礙物,四個(gè)刺球(兩個(gè)靜止,兩個(gè)移動(dòng)),四個(gè)足球(碰撞后會(huì)反向旋轉(zhuǎn),足球會(huì)滾動(dòng),足球可以消去刺球),四個(gè)加時(shí)間的表。如4.2圖15、4.2圖16:</p><p>  4.2圖15 第九關(guān)</p><p>  4.2圖16 第九關(guān)&l

60、t;/p><p><b>  4.3 界面設(shè)計(jì)</b></p><p><b>  共有七個(gè)主控界面:</b></p><p>  Loading界面,主要包括了開始動(dòng)畫、游戲名字、制作者和指導(dǎo)老師;</p><p>  游戲開始界面,有游戲主角和四個(gè)界面按鈕;</p><p>

61、  游戲界面,承載游戲關(guān)卡的界面;</p><p>  排行界面,輸出按分?jǐn)?shù)排列的排行榜;</p><p>  幫助界面,游戲規(guī)則的介紹;</p><p>  設(shè)置界面,背景聲音控制、游戲難度控制、游戲控制方式控制和關(guān)卡選擇轉(zhuǎn)換按鈕;</p><p>  關(guān)卡選擇界面,提供關(guān)卡選擇的功能。</p><p><b&

62、gt;  4.4 規(guī)則設(shè)計(jì)</b></p><p>  反向漂移的主角會(huì)一個(gè)繞另一個(gè)旋轉(zhuǎn),當(dāng)點(diǎn)擊鼠標(biāo)左鍵時(shí),會(huì)使反向漂移交換旋轉(zhuǎn);鍵盤的左右鍵亦可控制反向漂移交換旋轉(zhuǎn),按鍵盤左鍵,黃色的旋轉(zhuǎn)球落腳,按鍵盤右鍵,紅色的旋轉(zhuǎn)球落腳。游戲主角在每一關(guān)都有三條性命。反向漂移的主角碰到不同的物體會(huì)有不同的反應(yīng):</p><p>  碰到障礙物和立體灰球會(huì)反方向旋轉(zhuǎn),并后移;碰到刺球會(huì)喪

63、失生命;碰到綠顏色的球會(huì)得到金幣;</p><p>  碰到平面的黃球或紅球,只有顏色相同并踩上才能得到金幣;碰到立體的黃球或紅球,只有顏色相同才能得到金幣,否則反向旋轉(zhuǎn),并后移;碰到柵欄會(huì)停止運(yùn)動(dòng); 碰到足球會(huì)令足球前進(jìn),自己會(huì)反向旋轉(zhuǎn),并后移;只有足球才能將刺球打掉并得到金幣,一個(gè)足球只能消去一個(gè)刺球;碰到平面的灰球會(huì)丟失一定的時(shí)間或金幣,碰到時(shí)鐘會(huì)得到一定的時(shí)間;時(shí)間到了會(huì)結(jié)束本關(guān)卡,生命值為

64、零也會(huì)結(jié)束本關(guān)卡;</p><p>  只有通關(guān)后才能進(jìn)入排行榜,排行榜就會(huì)記錄下你的分?jǐn)?shù)和名字;</p><p><b>  4.5 數(shù)據(jù)管理</b></p><p>  玩家的排行信息的存儲(chǔ)和讀取,使用的是Flash的共享對(duì)象,[6]英文名稱為Shared Object(以下簡(jiǎn)稱SO)。SO允許你在使用者本機(jī)上存儲(chǔ)所有flash支持的數(shù)據(jù)(

65、包括:Array, Boolean, Date, Number, Object, String, XML...etc),如同在瀏覽器中使用cookie一樣。SO的存儲(chǔ)位置,一是本地客戶端的硬盤;二是存放在服務(wù)器上。在這里,我只能簡(jiǎn)單介紹一下本地共享對(duì)象(Local shared object)的使用。本地共享對(duì)象存儲(chǔ)默認(rèn)存儲(chǔ)路徑為:</p><p>  C:\DocumentsandSettings\登陸名稱\A

66、pplicationData\Macromedia\FlashPlayer\服務(wù)器網(wǎng)域名稱\影片路徑\影片文件名.swf\...其擴(kuò)展名為*.sol。默認(rèn)情況下,F(xiàn)lash 可以在本地保存多達(dá) 100K 大小的永久性遠(yuǎn)程共享對(duì)象。</p><p>  4.5.1 Shared Objcet使用方法</p><p>  在ShareObject中存儲(chǔ)簡(jiǎn)單數(shù)據(jù)是相當(dāng)簡(jiǎn)單的工作,我們先用Shar

67、eObject存儲(chǔ)一個(gè)用戶自定義的對(duì)象,然后將討論用ShareObject存儲(chǔ)內(nèi)建類的實(shí)例的問題。一個(gè)用戶自定義對(duì)象可以這樣創(chuàng)建: myObj = new Object(); </p><p>  在ShareObject中存儲(chǔ)myObj是很簡(jiǎn)單的,首先你需要?jiǎng)?chuàng)建一個(gè)本地ShareObject的引用:myLSO = SharedObject.getLocal("foo");</p>

68、<p>  getLocal方法的第一個(gè)參數(shù)是ShareObject的名字,getLocal()方法也有第二個(gè)可選參數(shù):一個(gè)字符串類型的路徑。大多數(shù)情況下你用不到這個(gè)參數(shù),除非你在多個(gè)swf文件中共用同一個(gè)ShareObject?,F(xiàn)在為了在ShareObject中儲(chǔ)存數(shù)據(jù),你需要給ShareObject指定“數(shù)據(jù)特性”(data property)?,F(xiàn)在創(chuàng)建一個(gè)ShareObject引用,以及你想存儲(chǔ)的對(duì)象,最后存儲(chǔ)這個(gè)對(duì)

69、象到“數(shù)據(jù)特性”中。例子:</p><p>  myLSO = SharedObject.getLocal("foo");</p><p>  myObj = {}; myObj.fname = "Jessica";</p><p>  myObj.lname = "Smith";</p>&

70、lt;p>  myLSO.data.myObj = myObj; </p><p>  myLocalSharedObject.data;</p><p>  描述:只讀屬性,用來存儲(chǔ)被存儲(chǔ)到“數(shù)據(jù)特性”中的對(duì)象的屬性,這些屬性可以共享/存儲(chǔ),每一個(gè)屬性可以是各種基礎(chǔ)數(shù)據(jù)類型(數(shù)組,數(shù)字布爾值等)對(duì)象?,F(xiàn)在myObj已經(jīng)存儲(chǔ)在SharedObject中了,今后你可以通過對(duì)Shared

71、Object數(shù)據(jù)屬性的存取來實(shí)現(xiàn)對(duì)myObj的存取,下面是一個(gè)例子,這個(gè)例子檢測(cè)是否數(shù)據(jù)已經(jīng)被存儲(chǔ)到SharedObject中了,如果沒有,它將數(shù)據(jù)存儲(chǔ)進(jìn)去,如果已經(jīng)存在,則在輸出窗口輸出。當(dāng)你將這些代碼放到一個(gè)空的影片剪輯的第一禎后,你可以運(yùn)行它一次,然后在運(yùn)行一次,第二次運(yùn)行你可以看到你存儲(chǔ)的數(shù)據(jù)被輸出。 一定要先保存動(dòng)畫,否則你的動(dòng)畫只是在windows臨時(shí)文件夾中運(yùn)行,不能存儲(chǔ)數(shù)據(jù)。</p><p>  

72、myLSO = SharedObject.getLocal("foo");</p><p>  if(myLSO.data.myObj == undefined){ </p><p>  trace("Storing Data, run me again");</p><p>  myObj = {}; </p>

73、<p>  myObj.fname = "Jessica";</p><p>  myObj.lname = "Smith"; </p><p>  myLSO.data.myObj = myObj; </p><p><b>  }else{ </b></p><p>

74、;  trace("Retrieving Data"); </p><p>  var firstname = myLSO.data.myObj.fname; </p><p>  var lastname = myLSO.data.myObj.lname;</p><p>  trace("First Name: "+fir

75、stname); </p><p>  trace("Last Name: "+lastname); </p><p><b>  } </b></p><p>  運(yùn)行一次以上后,你可以將程序改為:</p><p>  myLSO = SharedObject.getLocal("foo&

76、quot;);</p><p>  trace("Retrieving Data"); </p><p>  var firstname = myLSO.data.myObj.fname; </p><p>  var lastname = myLSO.data.myObj.lname;</p><p>  trace(&

77、quot;First Name: "+firstname); </p><p>  trace("Last Name: "+lastname); </p><p>  你會(huì)發(fā)現(xiàn)無論你重復(fù)運(yùn)行多少次,甚至關(guān)閉flash后重新進(jìn)入,仍然能夠得到firstname和lastname的值。另外你應(yīng)該可以理解getLocal()方法的參數(shù)的作用了,它用來表示你所存儲(chǔ)的數(shù)

78、據(jù)的載體名稱,是必不可少的。例如本例中的數(shù)據(jù)都存儲(chǔ)在名為foo的SharedObject中,只有g(shù)etLocal("foo"),你才能得到你想要的結(jié)果。你還可以存儲(chǔ)更多內(nèi)建類型:數(shù)組,布爾值,日期,數(shù)字,對(duì)象,XML,undefined,null下面是一個(gè)將日期實(shí)例存儲(chǔ)在SharedObject中的例子:</p><p>  myLSO = SharedObject.getLocal(&quo

79、t;DateStorage"); </p><p>  myDate = new Date(); </p><p>  myLSO.data.myDate = myDate;</p><p><b>  4.6 游戲的結(jié)構(gòu)</b></p><p>  共有七個(gè)界面,開始界面為主界面,開始界面上有四個(gè)按鈕,可以調(diào)

80、動(dòng)開始游戲界面、設(shè)置界面、幫助界面和排行榜界面,而設(shè)置界面中的選擇關(guān)卡按鈕可調(diào)動(dòng)關(guān)卡選擇界面。開始游戲界面是運(yùn)行游戲的主界面,個(gè)個(gè)關(guān)卡在其中轉(zhuǎn)換,當(dāng)過關(guān)失敗后,會(huì)轉(zhuǎn)到游戲失敗的界面,玩家可以選擇繼續(xù)游戲和返回開始界面。當(dāng)闖關(guān)成功后會(huì)轉(zhuǎn)到過關(guān)的界面,玩家也可以選擇繼續(xù)游戲和返回開始界面。只有通關(guān)后才會(huì)轉(zhuǎn)到排行輸入界面,進(jìn)而進(jìn)入排行榜的界面,記錄下玩家的名字和最高分。結(jié)構(gòu)如4.6圖1:</p><p>  4.6圖1

81、 游戲結(jié)構(gòu)圖</p><p><b>  4.7 主要模塊</b></p><p>  主控模塊:控制游戲進(jìn)程、界面轉(zhuǎn)換、數(shù)據(jù)管理、聲音控制和背景移動(dòng)等等。是由文檔類(StartMain.as)和元件里的控制代碼進(jìn)行控制。文檔類是主控模塊的核心,元件里的代碼是輔助文檔類控制游戲。這樣做使控制靈活、多變、便于更改和減少代碼的數(shù)量。</p><p>

82、;  角色模塊:主角的運(yùn)動(dòng)方式和屬性和物品的屬性和運(yùn)行方式。凡是關(guān)于角色和物品的基本屬性都是繼承與角色類的基類(BasicBall.as),其他的屬性都是各具特色的。例如角色和物品的大小、狀態(tài)和碰撞性質(zhì)都是基類定義的。而他們的運(yùn)行方式、分?jǐn)?shù)、碰撞后性質(zhì)變化都是不同的,需要在自己的類中定義。這樣利于統(tǒng)一管理,方便擴(kuò)展。</p><p>  關(guān)卡模塊:游戲關(guān)卡的設(shè)計(jì)、碰撞管理、物品管理、分?jǐn)?shù)管理等等。每一個(gè)關(guān)卡都是繼

83、承自關(guān)卡的基類。關(guān)卡的基類(LevleMap.as)定義了關(guān)卡的基本屬性,包括碰撞、物品的控制方式、分?jǐn)?shù)管理。而物品的擺放、物品的數(shù)量和類型、碰撞后的分?jǐn)?shù)反饋是不同的。</p><p><b>  5 游戲開發(fā)</b></p><p><b>  5.1 開發(fā)思路</b></p><p>  該游戲的開發(fā)思路是:<

84、/p><p>  第一步:設(shè)計(jì)游戲角色和場(chǎng)景,包括游戲主角、游戲的對(duì)象和游戲的場(chǎng)景。</p><p>  第二步:設(shè)計(jì)游戲方式,包括游戲?qū)ο蟮倪\(yùn)行方式、主角的運(yùn)動(dòng)方式、游戲規(guī)則等等。</p><p>  第三步:游戲的結(jié)構(gòu)設(shè)計(jì),包括游戲的界面與界面的關(guān)系和關(guān)卡的轉(zhuǎn)換關(guān)系。</p><p>  第四步:數(shù)據(jù)的傳遞和存儲(chǔ),該游戲主要的是游戲分?jǐn)?shù)的傳遞

85、和存儲(chǔ)。</p><p>  5.2 游戲開發(fā)的編程</p><p>  Flash游戲的編程是比較簡(jiǎn)單的,F(xiàn)lash編程使用的語言是ActionScript,它屬于面向?qū)ο笳Z言。在前面已經(jīng)介紹了,這里就不贅述了,下面我就結(jié)合實(shí)例說明我在本游戲中的主要編程。</p><p>  5.2.1 游戲主角運(yùn)行的核心算法</p><p>  運(yùn)行主要

86、算法:主角的其中一球叫A球,另一球叫B球,第一、當(dāng)B停止旋轉(zhuǎn)時(shí),A會(huì)圍繞B旋轉(zhuǎn);第二、當(dāng)A停止旋轉(zhuǎn)時(shí),B會(huì)圍繞A 旋轉(zhuǎn);第三、A和B只有一球圍繞另一個(gè)球旋轉(zhuǎn);第四、當(dāng)玩家點(diǎn)擊控制鍵時(shí),正在旋轉(zhuǎn)的球停止旋轉(zhuǎn)。</p><p>  旋轉(zhuǎn)算法,例如A圍繞B旋轉(zhuǎn)。</p><p>  第一、得到兩者的坐標(biāo)(A.x,A.y)和(B.x,B.y),計(jì)算A相對(duì)于B的角度α;</p><

87、;p>  第二、用A圍繞B旋轉(zhuǎn)的角速度Speed加上阿爾法,即可算出每次A相對(duì)于B旋轉(zhuǎn)時(shí)的角度偏移量β,得到兩者的固定旋轉(zhuǎn)半徑R;</p><p>  第三、根據(jù)公式:A.x=B.x+sinβ*R;A.y=B.y+cosβ*R即可算出旋轉(zhuǎn)后的坐標(biāo);</p><p>  第四、返回第一步,就可以讓A圍繞B做勻速圓周運(yùn)動(dòng)。</p><p>  旋轉(zhuǎn)算法的AS3代碼

88、實(shí)現(xiàn):</p><p>  stage.addEventListener(MouseEvent.CLICK,onMouse,false,0,true);</p><p>  //鼠標(biāo)偵聽,兩球旋轉(zhuǎn) </p><p>  public function onMouse(event:MouseEvent):void {</p><p>  if

89、(A.State=="run") {</p><p>  this.removeEventListener(Event.ENTER_FRAME,onABall);</p><p>  //兩球之間的角度,改變A球的狀態(tài)</p><p>  vrAngle=Math.atan2(B.y-A.y,B.x-A.x);</p><p&

90、gt;  this.addEventListener(Event.ENTER_FRAME,onBBall,false,0,true);</p><p>  B.State="run";</p><p><b>  }</b></p><p>  if (A.State=="stop") {</p&g

91、t;<p>  this.removeEventListener(Event.ENTER_FRAME,onBBall);</p><p>  //兩球之間的角度,改變A球的狀態(tài) </p><p>  vrAngle=Math.atan2(A.y-B.y,A.x-B.x);</p><p>  this.addEventListener(Event.EN

92、TER_FRAME,onABall);</p><p>  A.State="run";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //A球繞B球旋轉(zhuǎn)</b></p><p

93、>  private function onABall(event:Event):void {</p><p>  if (A.State=="run") {</p><p><b>  //旋轉(zhuǎn)公式</b></p><p>  vrAngle=vrAngle+hi*vrSpeed;//旋轉(zhuǎn)角度每次增加“hit*vrS

94、peed”。hit的正負(fù),表示方向</p><p>  A.x=B.x+Math.cos(vrAngle)*spinRadius;</p><p>  A.y=B.y+Math.sin(vrAngle)*spinRadius;</p><p>  B.State="stop";</p><p><b>  }&l

95、t;/b></p><p><b>  }</b></p><p><b>  //B球繞A球旋轉(zhuǎn)</b></p><p>  private function onBBall(event:Event):void {</p><p>  if (B.State=="run"

96、) {</p><p><b>  //旋轉(zhuǎn)公式</b></p><p>  vrAngle=vrAngle-hit*vrSpeed; //旋轉(zhuǎn)角度每次增加“hit*vrSpeed”。hit的正負(fù),表示方向</p><p>  B.x=A.x+Math.cos(vrAngle)*spinRadius;</p><p> 

97、 B.y=A.y+Math.sin(vrAngle)*spinRadius;</p><p>  A.State="stop";</p><p><b>  }</b></p><p><b>  }</b></p><p>  5.2.2 碰撞檢測(cè)方式</p>&

98、lt;p>  基于距離的碰撞檢測(cè)和基于顯示對(duì)象的碰撞檢測(cè)。對(duì)于Flash的很多版本,影片剪輯里有一個(gè)內(nèi)置的方法為hitTest,現(xiàn)在,它已經(jīng)被更合理的分成了兩種獨(dú)立的方法。hitTestObject方法用于測(cè)試一個(gè)顯示對(duì)象(精靈、影片剪輯等等)是否碰撞到另外一個(gè),hitTestPoint方法用來檢測(cè)一個(gè)指定的點(diǎn)是否碰撞到一個(gè)顯示對(duì)象。而基于距離的碰撞檢測(cè)的基本思路如下:兩個(gè)圓的距離如果小于兩圓半徑只和就可以判定這兩個(gè)圓發(fā)生碰撞了。

99、代碼如下:ball1表示一個(gè)球,ball2表示另一個(gè)球:</p><p>  var dx:Number = ball2.x - ball1.x; //兩者x的差</p><p>  var dy:Number = ball2.y - ball1.y; //兩者y的差</p><p>  var dist:Number = Math.sqrt(dx * dx + d

100、y * dy);//兩者的距離 </p><p>  //如果兩者的而距離大于兩者的半徑和則,輸出碰撞</p><p>  if (dist < ball1.radius + ball2.radius){ </p><p>  trace("hit"); </p><p><b>  }</b>

101、</p><p>  聲音控制,聲音的控制主要使用的是Flash里的media包的Sound類和SoundChannel類進(jìn)行加載和控制。例如加載并使用song.mp3這個(gè)音頻,首先聲明一個(gè)Sound的對(duì)象將音頻加載進(jìn)來:var sound:Sound=new Sound(song.mp3);接著聲明一個(gè)SoundChannel類的對(duì)象:var soundChannel:SoundChannel=new Soun

102、dChannel();然后將控制方式交給soundChannel播放聲音:soundChannel=sound.play();最后停止播放音頻是由soundChannel控制的:soundChannel.stop()。</p><p>  類的關(guān)系:主要的類包括,主角類(TwinsBall.as):主要控制,主角的運(yùn)動(dòng)、響應(yīng)用戶的交互和主角的屬性;球類基類(BaseBall.as):各種球類物品的基類,定義了球類

103、物品的基本屬性;文檔類(StartMain.as):控制游戲的進(jìn)程、關(guān)卡的轉(zhuǎn)換、參數(shù)的傳遞以及響應(yīng)用戶的交互;主界面上時(shí)間軸上的代碼:主要控制界面的轉(zhuǎn)換、數(shù)據(jù)的管理和保存。關(guān)卡類基類(LevleMap.as):關(guān)卡的屬性、碰撞管理、關(guān)卡物品和分?jǐn)?shù)傳遞等。類圖如5.2圖1所示:</p><p><b>  5.2圖1 類圖</b></p><p>  5.2.3 自定義

104、事件</p><p>  在AS3中實(shí)現(xiàn)自定義事件發(fā)送者有多種方法,其本質(zhì)只有一個(gè)EventDispatcher。這里有三種:一是通過繼承來實(shí)現(xiàn);二是通過復(fù)合來實(shí)現(xiàn);三是通過實(shí)現(xiàn)接口來實(shí)現(xiàn)。在AS3事件中有3個(gè)要素,如下5.2圖2所示: </p><p><b>  5.2圖2 類圖</b></p><p>  下面簡(jiǎn)單介紹一下事件的簡(jiǎn)單用法,

105、addEventListener事件監(jiān)聽傳遞參數(shù),例如下面的就是一個(gè)簡(jiǎn)單的例子:</p><p>  var sayHello:String = "how are you";</p><p>  btn1.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,say

106、Hello)});</p><p>  function clickHandlerWithArg(e:MouseEvent,arg:String):void</p><p><b>  {</b></p><p>  var out:String= e.target + "發(fā)出事件(有參數(shù)) :" + arg;</p&

107、gt;<p>  trace(out);</p><p><b>  }</b></p><p>  其實(shí)發(fā)消息的時(shí)候傳參數(shù)在2.0里面是很方便的,但3.0里面要去寫一個(gè)類去繼承Event這個(gè)類,感覺麻煩了許多,在我學(xué)習(xí)3.0的初期一直不是 很理解到了3.0為什么變復(fù)雜了,所以剛開始經(jīng)常會(huì)用到擴(kuò)展Event這個(gè)類,但到后來發(fā)現(xiàn)只要程序的架構(gòu)寫好了,這種方

108、法是可有可無了,不過今天還是要 講解這種方法的使用.我們先寫一個(gè)繼承Event的類:</p><p>  package net.smilecn{ </p><p>  import flash.events.Event; </p><p>  public class MyEvent extends Event{ </p><p>  pr

109、ivate var _object:Object; </p><p>  public function MyEvent(type:String,object:Object):void{ </p><p>  super(type); </p><p>  _object=object; </p><p><b>  } </

110、b></p><p>  public function get param():Object { </p><p>  return _object; </p><p><b>  } </b></p><p><b>  } </b></p><p><b&g

111、t;  }</b></p><p>  這個(gè)一個(gè)很簡(jiǎn)單的類,繼承了Event這個(gè)類,在構(gòu)造方法里有一個(gè)super(type),super的意思是執(zhí)行父類的構(gòu)造方法,也就是執(zhí)行Event 的構(gòu)造,type是消息的類型,就是消息的名字,一個(gè)字符串,object就是我們要傳的參數(shù)要用到的一個(gè)變量,是一個(gè)對(duì)象,我們知道對(duì)象是很方便的,可 以存儲(chǔ)1到多個(gè)參數(shù),下面是一個(gè)GET方法,通過param這個(gè)名字去取_o

112、bject這個(gè)對(duì)像的值.再來看一下怎么用這個(gè)MyEvent類,修改上一節(jié)中的文件MyClass:</p><p>  package net.smilecn{ </p><p>  import flash.display.Sprite; </p><p>  import flash.events.MouseEvent; </p><p>

113、  import net.smilecn.MyEvent; </p><p>  public class MyClass extends Sprite{ </p><p>  public function MyClass(){ </p><p>  addEventListener(MouseEvent.CLICK,clickHnadler); </p&g

114、t;<p><b>  } </b></p><p>  private function clickHnadler(event:MouseEvent):void{ </p><p>  dispatchEvent(new MyEvent("myClassMessage",{a:100,b:200})); </p>&

115、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  我們發(fā)現(xiàn)修改代碼并不多,由new Event變成了net MyEvent,也就是說以前發(fā)的消息是as自帶的Event事件,現(xiàn)在發(fā)的是我們自己寫的MyEvent事件

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論