999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AS3的深海射擊游戲的設計與實現

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

朱冬玲

(廣州城市職業學院,廣東 廣州 510405)

1.引言

ActionScript 3(簡稱AS3)是Flash新一代腳本語言,全面支持面向對象編程機制,新增了很多強大功能,在新一代AS引擎AVM2上的執行速度比舊代碼快10倍。借助于AS3的強大編程功能,一些以前用C++實現的游戲現可用Flash實現,而且在實現技術上有鮮明特色。在二維游戲和網頁游戲領域,Flash游戲的主流地位更加鞏固了。

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

2.游戲的設計

2.1 游戲的功能

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

2.2 游戲場景與主時間軸上關鍵幀的設計

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

3.游戲的實現

3.1 主時間軸上關鍵幀的實現

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

3.2 游戲元件類的實現

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

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

圖1 類的繼承關系

3.3 主場景的實現

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

3.4 游戲特征參數數據組織

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

3.5 時間復雜度分析

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

3.5.1 魚的游動

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

3.5.2 子彈和金銀幣的飛行

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

3.5.3 碰撞檢測

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

4.結束語

該游戲運行穩定流暢,占用系統資源不多。而且,架構清晰合理,程序模塊之間、程序與數據之間實現松耦合,具有易集成、易維護、易重用等優點,其設計和實現方法都可供其它游戲借鑒。

[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.

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
游戲五計算
主站蜘蛛池模板: 亚洲国产成人在线| 香蕉视频在线观看www| 99精品国产自在现线观看| 天堂va亚洲va欧美va国产| 国产精品亚洲专区一区| 欧美激情首页| 国产大片黄在线观看| 日韩a级片视频| 婷婷伊人五月| 视频一区亚洲| 国产成年女人特黄特色毛片免 | 777午夜精品电影免费看| 精品综合久久久久久97| 婷婷亚洲天堂| 国产精品毛片一区| 国产91线观看| 九九热精品视频在线| 91网址在线播放| 91网站国产| 在线不卡免费视频| 在线观看免费黄色网址| a国产精品| 国产免费福利网站| 欧美日韩国产在线人| 中国一级特黄大片在线观看| 美美女高清毛片视频免费观看| 亚洲中字无码AV电影在线观看| 不卡无码h在线观看| 伊人国产无码高清视频| 精品三级网站| 91久久大香线蕉| 先锋资源久久| 97影院午夜在线观看视频| 五月丁香伊人啪啪手机免费观看| 精品国产美女福到在线不卡f| 亚洲男人天堂2020| 97精品伊人久久大香线蕉| 5555国产在线观看| 老司国产精品视频91| 亚洲三级视频在线观看| 欧美视频在线播放观看免费福利资源| 国产精品专区第一页在线观看| 精品久久久久无码| 2020国产免费久久精品99| 精品少妇人妻一区二区| AV无码无在线观看免费| 伊人大杳蕉中文无码| 91精品国产91欠久久久久| 秋霞国产在线| 亚洲精品成人片在线观看| 真实国产乱子伦视频 | 国产H片无码不卡在线视频 | 婷婷色婷婷| 国产浮力第一页永久地址| 中文一级毛片| 亚洲最大福利网站| 亚洲床戏一区| a亚洲视频| 国产激情无码一区二区APP| 五月婷婷激情四射| 亚洲高清无码精品| 黄色污网站在线观看| 亚洲国产黄色| 国产成人a在线观看视频| 欧美亚洲国产一区| 久久精品欧美一区二区| 国产新AV天堂| 又粗又硬又大又爽免费视频播放| 亚洲精品第五页| 日本91视频| 亚洲爱婷婷色69堂| 国产91高清视频| 国产精品无码影视久久久久久久 | 亚洲人成网18禁| 亚洲日韩AV无码一区二区三区人| 国产精品yjizz视频网一二区| 华人在线亚洲欧美精品| 成人年鲁鲁在线观看视频| 日韩高清中文字幕| 精品一区二区三区水蜜桃| 伊人久久精品亚洲午夜| 久爱午夜精品免费视频|