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
游戲五計算
主站蜘蛛池模板: 在线播放精品一区二区啪视频 | 伊人成人在线| 国产成人久久777777| 亚洲一区色| 亚洲一欧洲中文字幕在线| 综合天天色| 思思热精品在线8| 女人18一级毛片免费观看| 色悠久久久久久久综合网伊人| 精品一區二區久久久久久久網站| 久久久久国产精品嫩草影院| 视频二区国产精品职场同事| 欧美日韩福利| 欧美一区国产| 91在线精品麻豆欧美在线| 美女视频黄频a免费高清不卡| 国产丝袜一区二区三区视频免下载| 国产日韩丝袜一二三区| 奇米影视狠狠精品7777| 亚洲欧美成aⅴ人在线观看| 国产女人爽到高潮的免费视频| 国产91精品调教在线播放| 亚洲日韩AV无码精品| 无码精油按摩潮喷在线播放| 韩国v欧美v亚洲v日本v| 久久精品国产精品一区二区| m男亚洲一区中文字幕| 免费A级毛片无码无遮挡| 国产欧美在线观看精品一区污| 久热精品免费| 欧美日韩中文字幕在线| 国产日本一区二区三区| 999在线免费视频| 欧美区一区| 久久精品视频亚洲| 国产精品成人啪精品视频| 91精品国产丝袜| 色综合天天操| 97在线观看视频免费| 美女免费黄网站| 无码视频国产精品一区二区| 高清码无在线看| 国内老司机精品视频在线播出| 美女被躁出白浆视频播放| 99爱视频精品免视看| 国产97公开成人免费视频| 日韩欧美中文| 国产肉感大码AV无码| 就去色综合| 亚洲综合九九| 欧美精品高清| a在线观看免费| 国产乱子伦视频在线播放 | 国产在线精品美女观看| 亚洲综合网在线观看| 少妇高潮惨叫久久久久久| 国产一级精品毛片基地| 六月婷婷综合| 日韩经典精品无码一区二区| 国产成人久久综合777777麻豆| 欧美成人日韩| 日本AⅤ精品一区二区三区日| 亚洲成人动漫在线观看 | 在线无码九区| 国产日本欧美在线观看| 国产成人夜色91| 一区二区午夜| 久久久久免费精品国产| 欧美成人二区| 欧美黑人欧美精品刺激| 青草视频网站在线观看| 欧美区一区| 国产成人无码Av在线播放无广告| 国产特级毛片aaaaaa| 欧美黑人欧美精品刺激| 亚洲天堂日本| 亚洲娇小与黑人巨大交| 精品国产一二三区| 婷婷五月在线视频| 亚洲色无码专线精品观看| 天堂成人在线| 伊人婷婷色香五月综合缴缴情 |