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

        ?

        基于Android的飛行射擊游戲的模擬

        2014-10-21 14:24:29臧利萍劉燕美高振
        電子世界 2014年12期
        關(guān)鍵詞:多線(xiàn)程傳感器

        臧利萍 劉燕美 高振

        【摘要】針對(duì)Android平臺(tái)下游戲?qū)崟r(shí)交互的特點(diǎn),本文使用SurfaceView進(jìn)行界面布局的構(gòu)建,采用矩形碰撞檢測(cè)進(jìn)行算法分析,以數(shù)組、list、HashMap等進(jìn)行數(shù)據(jù)的存儲(chǔ)和更新。本文以Java多線(xiàn)程技術(shù)為開(kāi)發(fā)的關(guān)鍵技術(shù)。本文使用觸屏、鍵盤(pán)和重力傳感器三種控制方式,實(shí)現(xiàn)了游戲場(chǎng)景、游戲難度的選擇,游戲背景音樂(lè)、音效和震動(dòng)效果的設(shè)置以及白天模式和夜間模式兩種適合不同光照條件的游戲模式。

        【關(guān)鍵詞】Android;飛行射擊游戲;多線(xiàn)程;傳感器

        一、緒論

        Android是Google公司針對(duì)手機(jī)等移動(dòng)終端設(shè)備設(shè)計(jì)的開(kāi)源平臺(tái),該平臺(tái)基于Linux內(nèi)核,有操作系統(tǒng)、中間層、用戶(hù)界面層和應(yīng)用程序組成,是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的操作系統(tǒng)。該平臺(tái)以其開(kāi)放性、平等性、無(wú)界性、方便性和硬件豐富性受到用戶(hù)和開(kāi)發(fā)者的青睞,并迅速占領(lǐng)移動(dòng)終端市場(chǎng)[1]。該平臺(tái)呈現(xiàn)眾多應(yīng)用程序。射擊類(lèi)游戲是一種較成熟的游戲類(lèi)型,在移動(dòng)手機(jī)中飛行射擊類(lèi)游戲更是受到用戶(hù)的特別青睞。隨著Android平臺(tái)的發(fā)展和移動(dòng)設(shè)備硬件水平的不斷提高,無(wú)論是在數(shù)量上還是質(zhì)量上,Android游戲手機(jī)游戲都得到很大的發(fā)展,優(yōu)秀的2D、3D游戲?qū)映霾桓F[2]。本文是基于Android平臺(tái)設(shè)計(jì)一款飛行射擊類(lèi)游戲。

        本游戲使用Android中的SurfaceView作為主要視圖,采用矩形碰撞檢測(cè)作為游戲的主要碰撞檢測(cè)算法。游戲涉及Android圖形處理、數(shù)據(jù)存儲(chǔ)、多媒體開(kāi)發(fā)、傳感器開(kāi)發(fā)、Android進(jìn)程內(nèi)部通信和Java集合框架的應(yīng)用。

        游戲提供了觸屏、鍵盤(pán)和重力傳感器三種控制方式,實(shí)現(xiàn)了游戲場(chǎng)景、游戲難度的選擇,游戲背景音樂(lè)、音效和震動(dòng)效果的設(shè)置以及白天模式和夜間模式兩種適合不同光照條件的游戲模式。

        二、游戲設(shè)計(jì)

        1.界面設(shè)計(jì)

        本游戲的主要包括歡迎界面、菜單界面、幫助界面、游戲界面、設(shè)置界面、游戲勝利界面、游戲失敗界面等。其中游戲界面采用SurfaceView視圖,該視圖下采用onTouchEvent、onKeyUp、onKeyDown回調(diào)方法捕獲用戶(hù)輸入,實(shí)現(xiàn)人機(jī)交互。SurfaceView在使用時(shí)通過(guò)SurfaceHolder管理,SurfaceHolder通過(guò)其內(nèi)部接口CallBack實(shí)現(xiàn)對(duì)SurfaceView狀態(tài)變化的監(jiān)聽(tīng),從而實(shí)現(xiàn)對(duì)Surfaceview的管理[4]。SurfaceView用來(lái)保存界面像素信息,游戲界面的構(gòu)建、敵機(jī)、我機(jī)、子彈等繪制工作由SurfaceHolder完成。SurfaceView運(yùn)用雙緩沖技術(shù)實(shí)現(xiàn)界面繪制,提高界面繪制的實(shí)時(shí)性和交互性。

        2.界面功能

        游戲控制方式:游戲提供觸屏控制、傳感器控制、鍵盤(pán)控制三種控制方式。本文重點(diǎn)描述傳感器控制的過(guò)程。游戲通過(guò)調(diào)用相關(guān)的方法獲得傳感器服務(wù),該方法返回一個(gè)負(fù)責(zé)管理移動(dòng)終端設(shè)備的傳感器對(duì)象,并且提供了訪(fǎng)問(wèn)設(shè)備支持的傳感器的方法。Android系統(tǒng)提供了一個(gè)對(duì)傳感器數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控的類(lèi)[5]。在傳感器對(duì)象中利用該對(duì)象的方法以特定的頻率監(jiān)聽(tīng)傳感器數(shù)據(jù)的更新。

        游戲設(shè)置:主要實(shí)現(xiàn)游戲背景音樂(lè)、音效、震動(dòng)效果等設(shè)置,游戲控制方式設(shè)置,游戲模式(白天模式和夜間模式)設(shè)置。Andriod對(duì)音頻文件的處理主要通過(guò)MediaPlayer和soundpool實(shí)現(xiàn)。MediaPlayer具有資源占用率高、延遲時(shí)間較長(zhǎng),不支持同時(shí)播放多個(gè)音頻文件的特點(diǎn)[6]。考慮到游戲音樂(lè)實(shí)時(shí)性、多變性等特點(diǎn)Soundpool成為播放音效文件的最佳選擇,它支持多個(gè)音樂(lè)文件的同時(shí)播放。

        游戲場(chǎng)景與難度選擇:實(shí)現(xiàn)不同游戲場(chǎng)景的選擇,實(shí)現(xiàn)游戲難度(容易、中等、困難)的選擇,保存游戲進(jìn)行到一半的信息。本文采用SQLite存儲(chǔ)游戲相關(guān)的數(shù)據(jù)。SQLite是Android系統(tǒng)內(nèi)嵌的一個(gè)非常優(yōu)秀輕型的數(shù)據(jù)庫(kù),它占用資源非常的低[7],支持目前市面上主流的操作系統(tǒng),同時(shí)又能夠跟很多程序語(yǔ)言相結(jié)合,與其他開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng)如MySql相比,SQLite具有更快的處理速度。

        三、游戲碰撞檢測(cè)

        碰撞檢測(cè)是游戲開(kāi)發(fā)中的重要組成部分,游戲開(kāi)發(fā)中常用的碰撞檢測(cè)技術(shù)有矩形碰撞、圓形碰撞、像素碰撞等[8]。

        矩形碰撞就是利用兩個(gè)矩形之間的位置關(guān)系來(lái)進(jìn)行判斷,如果一個(gè)矩形的像素和另外一個(gè)矩形有公共部分,就可以認(rèn)為這兩個(gè)矩形發(fā)生了碰撞[9]。

        圓形碰撞是利用兩個(gè)圓形的圓心距與這兩個(gè)圓的半徑之和的大小關(guān)系進(jìn)行判定的;當(dāng)兩圓的圓心距小于兩圓半徑之和,則判定發(fā)生了碰撞,否則,沒(méi)有發(fā)生碰撞。

        像素碰撞是通過(guò)檢測(cè)兩個(gè)對(duì)象的像素是否有重復(fù)判斷碰撞的一種碰撞檢測(cè)技術(shù),由于這種方法造成代碼效率低下,在游戲開(kāi)發(fā)中是不推薦使用的。實(shí)際的應(yīng)用中常用多矩形或多圓形的檢測(cè)方式來(lái)代替。分析飛機(jī)射擊游戲交互性和實(shí)時(shí)性的特點(diǎn),本文采用矩形碰撞技術(shù)實(shí)現(xiàn)碰撞檢測(cè),其實(shí),兩個(gè)矩形不發(fā)生碰撞的情況就只有以下四種,處理這四種情況外,其他的位置關(guān)系都應(yīng)判定為發(fā)生了碰撞。

        四、多線(xiàn)程技術(shù)

        1.進(jìn)程與線(xiàn)程

        進(jìn)程就是一個(gè)有自己獨(dú)立的內(nèi)存空間和系統(tǒng)資源的執(zhí)行中的程序。線(xiàn)程是一段完成某個(gè)特定功能的代碼[10]。同類(lèi)的多個(gè)線(xiàn)程共享內(nèi)存空間和系統(tǒng)資源,所以系統(tǒng)在線(xiàn)程之間切換時(shí),系統(tǒng)開(kāi)銷(xiāo)占用要比進(jìn)程小得多,正因如此,線(xiàn)程也被稱(chēng)為輕量級(jí)進(jìn)程。進(jìn)程和線(xiàn)程之間是一對(duì)多的關(guān)系[11]。

        基于Android操作系統(tǒng)而言,每個(gè)組件都是一個(gè)進(jìn)程,進(jìn)程之間通過(guò)IBinder對(duì)象進(jìn)行通信,進(jìn)程內(nèi)部通過(guò)Handler實(shí)現(xiàn)線(xiàn)程間的通信[12]。主線(xiàn)程主要工作是負(fù)責(zé)維護(hù)組件對(duì)象和應(yīng)用程序創(chuàng)建的窗口,以及更新主界面,如果組件在應(yīng)用程序中創(chuàng)建了自己的線(xiàn)程,子線(xiàn)程無(wú)法對(duì)用戶(hù)界面進(jìn)行更改,只能通過(guò)handler與主線(xiàn)程進(jìn)行交互,實(shí)現(xiàn)用戶(hù)界面的更新。

        2.游戲中多線(xiàn)程實(shí)現(xiàn)

        多線(xiàn)程技術(shù)是本游戲設(shè)計(jì)的關(guān)鍵技術(shù),多線(xiàn)程的思想在游戲的各個(gè)界面都有體現(xiàn),其中以游戲界面體現(xiàn)最為顯著。游戲界面中除了主線(xiàn)程之外還存在計(jì)數(shù)器線(xiàn)程、傳感器事件處理線(xiàn)程、鍵盤(pán)事件處理線(xiàn)程、游戲邏輯處理線(xiàn)程和界面繪制線(xiàn)程,這些線(xiàn)程都是以?xún)?nèi)部類(lèi)的形式創(chuàng)建的,方便實(shí)現(xiàn)線(xiàn)程同步。其中計(jì)數(shù)器線(xiàn)程負(fù)責(zé)對(duì)游戲時(shí)間軸計(jì)數(shù)器的維護(hù),傳感器數(shù)據(jù)處理線(xiàn)程只有在啟用傳感器時(shí)才存在并運(yùn)行在系統(tǒng)中,傳感器事件處理線(xiàn)程通過(guò)以一定的時(shí)間間隔獲取并處理傳感器事件數(shù)據(jù)控制我機(jī)的移動(dòng),鍵盤(pán)事件處理線(xiàn)程負(fù)責(zé)處理用戶(hù)鍵盤(pán)事件,游戲邏輯處理線(xiàn)程負(fù)責(zé)游戲中所有元素(敵機(jī)的移動(dòng)、碰撞檢測(cè)、敵機(jī)計(jì)數(shù)器的檢測(cè),武器的移動(dòng)邏輯和碰撞檢測(cè)等等)的邏輯處理。界面繪制線(xiàn)程負(fù)責(zé)游戲界面中所有游戲元素的繪制工作。

        同時(shí),設(shè)計(jì)線(xiàn)程對(duì)象的初始化和啟動(dòng)工作在onCreate方法中處理,線(xiàn)程的銷(xiāo)毀工作在onDestroyed方法中,保證線(xiàn)程只在游戲界面可見(jiàn)的時(shí)候才存在和運(yùn)行,防止用戶(hù)不當(dāng)操作造成線(xiàn)程意外死亡或重建。

        五、游戲測(cè)試

        圖1 歡迎界面測(cè)試效果圖

        圖2為游戲菜單界面,共有六個(gè)選項(xiàng)供玩家選擇。

        圖2 菜單界面測(cè)試效果圖

        圖3為游戲場(chǎng)景選擇界面,選擇玩家喜歡或者想挑戰(zhàn)的場(chǎng)景。

        圖3 場(chǎng)景選擇界面測(cè)試效果圖

        圖4為游戲設(shè)置界面,玩家可以選擇自己喜歡的模式以及操作方式。

        圖4 設(shè)置界面測(cè)試效果圖

        圖5 游戲界面測(cè)試效果圖

        圖5為游戲界面的測(cè)試效果圖,該界面有敵方和我方的裝備、武器、爆炸以及一些魔法。

        參考文獻(xiàn)

        [1]李華明.Android游戲開(kāi)發(fā)之從零開(kāi)始[M].清華大學(xué)出版社,2011.

        [2]李剛.瘋狂Android講義精粹[M].電子工業(yè)出版社,2012.

        [3]何晨光, 李洪剛.Android編程入門(mén)經(jīng)典[M].清華大學(xué)出版社,2012.

        [4]熊斌編.Android多媒體開(kāi)發(fā)技術(shù)實(shí)戰(zhàn)詳解[M].電子工業(yè)出版社,2012.

        [5]范懷宇.Android開(kāi)發(fā)精要[M].機(jī)械工業(yè)出版社,2012.

        [6]楊明羽.Android語(yǔ)法范例參考大全[M].電子工業(yè)出版社,2012.

        [7]吳亞峰,蘇亞光.Android游戲開(kāi)發(fā)大全[M].人民郵電出版社,2012.

        [8]李剛.瘋狂Java講義精粹[M].電子工業(yè)出版社,2012.

        [9]楊豐盛.Android應(yīng)用開(kāi)發(fā)揭秘[M].機(jī)械工業(yè)出版社,2010.

        [10]埃克爾,陳昊鵬.Thinking in java[M].機(jī)械工業(yè)出版社,2007.

        [11]葉乃文,鄺勁筠,杜永萍.Java核心技術(shù)[M].電子工業(yè)出版社,2011.

        [12]http://developer.android.com/develop/index.html.

        項(xiàng)目來(lái)源:河南省重點(diǎn)科技攻關(guān)計(jì)劃項(xiàng)目(編號(hào):132102210054)。

        作者簡(jiǎn)介:臧利萍(1984—),女,河南焦作人,碩士,助教,現(xiàn)供職于鄭州航空工業(yè)管理學(xué)院,主要從事計(jì)算機(jī)圖形、虛擬現(xiàn)實(shí)等計(jì)算機(jī)應(yīng)用教學(xué)研究。

        猜你喜歡
        多線(xiàn)程傳感器
        康奈爾大學(xué)制造出可拉伸傳感器
        簡(jiǎn)述傳感器在物聯(lián)網(wǎng)中的應(yīng)用
        電子制作(2019年22期)2020-01-14 03:16:52
        “傳感器新聞”會(huì)帶來(lái)什么
        跟蹤導(dǎo)練(三)2
        Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
        基于多線(xiàn)程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        網(wǎng)頁(yè)爬蟲(chóng)技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線(xiàn)程的高速磁盤(pán)鏡像算法
        漂亮人妻被强中文字幕乱码| 国产精品嫩草影院AV| 国产成人av在线影院无毒| 精品人妻一区二区视频| 又硬又粗进去好爽免费| 国产98在线 | 日韩| 国产一级免费黄片无码AV| 久久久精品国产亚洲av网不卡| 日本免费大片一区二区| 久久久久波多野结衣高潮| 久久免费区一区二区三波多野在| 成人免费毛片在线播放| 色吧噜噜一区二区三区| 樱桃视频影视在线观看免费| 麻豆AV免费网站| 精品午夜中文字幕熟女| 在线精品亚洲一区二区动态图| 免费a级毛片无码a∨免费软件| 亚洲日本在线va中文字幕| 精品女厕偷拍视频一区二区区| 日本爽快片100色毛片| 波多野结衣免费一区视频| 久久久9色精品国产一区二区三区| 日本视频一区二区三区在线观看| 久久久亚洲精品无码| 亚洲一区二区在线| 亚洲精品一区二区三区日韩 | 日本一道dvd在线中文字幕 | 久久久久久久人妻无码中文字幕爆| 女同中的p是什么意思| 白白色最新福利视频二| 亚洲熟妇久久精品| 色诱久久av| 成人av在线免费播放| 国产一二三四2021精字窝| 伊人蕉久中文字幕无码专区| 国产日韩AV无码免费一区二区| 亚洲国产精品成人av在线不卡| 亚洲国产午夜精品理论片在线播放 | 亚洲精品中文字幕码专区| 性欧美长视频免费观看不卡|