freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于android平臺(tái)的坦克大戰(zhàn)游戲設(shè)計(jì)-文庫(kù)吧資料

2025-01-22 20:33本頁(yè)面
  

【正文】 ileOutputStream此方式比較適合游戲的保存和使用,流文件數(shù)據(jù)存儲(chǔ)可以保存較大的數(shù)據(jù),而且通過(guò)此方式不僅能把數(shù)據(jù)存儲(chǔ)到手機(jī)內(nèi)存中,也能將數(shù)據(jù)存儲(chǔ)到手機(jī)的Sdcard中;SQLite此方式也適合游戲的保存和使用,不僅可以保存較大的數(shù)據(jù),而且可以將自己的數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)或者數(shù)據(jù)庫(kù)當(dāng)中,如SQLite數(shù)據(jù)庫(kù),也能將數(shù)據(jù)存儲(chǔ)到Sdcard中;ContentProvider此方式不推薦用于游戲保存,雖然此方式能存儲(chǔ)較大的數(shù)據(jù),還支持多個(gè)程序之間的數(shù)據(jù)進(jìn)行交換,但由于游戲中基本就不可能去訪問(wèn)外部應(yīng)用的數(shù)據(jù)。同時(shí)在移動(dòng)的過(guò)程中,判定敵方坦克是否還在屏幕中,如果在屏幕中則繼續(xù)移動(dòng),如果不在屏幕中,則移除敵方坦克。 } 這個(gè)算法主要實(shí)現(xiàn)了獲取當(dāng)前的坐標(biāo),并且根據(jù)數(shù)組得到去下一步的坐標(biāo),這樣最終消失。 } xspan=(path[destination][0]path[begin][0])/path[begin][2]。y==path[destination][1]) { begin=(begin+1)%。 } } public void caculateCurrentXYSpan() { if(x==path[destination][0]amp。 y+=yspan。 } public void go() { caculateCurrentXYSpan()。其次是敵方坦克移動(dòng)路徑的實(shí)現(xiàn)算法,主要代碼如下所示: public void drawSelf(Canvas canvas,Paint paint) { go()。Constant類主要的功能是定義一些程序中用到的常量,這樣定義的好處是能夠很容易的找到要使用的變量便于調(diào)用。 線程GenerateTargetThread類主要實(shí)現(xiàn)了隨機(jī)出現(xiàn)坦克的種類,KeyThread類主要實(shí)現(xiàn)的功能是通過(guò)判斷鍵被按下的時(shí)間的長(zhǎng)短,選擇相應(yīng)的速度。 Background類主要實(shí)現(xiàn)的功能是設(shè)置背景圖片,并且背景圖片設(shè)置為滾動(dòng)的也就是動(dòng)態(tài)過(guò)程。 其他一些相關(guān)的線程和類 這里就是為了游戲的可玩性做的一些填充性的設(shè)置和功能。然后當(dāng)游戲結(jié)束時(shí),就會(huì)直接加載背景圖片,并且在圖片的相應(yīng)位置顯示恭喜你破紀(jì)錄了字樣。 類WinSurfaceView主要的功能就是實(shí)現(xiàn)了游戲結(jié)束并且是破紀(jì)錄的情況下直接加載相應(yīng)的界面,還實(shí)現(xiàn)了此界面顯示5秒后會(huì)自動(dòng)轉(zhuǎn)到主頁(yè)面。當(dāng)沒(méi)有破紀(jì)錄時(shí),會(huì)顯示圖片請(qǐng)?jiān)俳釉賲枴?游戲結(jié)束 這主要實(shí)現(xiàn)了游戲結(jié)束時(shí),根據(jù)得到的分?jǐn)?shù)不同會(huì)看到不同的結(jié)束界面。如果向后翻頁(yè),翻到最后一頁(yè),就會(huì)停止。畫(huà)日期圖片的函數(shù)主要有一個(gè)時(shí)間與時(shí)間的間隔號(hào),使用if…else…函數(shù)判斷哪一個(gè)位置應(yīng)該插入符號(hào)。其次是設(shè)置焦點(diǎn)并設(shè)置可觸控焦點(diǎn)和回調(diào)函數(shù)。這些功能的實(shí)現(xiàn)主要是通過(guò)類Score類和HighScoreSurfaceView類,DateUtil類中來(lái)實(shí)現(xiàn)的,主要是通過(guò)以下幾個(gè)函數(shù)來(lái)分步完成的繪制函數(shù)onDraw(Canvas canvas),畫(huà)日期圖片的函數(shù)drawDateBitmap(String numberStr,float endX,float endY,Canvas canvas,Paint paint),觸屏函數(shù)實(shí)現(xiàn)方法onTouchEvent(MotionEvent event),創(chuàng)建函數(shù)surfaceCreated(SurfaceHolder holder),圖片初始化的函數(shù)initBitmap(),還有一些線程的創(chuàng)建,線程的啟動(dòng),現(xiàn)成的停止,運(yùn)行run()函數(shù)。并且玩家每次的分?jǐn)?shù)都和所有的分?jǐn)?shù)進(jìn)行比較,如果大于最高分分,則游戲結(jié)束時(shí)會(huì)顯示恭喜您破紀(jì)錄了。但是這些都不是我們親自去查的,都在游戲的積分榜中直接顯示的。(2,0)實(shí)現(xiàn)的,(this)實(shí)現(xiàn)的,(new Explosion(gameView,explodeBitmaps,x,y))實(shí)現(xiàn)的,(1)實(shí)現(xiàn)的。類Path主要是三維數(shù)組,每一個(gè)設(shè)置四個(gè)目的地,如果到達(dá)第一個(gè)目的地,繼續(xù)去往下一個(gè)目的地。而disappear()函數(shù)主要是把出屏的目標(biāo)物消失。然后是小坦克的隨機(jī)出現(xiàn),小坦克從出現(xiàn)在在屏幕到從屏幕消失。這些功能的實(shí)現(xiàn)主要是通過(guò)類Target類和Path類。一旦回傳false回來(lái),后面的event動(dòng)作可能就會(huì)收不到了,所以為了確保后面的event能順利收到,應(yīng)該讓觸屏監(jiān)聽(tīng)函數(shù)的返回值永遠(yuǎn)為true。 onTouchEvent()()函數(shù)并傳回布爾類型。設(shè)置觸屏監(jiān)聽(tīng)函數(shù)onTouchEvent(MotionEvent event),主要是為了獲取點(diǎn)擊觸屏?xí)r相應(yīng)的坐標(biāo)。首先是引用activity類并且線程引用,文字的圖片,主菜單上虛擬按鈕對(duì)象引用,背景圖片等。按鈕被按下時(shí),還用到的函數(shù)switchOn()和switchOff()的返回值。這個(gè)功能的完成主要還有一點(diǎn)就是圖片的引用,安置。觸控事件的判斷通過(guò)函數(shù)isActionOnButtonOff()(判斷左按鈕是否有觸控時(shí)間的方法),isActionOnButtonOff()(判斷右按鈕是否有觸控事件的方法)。首先是音樂(lè)音效按鈕的設(shè)置,定義出關(guān)于按鈕的量和關(guān)于文字的量然后再設(shè)置文字與按鈕之間的間距等,還要對(duì)一些圖片進(jìn)行初始化和引用定義等。(Bitmaps[anmiIndex],x,y,paint),然后進(jìn)行動(dòng)畫(huà)的播放。當(dāng)子彈碰到敵方單位是就會(huì)播放不炸效果圖,如果沒(méi)有播放完畢,就會(huì)爆炸動(dòng)畫(huà)幀就會(huì)自動(dòng)加一,繼續(xù)播放下一幀直到播放完畢為止,播放完畢后,就會(huì)從列表中刪除此爆炸。子彈的消失是通過(guò)函數(shù)disapear(),來(lái)實(shí)現(xiàn)的 。如果子彈沒(méi)有擊中目標(biāo),就會(huì)判斷子彈是否在屏幕內(nèi),如果不在屏幕內(nèi)子彈就會(huì)消失。豎直方向是通豎直方向的分速度經(jīng)過(guò)的路徑和自由落體運(yùn)動(dòng)時(shí)所經(jīng)過(guò)的路徑之和,但是認(rèn)定豎直方向做自由落體運(yùn)動(dòng)。還使用了子彈的前進(jìn)方法go(),子彈的前進(jìn)方向主要有水平方向和豎直方向。碰撞后敵方的坦克就會(huì)消失,顯然爆炸的子彈也會(huì)消失。這里主要涉及到了一個(gè)算法碰撞。最后返回result來(lái)實(shí)現(xiàn)角度的改變,從而實(shí)現(xiàn)了炮筒的180度的旋轉(zhuǎn)。但是要判斷點(diǎn)擊點(diǎn)在炮筒的哪一邊。炮筒的180度旋轉(zhuǎn)主要是通過(guò)角度改變來(lái)調(diào)整的。首先子彈是是一個(gè)小圖片,要圖片的定義和引用,并且還要知道子彈的半徑,炮筒的高度和炮筒的管寬,這樣是為了能夠逼真的顯示炮彈從炮筒里面打出去。還要設(shè)置炮筒的旋轉(zhuǎn)矩陣,這樣便于炮筒的旋轉(zhuǎn)。虛擬按鈕被設(shè)置了兩個(gè)速度一個(gè)是慢速度一個(gè)是快速度,當(dāng)屏幕的寬減去坦克底座的長(zhǎng)度大于等于坦克底座的橫坐標(biāo)時(shí),坦克會(huì)以慢的速度移動(dòng),反之則會(huì)以快的速度移動(dòng)。左按鈕被按下和抬起的方法switchLeftBtnOn(),switchLeftBtnOff()。繪制向右的按鈕的兩種狀態(tài)的方法繪制做按鈕的方法一樣。虛擬按鈕功能的實(shí)現(xiàn)主要是按鈕是否被按下,并且判斷按下的按鈕是向左移動(dòng)的按鈕還是向右移動(dòng)的按鈕。 虛擬按鈕的功能實(shí)現(xiàn)主要是在GameVirtualButton類中完成和實(shí)現(xiàn)的。 lockCanvas()函數(shù)不僅是獲取Canvas,同時(shí)還對(duì)獲取的Canvas畫(huà)布進(jìn)行加鎖,這里對(duì)畫(huà)布進(jìn)行同步加鎖的機(jī)制主要是為了防止SurfaceView在繪制過(guò)程中被修改,摧毀等發(fā)生的狀態(tài)改變;與lockCanvas()函數(shù)對(duì)應(yīng)的還有一個(gè)unlockCanvasAndPost( Canvas canvas)函數(shù)用于解鎖畫(huà)布提交。 用到的相關(guān)的線程的函數(shù)有craetAllThreads(),startAllThreads()和stopAllthreads().SurfaceHolder類的實(shí)例,此類提供控制SurfaceView的大小,格式等,并且主要用于監(jiān)聽(tīng)SurfaceView的狀態(tài)。但按下的動(dòng)作抬起時(shí),(),(),也就是停止了所有的操作。其次是判斷該點(diǎn)的坐標(biāo)是屬于哪一個(gè)動(dòng)作范圍,并轉(zhuǎn)移到相應(yīng)的函數(shù)中去實(shí)現(xiàn)該動(dòng)作。其他一些按鈕也是通過(guò)這種方法實(shí)現(xiàn)的,但是觸屏監(jiān)聽(tīng)的實(shí)現(xiàn)是通過(guò)onTouchEvent()函數(shù)實(shí)現(xiàn)的。焦點(diǎn)主要就是告訴系統(tǒng),現(xiàn)在這個(gè)試圖需要與用戶交互,讓系統(tǒng)來(lái)監(jiān)聽(tīng)此視圖。在這個(gè)函數(shù)中焦點(diǎn)的設(shè)置也是非常重要的,設(shè)置焦點(diǎn),并且設(shè)置為可觸控焦點(diǎn)。在函數(shù)onDraw(Canvas canvas)中對(duì)背景圖片進(jìn)行繪制,()(bgBitmap,0,0,paint)來(lái)實(shí)現(xiàn)的。 主頁(yè)面背景的設(shè)置。當(dāng)點(diǎn)擊按鈕時(shí),就會(huì)轉(zhuǎn)到相應(yīng)的頁(yè)面。主要由背景界面和一些界面上的按鈕。 動(dòng)畫(huà)播放完畢后,主動(dòng)轉(zhuǎn)到主菜單界面,再進(jìn)行其他的操作。還有判斷是判斷圖片是不是原來(lái)的圖片,如果不是原來(lái)的圖片,而是重新放里面的新圖片,則圖片動(dòng)畫(huà)需要多等一會(huì)。這樣做的目的是讓圖片進(jìn)行居中顯示,美觀。最后使用run()函數(shù)來(lái)實(shí)現(xiàn)圖片的動(dòng)畫(huà)顯示。然后向這個(gè)矩形貼圖,也就是用圖片覆蓋整個(gè)屏幕。在引用過(guò)程中要對(duì)圖片做一些處理,為了讓圖片美觀的顯示,設(shè)置抗鋸齒:(true);((),),其中n為數(shù)字,name為圖片的名字。首先是圖片的引用,定義了一個(gè)logo圖片數(shù)組,并且獲得屏幕的寬和屏幕的高,目的是讓圖片容易實(shí)現(xiàn)占滿整個(gè)屏(好設(shè)置)。這兩個(gè)畫(huà)面播放完畢之后,就進(jìn)入到了MainMenuButton界面。隱去狀態(tài):().setFlags(,)代碼來(lái)實(shí)現(xiàn)的。 全屏的設(shè)置,設(shè)置全屏的操作主要就兩點(diǎn):隱去狀態(tài)欄部分,包括電池等圖表;把應(yīng)用的名字也隱去不顯示。一樣也是使用了switch…case語(yǔ)句來(lái)實(shí)現(xiàn)的。當(dāng)Handler接收到發(fā)送來(lái)的不同的信息,并采用Case來(lái)進(jìn)行判斷是哪一個(gè)界面并且轉(zhuǎn)到該界面,來(lái)實(shí)現(xiàn)和完成相應(yīng)的功能。當(dāng)游戲處于不同的狀態(tài)或者動(dòng)作時(shí)就會(huì)轉(zhuǎn)到相應(yīng)的界面,來(lái)完成相應(yīng)的動(dòng)作或者功能。 第4章 詳細(xì)設(shè)計(jì) 坦克大戰(zhàn)主要類基本功能分析 主類 GameActivity類,把游戲分為八個(gè)界面,在不同的狀態(tài)下進(jìn)入到不同的界面來(lái)完成不同的功能和動(dòng)作,這八個(gè)界面主要是歡迎界面(WelleSurfaceView),主菜單界面(MainMenuSurfaceView),游戲界面(GameView),音效控制界面(SoundControlsSurfaceView),積分榜界面(HighScoreSurfaceView),勝利界面(WinSurfaceView),失敗界面(FailSurfaceView),游戲結(jié)束界面,高分記錄界面。其中坦克的Daoao 類還有Target類是主角坦克和敵方坦克出現(xiàn)的類,主角發(fā)射子彈通過(guò)調(diào)用Bullet類還有explosion類來(lái)實(shí)現(xiàn)的。如圖 所示。但是整個(gè)程序的運(yùn)行要所有的類之間互相配合才能完成。例如子彈類,子彈類主要就是發(fā)射子彈和子彈的碰撞爆炸效果。時(shí)間設(shè)置為一分鐘,在一分鐘內(nèi)打的坦克數(shù)量就是玩家該次游戲的得分,得分與數(shù)據(jù)庫(kù)中的分?jǐn)?shù)進(jìn)行比較,如果是最高的則為破紀(jì)錄,則顯示恭喜你打破記錄,如果沒(méi)有破紀(jì)錄則顯示為加油,再接再厲,同時(shí)還要和其他的分?jǐn)?shù)進(jìn)行比較,是否在最高分的五個(gè)分?jǐn)?shù)之中,如果在這五個(gè)當(dāng)中就會(huì)刪除原來(lái)五個(gè)分?jǐn)?shù)中最低的那個(gè),并且獲取當(dāng)時(shí)玩家游戲的時(shí)間,顯示在積分榜中。音樂(lè)開(kāi)關(guān)設(shè)置分為游戲背景音樂(lè)的設(shè)置和游戲音效的設(shè)置。游戲首次運(yùn)行時(shí),會(huì)有動(dòng)畫(huà)界面的播放,動(dòng)畫(huà)界面分為兩個(gè)畫(huà)面,動(dòng)畫(huà)畫(huà)面動(dòng)畫(huà)畫(huà)面2。 敵方坦克用例圖用例名稱敵方坦克功能簡(jiǎn)述坦克隨機(jī)出現(xiàn),被擊中或者離開(kāi)屏幕前置條件游戲開(kāi)始,并且在60秒之內(nèi)后置條件游戲沒(méi)有結(jié)束基本流在主按鈕界面中點(diǎn)擊開(kāi)始游戲敵方坦克就會(huì)在屏幕上隨機(jī)的出現(xiàn)如果被子彈打中就會(huì)爆炸如果沒(méi)有,則會(huì)消失在屏幕以外 系統(tǒng)功能設(shè)計(jì)流程我把整個(gè)游戲分為了兩部分游戲開(kāi)始?xì)g迎界面,游戲功能選擇。 音樂(lè)音效用例圖用例名稱背景音樂(lè)音效功能簡(jiǎn)述控制游戲背景音樂(lè)的開(kāi)關(guān);發(fā)射子彈時(shí)的音效;子彈打中目標(biāo)時(shí),爆炸音效前置條件游戲開(kāi)啟,音樂(lè)音效打開(kāi)后置條件游戲沒(méi)有結(jié)束,子彈打中目標(biāo)或者有子彈發(fā)射基本流 在主按鈕界面中,設(shè)置音效音樂(lè) 設(shè)置音樂(lè)的開(kāi)關(guān) 設(shè)置音效的開(kāi)關(guān) 設(shè)置成功,返回主按鈕界面 敵方坦克 敵方坦克在游戲開(kāi)始以后才開(kāi)始出現(xiàn),并且沒(méi)有什么太大的規(guī)律,都是從屏幕的最右面出現(xiàn),然后消失在屏幕以外或者被子彈擊中消失。音效分為開(kāi),關(guān);音樂(lè)也分為開(kāi)和關(guān)。 ,左右移動(dòng)子彈發(fā)射時(shí)間控制分?jǐn)?shù)虛擬按鈕炮筒位置 主角 主角功能圖 背景音樂(lè)和音效 當(dāng)游戲進(jìn)入到游戲按鈕主頁(yè)面時(shí),可以對(duì)游戲進(jìn)行音樂(lè)音效的設(shè)置,音樂(lè)是當(dāng)游戲開(kāi)始時(shí),加的背景音樂(lè);而音效設(shè)置是指擋子彈發(fā)射或者子彈擊中目標(biāo)時(shí),所加的音效。當(dāng)子彈打中目標(biāo)時(shí),子彈和目標(biāo)都會(huì)爆炸,當(dāng)子彈沒(méi)有打中目標(biāo)時(shí),子彈走出屏幕,子彈消失。 第3章 概要設(shè)計(jì) 系統(tǒng)功能設(shè)計(jì) 主角 在人機(jī)對(duì)戰(zhàn)時(shí),主角的主要功能是點(diǎn)擊左右虛擬按鈕,坦克會(huì)向左向右移動(dòng),但是通過(guò)按住按鈕的時(shí)間,來(lái)控制坦克的移動(dòng)速度,按住時(shí)間長(zhǎng),坦克的速度就會(huì)加快,按住的時(shí)間短,坦克就會(huì)移動(dòng)的比較慢。 Android是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。記錄分?jǐn)?shù)的存儲(chǔ)方式也需要有較好的解決方案。用戶運(yùn)行游戲時(shí)需要有分?jǐn)?shù)記錄的可能。良好的用戶界面更是吸引用戶的硬指標(biāo)相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。每一次刷新頁(yè)面、每一次的移動(dòng)都要考慮整體以及個(gè)體與個(gè)體的變化。 碰撞檢測(cè)是坦克大戰(zhàn)的最重要的環(huán)節(jié)之一。另外子彈在運(yùn)行過(guò)程中也需要實(shí)時(shí)掃描是否碰撞敵方坦克或屏幕
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1