



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于安卓平臺的水氣套圈游戲設(shè)計與實現(xiàn)
1物理引擎的開發(fā)物理引擎是游戲中物理屬性的計算方法,它可以為剛性物體帶來實際的物理屬性,并通過運行中的旋轉(zhuǎn)和碰撞反映來控制游戲中物體的主流程。它主要是采用調(diào)整對象屬性的方式來模擬剛體的行為,這就決定了物理引擎不但繼承了傳統(tǒng)的用編程或編寫腳本的方式實現(xiàn)的簡單的“牛頓”物理運動的能力,而且在編寫包含較為復(fù)雜的物理運動(如考慮彈力、摩擦系數(shù)等)的游戲時效果更為顯著。下面主要介紹基于安卓平臺開發(fā)的水壓套圈圈游戲的設(shè)計與實現(xiàn),并以此為例說明如何實現(xiàn)物理引擎的靈活應(yīng)用。2u3000重力感應(yīng)互動游戲水壓套圈圈是風(fēng)靡于90年代的一款掌上游戲機(jī),其原理是在盒子里面充滿水然后放進(jìn)許多小彩圈,通過按動下面的按鈕,讓水壓沖起小圈,在重力作用下使它們套在中間的小棍上,直到所有的小圈全都套中為止。在安卓平臺下,本游戲采用Box2D物理引擎,模擬在液態(tài)環(huán)境中的剛體碰撞行為,并且使固體對象具備重力感應(yīng)能力。界面的設(shè)計主要采用安卓常用Widget組件并加載布局完成。3功能模塊首先在Eclipse中創(chuàng)建安卓工程,命名為Box2D,在源碼文件夾下新建package,名為com.box2d。3.1接口實現(xiàn)本游戲的界面主要有4個:主題界面、設(shè)置界面、說明界面、游戲界面。3.1.1跑馬燈控制板的實現(xiàn)主題界面采用表格布局“TableLayout”。共分為5行,第一行是一個橫向循環(huán)滾動文字,使用的是單行跑馬燈控件,第二行是TextView控件,后面是3個按鈕,分別鏈接到游戲界面、設(shè)置界面和說明界面。代碼如下:跑馬燈控件的設(shè)置首先要在源碼文件夾src下建立“跑馬燈”類,代碼如下:然后在資源目錄res的layout文件夾下創(chuàng)建主題類main,在main中添加跑馬燈控件,并設(shè)置滾動字條為“河北科技大學(xué)作品”。按鈕的設(shè)置也類似,下面給出第一個按鈕設(shè)置的代碼,其他剩下的兩個只要修改按鈕上的文字和背景圖片即可,如圖1所示。3.1.2兩個普通東南角設(shè)置界面與主題界面類似,首先設(shè)置布局類型,這個界面為LynearLayout布局,在布局中設(shè)置與主題界面相同的背景圖片。界面的組件分為3組,前兩組都是RadioGroup,用來控制難度級別和音效,第三組只有兩個普通按鈕,分別用來鏈接進(jìn)入游戲界面和返回主題界面。第一個RadioGroup包含3個RadioButton,分別表示初級、中級和高級3個難度級別;第二組包含兩個RadioButton,用來表示開啟背景音樂和播放背景音樂;兩個普通按鈕的設(shè)置與主題界面類似,只需修改文字和背景圖片此處不做介紹。每組RadioGroup還需要有說明的文字,所以還需要在每組RadioGroup之前先設(shè)置一個TextView,第一個顯示文字“難度設(shè)置”,第二個顯示“音效設(shè)置”。前半部分代碼如下:“音效設(shè)置”部分代碼與“難度設(shè)置”部分類似,不再贅述,如圖2所示。對于說明界面只需添加幾個TextView,寫上游戲說明和開發(fā)團(tuán)隊的介紹即可。3.1.3界面的模擬操作因為游戲界面與物理引擎所創(chuàng)建的物理世界關(guān)系密切,所以該界面不在layout文件夾下配置,直接在源碼文件夾中的主函數(shù)里生成。第一步先初始化界面,設(shè)置好背景圖片;然后配置界面的底邊框,先設(shè)置一個邊框的類publicvoiddrawedge(),在其中初始化一個paint類的對象mpaint,用來觸發(fā)模擬噴水器,不按時為藍(lán)色,按下時變?yōu)辄S色。按鈕周圍用圖片環(huán)繞。環(huán)繞的小圖片用BitmapFactory.decodeResource()方法來獲取,并設(shè)置小圖片在屏幕底部3行循環(huán)平鋪。最后設(shè)置中間的兩根小棍,方法與底邊框類似(如圖3所示),只不過這里又調(diào)用了canvas.drawBitmap(bitmap,src,dst,paint)方法,參數(shù)src表示要畫的bitmap的區(qū)域,dst表示要顯示在屏幕上的區(qū)域。這樣,游戲界面就基本完成了。主要代碼如下:3.2d物理引擎設(shè)計功能的設(shè)計與實現(xiàn)是整個游戲工作量最大的部分,也是本程序的核心。因為小圈套上木棍這個行為是一個三維的動畫效果,而Box2D是一個以二維動畫來表現(xiàn)物體運動的物理引擎,如何讓2D的物理引擎模擬出3D動畫效果是主函數(shù)設(shè)計中必須解決的問題,也是整個程序能夠運行的關(guān)鍵。所以在這里必須使用特殊的方法來實現(xiàn),后文以此為重心介紹主要功能模塊的設(shè)計與實現(xiàn)。從宏觀角度來看,可以把主程序分為4個部分:控件的定義和初始化以及偵聽、提示框和對話框的設(shè)計、剛體的定義和控制部分、整個游戲控制流程的設(shè)計部分3.2.1控制組件的定義、初始和檢測因為這一部分比較簡單,在此僅舉幾個比較重要的控件的例子,其他的控件就不再具體介紹了。3.2.1.約束求解器的使用首先,對于物理引擎的應(yīng)用必須先定義一個物理世界并設(shè)置屏幕與現(xiàn)實世界的比例。要創(chuàng)建這個世界對象,還需要定義一個世界的包圍盒,Box2D使用包圍盒來加速碰撞檢測,然后才能創(chuàng)建世界對象。之后最重要的是設(shè)置約束求解器iterations的迭代次數(shù),約束求解器用與解決模擬中的所有約束,一次一個。定義其迭代次數(shù)是實現(xiàn)運行速度與質(zhì)量的平衡。更少的迭代會增加性能但降低模擬的精度:除了上面與物理引擎相關(guān)的控件之外還有在界面設(shè)計中提到的其他控件,這些控件也都要在主函數(shù)中定義和初始化,比如表示“開始游戲”的按鈕的定義:publicButtonstart;3.2.1.2初年剩下的控件只需修改類型和名稱即可。3.2.1.3調(diào)查控件的偵聽設(shè)計分為兩塊,觸摸屏幕事件偵聽、點擊屏幕下方按鍵事件偵聽。主要代碼如下:3.2.2在控制程序執(zhí)行過程中,顯示框架和和解這部分的設(shè)計在很多安卓教材中都會涉及,這里只給出主要的代碼和詳細(xì)的注釋,至于設(shè)計的具體方法也就不再詳述了。代碼:3.2.3d的物理實現(xiàn)這部分是主函數(shù)中對物理引擎應(yīng)用的原理,也是本程序最為核心的部分。因為Box2D是一個二維的物理引擎,它所表現(xiàn)的物體都是以二維的畫面展示的,這樣一來問題就產(chǎn)生了。本游戲所要完成的動畫效果是讓圈穿過木棍,這是一個3D的動畫效果,也就是說2D的圈是不能穿過木棍的,怎樣在不更換物理引擎的情況下模擬出3D的動畫效果呢?這就用到了下文所要介紹的一種簡單方法。首先初始化一個桶狀物,在游戲的過程中讓圈落入桶中,桶的顏色是透明的,但是其內(nèi)部卻著上其他顏色,這樣雖然實際上是小圈落入到桶中,但顯示給用戶的是小圈穿過了木棍。原理如圖4所示。根據(jù)上述原理,可以設(shè)計出代碼的流程。首先創(chuàng)建小圈以及接受小圈落下的桶,也就是顯示給用戶的小棍,并定義他們的摩擦系數(shù)、密度等屬性,設(shè)置小圈初始速度為隨機(jī)。然后初始化物理世界,在并根據(jù)不同大小的手機(jī)屏幕,自動設(shè)定小棍的位置在屏幕正中間。主要代碼如下:3.2.4實例化對象的mthad爾游戲控制流程的設(shè)計中用到了安卓程序中一個重要的工具Handler。Handler是用來解決耗時的操作運行效率與運行安全的平衡問題的工具。這里的Handler實例化對象mHandler用來配合主線程對背景音樂子線程和游戲運行子線程的運行進(jìn)行更新。最后是界面刷新,安卓提供了兩種刷新方式:一種是Invalidate方法,但是Invalidate不能直接在線程中調(diào)用,另一種是postInvalidate(),可以直接在線程中被調(diào)用,本程序選擇postInvalidate()方法實現(xiàn)界
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食堂用餐合同協(xié)議書范本
- 三方協(xié)議合同編號怎么弄
- 合格協(xié)議與合同協(xié)議
- 合同怎么代簽協(xié)議
- 個人供貨合同協(xié)議
- 技術(shù)合同協(xié)議書樣本圖
- 無合同框架協(xié)議
- 終端維修合同協(xié)議
- 減肥合同退款協(xié)議
- 合同保密協(xié)議內(nèi)容
- 全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政
- 高效團(tuán)隊:寧德時代的部門職責(zé)與協(xié)作模式
- 2024年鐵路貨運承包經(jīng)營協(xié)議3篇
- 水利主要工序施工方案,控制及工程項目實施的重點,難點和解決方案
- 人教版小學(xué)數(shù)學(xué)基礎(chǔ)知識
- 機(jī)械設(shè)計基礎(chǔ) 軸系結(jié)構(gòu)改錯答案
- 電氣工作票技術(shù)規(guī)范(發(fā)電、變電部分)2024整合版
- 大學(xué)校園綠化與可持續(xù)發(fā)展規(guī)劃
- 道路勘測設(shè)計-行車視距及其 保84課件講解
- 有線電視播放行業(yè)可行性分析報告
- 異常子宮出血患者護(hù)理查房
評論
0/150
提交評論