国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AS3的深海射擊游戲的設(shè)計與實現(xiàn)

2012-08-08 12:48:30朱冬玲
電腦與電信 2012年8期
關(guān)鍵詞:時間軸關(guān)鍵幀游動

朱冬玲

(廣州城市職業(yè)學(xué)院,廣東 廣州 510405)

1.引言

ActionScript 3(簡稱AS3)是Flash新一代腳本語言,全面支持面向?qū)ο缶幊虣C制,新增了很多強大功能,在新一代AS引擎AVM2上的執(zhí)行速度比舊代碼快10倍。借助于AS3的強大編程功能,一些以前用C++實現(xiàn)的游戲現(xiàn)可用Flash實現(xiàn),而且在實現(xiàn)技術(shù)上有鮮明特色。在二維游戲和網(wǎng)頁游戲領(lǐng)域,F(xiàn)lash游戲的主流地位更加鞏固了。

用Flash AS3實現(xiàn)的深海射擊游戲模仿一個街機賭博游戲的功能,以網(wǎng)頁游戲的形式供人們無限制免費玩,使人們在娛樂身心時免于掉進賭博陷阱。

2.游戲的設(shè)計

2.1 游戲的功能

本游戲用魚炮來捕魚。魚炮的威力分為7級,每級的殺傷力和消耗的炮彈數(shù)不同,可用空格鍵切換魚炮等級,移動鼠標(biāo)旋轉(zhuǎn)魚炮瞄準(zhǔn),單擊鼠標(biāo)左鍵發(fā)射炮彈。魚有12種,每種魚的質(zhì)量、速度、生命力、出現(xiàn)概率、分數(shù)各不相同。飛行的炮彈擊中魚后,會撒出魚網(wǎng),魚網(wǎng)覆蓋范圍內(nèi)的魚的生命力都會減小,生命力降為零的魚被捕獲。游戲分為快速、簡單、普通、困難四種模式。游戲以一群水手商量出海捕魚賺錢開始,經(jīng)過航行選擇捕魚海域、選擇主炮手后,開始捕魚,最后或成功歡慶,或失敗沮喪。

2.2 游戲場景與主時間軸上關(guān)鍵幀的設(shè)計

游戲具有加載XML數(shù)據(jù)、主菜單、查看幫助、選擇游戲模式、航海選擇捕魚海域、選擇主炮手、游戲主場景、成功歡慶、失敗沮喪共9個場景,相應(yīng)地在主時間軸上設(shè)置9個關(guān)鍵幀,名稱分別是 loadxml、menu、help、chmode、navigate、setplayer、playgame、gamewin、gamelose。這些關(guān)鍵幀不會連續(xù)播放,在程序中用gotoAndStop函數(shù)實現(xiàn)不同場景的切換。游戲場景與關(guān)鍵幀的一一對應(yīng),使主時間軸具有清晰的幀結(jié)構(gòu),便于開發(fā)人員的交流與合作,也利于游戲的集成和功能擴展。

3.游戲的實現(xiàn)

3.1 主時間軸上關(guān)鍵幀的實現(xiàn)

為避免幀代碼互相干擾和便于模塊集成,除在第1幀定義少量用于在各幀之間交換數(shù)據(jù)的變量外,其余各幀都不編寫幀代碼,也不直接放置界面元素,而是創(chuàng)建一個影片剪輯類型的元件,并把該元件鏈接到自己編寫的類。該元件的寬和高均設(shè)置為1,直接添加到幀的左上角,不需作更多的編輯修改。9個關(guān)鍵幀對應(yīng)的類分別是LoadXML類、Menu類、HelpScreen 類、ChMode類、Navigate類、SetPlayer類、Game類、GameWin類、GameLose類。由于幀的界面和行為都用類來實現(xiàn),軟件模塊之間高內(nèi)聚、低耦合,模塊易集成、易維護、易重用。

3.2 游戲元件類的實現(xiàn)

游戲界面中涉及的元件很多,在這里介紹幾種不斷移動的元件類的實現(xiàn)。

使魚平順自然地游動是一個難點,有些游戲用Flash CS提供的Tween類中的方法來實現(xiàn),但游動路徑不夠靈活多變。事實上,這屬于人工智能范疇的轉(zhuǎn)向行為,已有成熟算法。在參考文獻[3]中,有相應(yīng)的AS3實現(xiàn)代碼,用機車類Vehicle代表恒速的物體,用轉(zhuǎn)向機車類SteeredVehicle代表有加速度的物體。子彈和金銀幣以固定速度飛行,可以繼承Vehicle類。魚在游動過程中會改變速率和方向,可以繼承SteeredVehicle類。幾種主要元件類的繼承關(guān)系如圖1所示。

圖1 類的繼承關(guān)系

3.3 主場景的實現(xiàn)

