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

正文內(nèi)容

基于android系統(tǒng)的打氣球游戲的設(shè)計與實現(xiàn)畢業(yè)設(shè)計(已改無錯字)

2023-02-16 13:02:03 本頁面
  

【正文】 塊的功能很清晰也很簡單的樣子,但是事實上卻不是這樣的。每個子模塊除了要充分完成自己應(yīng)有的功能外還要考慮與其它子模塊的通信接口的定義,并且完成自己應(yīng)有的功能時也會用到很多別的細小的編程技巧和方法。本部分名為詳細設(shè)計,但是一定要詳詳細細的描述出所有的細節(jié)問題是很有難度的,在這里只是把最主要的問題抽出來詳細說明,有些細節(jié)問題的描述可能會被忽略掉,但是會提到其作用的。本部分分四個大的子模塊來描述詳細設(shè)計的過程。 開場動畫模塊 問題描述開場動畫模塊為整個游戲的入口,在本入口提供給玩家開始游戲、退出游戲的按鈕,本模塊實現(xiàn)的一個大功能就是如何為按鈕實現(xiàn)功能,因為按鈕為圖片控件,并不能通過綁定監(jiān)聽器的方法來做到。而后就是開場動畫的繪制,和初始界面的繪制,本模塊為游戲的入口,因此應(yīng)該設(shè)計的華麗,美觀,能給用戶眼前一亮的感覺。這就對Surface view繪圖提出了一個高要求。 問題分析關(guān)于按鈕的實現(xiàn)設(shè)計UI線程和子線程交互的問題。當應(yīng)用啟動,系統(tǒng)會創(chuàng)建一個主線程(main thread)。這個主線程負責向UI組件分發(fā)事件(包括繪制事件),也是在這個主線程里,你的應(yīng)用和Android的UI組件發(fā)生交互。所以main thread也叫UI thread也即UI線程。系統(tǒng)不會為每個組件單獨創(chuàng)建線程,在同一個進程里的UI組件都會在UI線程里實例化,系統(tǒng)對每一個組件的調(diào)用都從UI線程分發(fā)出去。結(jié)果就是,響應(yīng)系統(tǒng)回調(diào)的方法,永遠都是在UI線程里運行。當App做一些比較耗時的工作比如訪問網(wǎng)絡(luò)或者數(shù)據(jù)庫查詢,都會阻塞UI線程,導致事件停止分發(fā)(包括繪制事件)。對于用戶來說,應(yīng)用看起來像是卡住了。所以必須把所有的UI操作放在UI線程里。 實現(xiàn)方法在Android中,對于UI的操作通常需要放在主線程中進行操作。如果在子線程中有關(guān)于UI的操作,那么就需要把數(shù)據(jù)消息作為一個Message對象發(fā)送到消息隊列中,然后,由Handler中的handlerMessage方法處理傳過來的數(shù)據(jù)信息,并操作UI。當然,Handler對象是在主線程中初始化的,因為它需要綁定在主線程的消息隊列中。類sendMessage(Message msg)方法實現(xiàn)發(fā)送消息的操作。 在初始化Handler對象時重寫的handleMessage方法來接收Message并進行相關(guān)操作。在每個按鈕按下之后,系統(tǒng)會發(fā)送不同的消息送給消息隊列,用以開始游戲或者退出游戲,在游戲開始后,如果玩家飛機死亡也會發(fā)送消息隊列從而進入分數(shù)統(tǒng)計界面。: Handler運行機制(1)程序運行的入口Activity為MainActivity,在此Activity中的onCreate通過對GameSoundPool來創(chuàng)建一個聲音對象,()初始化當前聲音對象的聲音資源文件。而后等待Handler機制接受消息從而進行游戲操作或者其他。Handler的具體實現(xiàn)核心代碼如下所示:private Handler handler = new Handler(){ @Override public void handleMessage(Message msg){ if( == ){ toMainView()。 } else if( == ){ toEndView()。 } else if( == ){ endGame()。 } } }。(2) 程序通過調(diào)用ReadView來進行過場動畫界面的初始化操作,在ReadView類中進行初始化時,首先加載圖片資源,然后通過計算屏幕的比例,將圖片資源使用畫筆畫到屏幕上,因考慮到動態(tài)的操作,所有的畫圖操作均在線程中進行定時操作,每隔一定的時間根據(jù)當前的狀態(tài)重新繪制一次,然后通過MotionEvent方法進行定向坐標的按鈕操作,然后發(fā)送消息給消息隊列,從而方便Handler操作。界面繪制核心代碼如下所示:canvas = ()。()。 ()。(scalex, scaley, 0, 0)。 (background, 0, 0, paint)。 ()。(text, text_x, text_y, paint)。 //開始游戲的按鈕(startGame, screen_width / 2 strwid / 2, button_y+ () / 2 + strhei / 2, paint)。//退出游戲的按鈕(exitGame, screen_width / 2 strwid / 2, button_y2+ () / 2 + strhei / 2, paint)。//飛機飛行的動畫()。(fly_x, fly_y, fly_x + (), fly_y + fly_height)。(planefly, fly_x, fly_y currentFrame * fly_height,paint)。(3) 進入程序后,則馬上繪制出過場動畫界面,如下圖所示: 飛機大戰(zhàn)游戲過場動畫界面 道具制造模塊 問題描述道具制造模塊需要解決的問題就是如何批量的生產(chǎn)出游戲運行中所需的大型敵機、BOSS子彈、BOSS敵機、中型敵機、導彈物品、玩家飛機的子彈(兩種威力)、玩家飛機、小型敵機,這些物品的制造必須要定義相應(yīng)的功能邏輯屬性,比如炸彈是用來轟炸敵機的、不同炸彈的威力也不一樣、每種敵機的血量也有所不同,當然摧毀一架敵機玩家得到的游戲得分也不盡相同。在游戲的進行中,還要根據(jù)玩家的水平隨時出現(xiàn)不同的敵機,并且要控制敵機的數(shù)量。這就對道具制造模塊提出了一個很高的要求,要清晰明了的完成道具制造不是一件容易的事情。 問題分析對于這些道具的制造,可以充分運用Java面向?qū)ο蟮脑恚瑢⒚總€對象分別抽象化,忽略一個道具中與當前目標無關(guān)的那些方面,以便更充分地注意與當前目標有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。通過對飛機炮彈等抽象的實現(xiàn),可以完美的做到封裝。將道具所使用的數(shù)據(jù)以及道具所能實現(xiàn)的邏輯功能捆綁在一起,對數(shù)據(jù)的訪問只能通過已定義的界面。將道具可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。 通過對這些對象的抽象定義,然后再將這些對象通過工廠模式封裝成一個道具制造工廠,可以很方便的通過Create方法直接生產(chǎn)出所需的道具。 實現(xiàn)方法,包下集成了眾多的類名定義。、、、、這些類中包括了每個道具的繪圖方法,邏輯方法,碰撞檢測方法。為游戲的順利運行提供了堅實的基礎(chǔ)。(1) 為了更加便捷地使用這些方法,首先要避免的就是直接將這些類導入工程之中,隨意調(diào)用,應(yīng)該建立一個合適的工廠模式,通過工廠模式統(tǒng)一的對這些類進行管理,這就用到了向上轉(zhuǎn)型,將每個對象都向上轉(zhuǎn)型成統(tǒng)一的一個父類,就可以運用工廠模式,。: 道具對象繼承關(guān)系圖(2) 具體到每個類到實現(xiàn)函數(shù),包括數(shù)據(jù)初始化,圖片資源初始化,繪圖函數(shù),碰撞檢測函數(shù)。因為這些函數(shù)的存在,讓對象的碰撞檢測等操作綁定在單一對象上,而不是通過游戲操作程序來記錄,這就為程序調(diào)用起到了大大的便利性。下面以小型敵機為例,展示下功能實現(xiàn)方法。繪圖核心代碼如下: public void drawSelf(Canvas canvas) { // TODO Autogenerated method stub //判斷敵機是否死亡狀態(tài) if(isAlive){ //判斷敵機是否為爆炸狀態(tài) if(!isExplosion){ if(isVisible){ ()。 (object_x,object_y,object_x + object_width,object_y + object_height)。 (smallPlane, object_x, object_y,paint)。 ()。 } logic()。 } else{ int y = (int) (currentFrame * object_height)。 ()。 (object_x,object_y,object_x + object_width,object_y + object_height)。 (smallPlane, object_x, object_y y,paint)。 ()。 currentFrame++。 if(currentFrame = 3){ currentFrame = 0。 isExplosion = false。 isAlive = false。 } } } }(3) 本游戲設(shè)計中,碰撞檢測起到了很大的作用。無論是子彈與敵機的碰撞,是不導致敵機血量減少還是敵機與玩家飛機的碰撞,是否導致玩家飛機的墜毀。因此碰撞檢測程序設(shè)計的好壞,完全決定了本游戲的可玩性,在程序的實現(xiàn)中,碰撞檢測函數(shù)是綁定在道具對象上的。下面以敵機與子彈碰撞為例,展示一下碰撞檢測。其實現(xiàn)核心代碼如下所示: public boolean isCollide(GameObject obj) { // 矩形1位于矩形2的左側(cè) if (object_x = () amp。amp。 object_x + object_width = ()) { return false。 } // 矩形1位于矩形2的右側(cè) else if (() = object_x amp。amp。 () + () = object_x) { return false。 } // 矩形1位于矩形2的上方 else if (object_y = () amp。amp。 object_y + object_height = ()) { return false。 } // 矩形1位于矩形2的下方 else if (() = object_y amp。amp。 () + () = object_y) { return false。 } return true。 } // 判斷能否被檢測碰撞 public boolean isCanCollide() { // TODO Autogenerated method stub return isAlive amp。amp。 !isExplosion amp。amp。 isVisible。 } 游戲操作模塊 問題描述經(jīng)過前兩個子模塊的準備操作,游戲的基本框架已經(jīng)搭建起來,本模塊的作用就是游戲進行的模塊,里面涉及玩家操控飛機,躲避敵機,或射擊敵機,因此合理的調(diào)用道具模塊的對象函數(shù),實現(xiàn)游戲順暢合理的操作是本模塊重中之重。此子模塊是本系統(tǒng)的核心模塊,所以整個系統(tǒng)的設(shè)計優(yōu)良與否很大程度上取決此模塊的設(shè)計。 問題分析游戲操作模塊是程序展示自己功能的最好的載體,在設(shè)計時除了更好地進行游戲道具的載入繪圖等操作外,還要做到界面美觀大方,讓人看起來很舒服。道具設(shè)計是一個方面,道具整合一起的操作設(shè)計才是重點。首先要有得到道具的外部接口,得到接口功能后,可以同過調(diào)用各個道具的功能接口,進行繪制操作,并且通過實時的對屏幕的觸控進行相應(yīng)的識別,通過觸控坐標的不同來操控飛機做出不同的動作,同時繪制出圖畫,這是一個一連串的功能實現(xiàn)。 實現(xiàn)方法。在本類運行之處,首先運行initObject()以進行初始化飛機物品,drawSelf()以進行游戲運行時物品繪圖,iewLogic()以進行背景移動的邏輯。通過開始之前和可是之后的對系統(tǒng)時間的抓取,然后在本次運行結(jié)束之后,進行本次繪制這些圖片的時間進行一個邏輯判斷,然后通過判斷設(shè)置一個合理的時間間隔可以重新繪制圖片,游戲的進行其實就是對屏幕不停的繪制的過程。(1)對于類似初始化的操作,主要是通過對道具里面不同的create函數(shù)進行調(diào)用,先制造出游戲所需的道具,并將道具的數(shù)量設(shè)置在符合游戲難度的范圍之內(nèi),初始化之后,就可以將這些道具繪制在屏幕上,然后繪制一個背景以及玩家飛機。飛機具有多樣性供玩家選擇,飛機可以升級子彈威力、飛機可以改變子彈類型、還能出現(xiàn)大招即飛機有清屏導彈。游戲操作模塊定義的敵機為上下飛行的,都是統(tǒng)一從屏幕上方飛下來,敵機不具備發(fā)射子彈功能,但是當敵機碰撞到玩家飛機后,玩家飛機死亡。當敵機只要出現(xiàn)在子彈圖片范圍內(nèi),根據(jù)子彈威力選擇掉血或者爆炸。在游戲進行中,會出現(xiàn)音效,每次玩家飛機發(fā)射子彈是都會出現(xiàn)聲音,當飛機爆炸是也會出現(xiàn)相應(yīng)的音效。函數(shù)圖如下所示: “”函數(shù)圖顯示效果如下圖所示: 飛機大戰(zhàn)游戲操作初始化界面(2)本模塊最重要的功能就是動畫的繪制,通過一幀動畫的繪制可以形成一個靜態(tài)的圖片,但是如果多幀圖片不停的繪制,在玩家的眼中看來就是一個動畫。這就被稱為逐幀動畫,逐幀動畫是一種常見的動畫形式(Frame By Frame),其原理是在“連續(xù)的關(guān)鍵幀”中分解動畫動作,也就是在時間軸的每幀上逐幀繪制不同的內(nèi)容,使其連續(xù)播放而成動畫。 因為逐幀動
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1