亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        朱冬玲

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

        1.引言

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

        用Flash AS3實(shí)現(xiàn)的深海射擊游戲模仿一個(gè)街機(jī)賭博游戲的功能,以網(wǎng)頁游戲的形式供人們無限制免費(fèi)玩,使人們?cè)趭蕵飞硇臅r(shí)免于掉進(jìn)賭博陷阱。

        2.游戲的設(shè)計(jì)

        2.1 游戲的功能

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

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

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

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

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

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

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

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

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

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

        3.3 主場(chǎng)景的實(shí)現(xiàn)

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

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

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

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

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

        3.5.1 魚的游動(dòng)

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

        3.5.2 子彈和金銀幣的飛行

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

        3.5.3 碰撞檢測(cè)

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

        4.結(jié)束語

        該游戲運(yùn)行穩(wěn)定流暢,占用系統(tǒng)資源不多。而且,架構(gòu)清晰合理,程序模塊之間、程序與數(shù)據(jù)之間實(shí)現(xiàn)松耦合,具有易集成、易維護(hù)、易重用等優(yōu)點(diǎn),其設(shè)計(jì)和實(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動(dòng)畫高級(jí)教程[M].蘇金國等譯.北京:人民郵電出版社,2010.

        猜你喜歡
        游戲
        做游戲
        夜間游戲
        游戲
        送信游戲
        數(shù)獨(dú)游戲
        瘋狂的游戲
        飛碟探索(2016年11期)2016-11-14 19:34:47
        爆笑游戲
        第八章直接逃出游戲
        第八章 直接逃出游戲
        游戲五計(jì)算
        懂色av一区二区三区网久久| 久久久国产精品ⅤA麻豆| 欧美成人精品三级在线观看| 免费一区二区三区av| 国产一区亚洲二区三区极品 | 国产午夜在线观看视频播放| 青青草原亚洲在线视频| 国产成人亚洲一区二区| 性高朝大尺度少妇大屁股| 日韩在线无| 国产av乳头久久一区| 国产人妖网站在线视频| 丰满少妇一区二区三区专区| 一区二区三区在线少妇| 一进一出一爽又粗又大| 亚洲国产韩国欧美在线| 性做久久久久久久| 蜜桃av在线播放视频| 乱老年女人伦免费视频| 国产精品人妻一区夜夜爱| 无码av永久免费大全| 麻豆国产av在线观看| 亚洲国产精品无码专区| 国产精品片211在线观看| 久久精品国产亚洲av成人无人区| 又黄又刺激的网站久久| 中日韩精品视频在线观看 | 九色精品国产亚洲av麻豆一| 少妇连续高潮爽到抽搐| 国产av丝袜旗袍无码网站| 中国亚洲女人69内射少妇| 久久青青草视频免费观看| 国产91色综合久久高清| 欧美另类高清zo欧美| 久久国产乱子伦精品免费强| 国产大屁股熟女流白浆一区二区| 久久狠狠爱亚洲综合影院| 怡春院欧美一区二区三区免费| 亚洲一区二区精品在线看| 国产人成视频在线视频| 国产美女露脸口爆吞精|