主場景分為初始狀態(tài)、進行狀態(tài)、結(jié)束狀態(tài),各用一個符號常量表示,再用一個變量gameState來代表當(dāng)前狀態(tài)。在Game類的構(gòu)造方法中,完成界面布置、啟動幀事件監(jiān)聽等操作。在幀事件監(jiān)聽方法中,根據(jù)當(dāng)前狀態(tài)的不同值分別調(diào)用initGame、playGame或endGame方法。在initGame方法中,設(shè)置變量初值,啟動鼠標(biāo)、鍵盤、定時器等事件監(jiān)聽,然后轉(zhuǎn)換到進行狀態(tài)。在playGame方法中,根據(jù)游戲邏輯完成生成對象、移動對象、碰撞檢測等操作。在endGame方法中,取消事件監(jiān)聽,根據(jù)游戲結(jié)果修改全局變量,然后跳轉(zhuǎn)到成功歡慶場景或失敗沮喪場景。Game類的結(jié)構(gòu)如下:

3.4 游戲特征參數(shù)數(shù)據(jù)組織

游戲的特征參數(shù)包括游戲模式參數(shù)、魚參數(shù)、玩家參數(shù)、魚游動路徑座標(biāo)參數(shù)、魚陣座標(biāo)參數(shù)等。以XML格式描述各種游戲特征參數(shù),放在game.xml文件中。定義了一個Data類,用于保存從game.xml文件讀入的游戲特征參數(shù),并可供其它程序模塊訪問。LoadXML類用于把游戲特征參數(shù)從game.xml文件讀到Data類中。

3.5 時間復(fù)雜度分析

在主場景的進行狀態(tài),每幀都要執(zhí)行playGame方法,按一定概率生成魚,讓全部魚游動,讓全部子彈飛行,讓全部金銀幣飛行,作碰撞檢測。

3.5.1 魚的游動

魚的游動主要用了搜尋、漫游、路徑追隨3種轉(zhuǎn)向行為,時間復(fù)雜度都是O(1)。每條魚都執(zhí)行轉(zhuǎn)向行為算法,如果有n條魚,則一幀中全部魚游動的時間復(fù)雜度為O(n)。

3.5.2 子彈和金銀幣的飛行

子彈和金銀幣以恒定速度移動的時間復(fù)雜度也是O(1)。每顆子彈和每個金銀幣都執(zhí)行移動算法,如果有n顆子彈或n個金銀幣,則一幀中全部子彈或金銀幣移動的時間復(fù)雜度為O(n)。

3.5.3 碰撞檢測

魚和子彈的碰撞檢測用兩重循環(huán)逐個檢查的方法。如果在飛的子彈有m顆,魚有n條,則時間復(fù)雜度是O(mn)。發(fā)現(xiàn)碰撞后釋放漁網(wǎng),這時需要檢測漁網(wǎng)與所有魚的碰撞,時間復(fù)雜度有可能變成O(mn2)。為降低時間復(fù)雜度,在發(fā)現(xiàn)一次碰撞并釋放漁網(wǎng)后,馬上退出兩重循環(huán),時間復(fù)雜度是O(mn)+O(n)即仍是 O(mn)。

4.結(jié)束語

該游戲運行穩(wěn)定流暢,占用系統(tǒng)資源不多。而且,架構(gòu)清晰合理,程序模塊之間、程序與數(shù)據(jù)之間實現(xiàn)松耦合,具有易集成、易維護、易重用等優(yōu)點,其設(shè)計和實現(xiàn)方法都可供其它游戲借鑒。

[1]Gary Rosenzweig.ActionScript 3.0 Game Programming University[M].USA:QUE Publishing,2008.

[2]Jeff Fulton,Steve Fulton.The Essential Guide to Flash Games[M].USA:friendsof ED,2010.

[3]Keith Peters.Flash ActionScript 3.0動畫高級教程[M].蘇金國等譯.北京:人民郵電出版社,2010.

猜你喜歡
時間軸關(guān)鍵幀游動
永不停歇的魚
時間軸上二階非線性非自治延遲動力系統(tǒng)的振動性
球軸承用浪型保持架徑向游動量的測量
哈爾濱軸承(2021年1期)2021-07-21 05:43:16
把手放進袋子里
時間軸里的“共和國記憶”
金橋(2019年12期)2019-08-13 07:16:28
基于改進關(guān)鍵幀選擇的RGB-D SLAM算法
基于相關(guān)系數(shù)的道路監(jiān)控視頻關(guān)鍵幀提取算法
時間軸在歷史教學(xué)中的應(yīng)用
基于聚散熵及運動目標(biāo)檢測的監(jiān)控視頻關(guān)鍵幀提取
論“關(guān)鍵幀”在動畫制作中的作用
乐陵市| 莒南县| 玉树县| 垦利县| 明溪县| 瓦房店市| 桃园县| 康马县| 朝阳县| 新乡市| 祁连县| 五莲县| 湛江市| 高台县| 大丰市| 蒙山县| 丽江市| 图木舒克市| 长丰县| 通辽市| 高碑店市| 德清县| 娄烦县| 建水县| 东安县| 额济纳旗| 元谋县| 呼玛县| 汾西县| 玛沁县| 奈曼旗| 丰都县| 庄河市| 镇远县| 鄂托克旗| 凤山县| 吴堡县| 桦南县| 盘山县| 定兴县| 凤山市|