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

正文內(nèi)容

基于android系統(tǒng)的打氣球游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-06-03 07:53本頁(yè)面
  

【正文】 te float missile_bt_y。 private boolean isPlay。 // 標(biāo)記游戲運(yùn)行狀態(tài) private boolean isTouchPlane。 // 判斷玩家是否按下屏幕 private Bitmap background。 // 背景圖片 private Bitmap background2。 // 背景圖片 private Bitmap playButton。 // 開(kāi)始 /暫停游戲的按鈕圖片 private Bitmap missile_bt。 // 導(dǎo)彈按鈕圖標(biāo) private MyPlane myPlane。 // 玩家的飛機(jī) private BossPlane bossPlane。 // boss 飛機(jī) private ListEnemyPlane enemyPlanes。 private MissileGoods missileGoods。 private BulletGoods bulletGoods。 public MainView(Context context,GameSoundPool sounds) public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) public void surfaceCreated(SurfaceHolder arg0) public void surfaceDestroyed(SurfaceHolder arg0) public boolean onTouchEvent(MotionEvent event) public void initBitmap() public void initObject() public void release() public void drawSelf() public void viewLogic() public void addGameScore(int score) public void playSound(int key) (4)分?jǐn)?shù) 統(tǒng)計(jì)模塊 第 19 頁(yè) 共 46 頁(yè) private int score。 private float button_x。 private float button_y。 private float button_y2。 private float strwid。 private float strhei。 private boolean isBtChange。 // 按鈕圖片改變的標(biāo)記 private boolean isBtChange2。 private String startGame = 重新挑戰(zhàn) 。 // 按鈕的文字 private String exitGame = 退出游戲 。 private Bitmap button。 // 按鈕圖片 private Bitmap button2。 // 按鈕圖片 private Bitmap background。 // 背景圖片 private Rect rect。 // 繪制文字的區(qū)域 public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) public void surfaceCreated(SurfaceHolder arg0) public void surfaceDestroyed(SurfaceHolder arg0) public boolean onTouchEvent(MotionEvent event) public void initBitmap() public void release() public void drawSelf() public void run() public void setScore(int score) 5 詳細(xì)設(shè)計(jì) 本飛機(jī)大戰(zhàn)游戲的設(shè)計(jì)看似簡(jiǎn)單,只 有那么幾個(gè)子模塊,每個(gè)子模塊的功能很清晰也很簡(jiǎn)單的樣子,但是事實(shí)上卻不是這樣的。每個(gè)子模塊除了要充分完成自己應(yīng)有的功能外還要考慮與其它子模塊的通信接口的定義,并且完成自己應(yīng)有的功能 第 20 頁(yè) 共 46 頁(yè) 時(shí)也會(huì)用到很多別的細(xì)小的編程技巧和方法。本部分名為詳細(xì)設(shè)計(jì),但是一定要詳詳細(xì)細(xì)的描述出所有的細(xì)節(jié)問(wèn)題是很有難度的,在這里只是把最主要的問(wèn)題抽出來(lái)詳細(xì)說(shuō)明,有些細(xì)節(jié)問(wèn)題的描述可能會(huì)被忽略掉,但是會(huì)提到其作用的。本部分分四個(gè)大的子模塊來(lái)描述詳細(xì)設(shè)計(jì)的過(guò)程。 開(kāi)場(chǎng)動(dòng)畫(huà)模塊 問(wèn)題描述 開(kāi)場(chǎng)動(dòng)畫(huà)模塊為整個(gè)游戲的入口 ,在本入口提供給玩家開(kāi)始游戲、退出游戲的按鈕,本模塊實(shí)現(xiàn)的一個(gè)大功能就是如何為按鈕實(shí)現(xiàn)功能,因?yàn)榘粹o為圖片控件,并不能通過(guò)綁定監(jiān)聽(tīng)器的方法來(lái)做到。而后就是開(kāi)場(chǎng)動(dòng)畫(huà)的繪制,和初始界面的繪制,本模塊為游戲的入口,因此應(yīng)該設(shè)計(jì)的華麗,美觀,能給用戶眼前一亮的感覺(jué)。這就對(duì) Surface view繪圖提出了一個(gè)高要求。 問(wèn)題分析 關(guān)于按鈕的實(shí)現(xiàn)設(shè)計(jì) UI線程和子線程交互的問(wèn)題。 當(dāng)應(yīng)用啟動(dòng),系統(tǒng)會(huì)創(chuàng)建一個(gè)主線程( main thread)。這個(gè)主線程負(fù)責(zé)向 UI組件分發(fā)事件(包括繪制事件),也是在這個(gè)主線程里 ,你的應(yīng)用和 Android的 UI組件發(fā)生交互。所以 main thread也叫UI thread也即 UI線程。系統(tǒng)不會(huì)為每個(gè)組件單獨(dú)創(chuàng)建線程,在同一個(gè)進(jìn)程里的 UI組件都會(huì)在 UI線程里實(shí)例化,系統(tǒng)對(duì)每一個(gè)組件的調(diào)用都從 UI線程分發(fā)出去。結(jié)果就是,響應(yīng)系統(tǒng)回調(diào)的方法,永遠(yuǎn)都是在 UI線程里運(yùn)行。當(dāng) App做一些比較耗時(shí)的工作比如訪問(wèn)網(wǎng)絡(luò)或者數(shù)據(jù)庫(kù)查詢,都會(huì)阻塞 UI線程,導(dǎo)致事件停止分發(fā)(包括繪制事件)。對(duì)于用戶來(lái)說(shuō),應(yīng)用看起來(lái)像是卡住了。所以必須把所有的 UI操作放在UI線程里。 實(shí)現(xiàn)方法 在 Android中,對(duì)于 UI的操作通常需要放在主線程中進(jìn)行操作。如果在子線程中有關(guān)于 UI的操作,那么就需要把數(shù)據(jù)消息作為一個(gè) Message對(duì)象發(fā)送到消息隊(duì)列中,然后,由 Handler中的 handlerMessage方法處理傳過(guò)來(lái)的數(shù)據(jù)信息,并操作 UI。 第 21 頁(yè) 共 46 頁(yè) 當(dāng)然, Handler對(duì)象是在主線程中初始化的,因?yàn)樗枰壎ㄔ?主線程 的消息隊(duì)列中。 類 sendMessage(Message msg)方法實(shí)現(xiàn)發(fā)送消息的操作。 在初始化 Handler對(duì)象時(shí)重寫(xiě)的 handleMessage方法來(lái)接收 Message并進(jìn)行相關(guān)操作。 在每個(gè)按鈕按下之后,系統(tǒng)會(huì)發(fā)送不同的消息送給消息隊(duì)列,用以開(kāi)始游戲或者退出游戲,在游戲開(kāi)始后,如果玩家飛機(jī)死亡也會(huì)發(fā)送消息隊(duì)列從而進(jìn)入分?jǐn)?shù)統(tǒng)計(jì)界面。 Handler運(yùn)行機(jī)制如圖 : 圖 Handler 運(yùn)行機(jī)制 ( 1)程序運(yùn)行的入口 Activity為 MainActivity,在此 Activity中的 onCreate通過(guò)對(duì)GameSoundPool來(lái)創(chuàng)建一個(gè)聲音對(duì)象,然后使用 ()初始化當(dāng)前聲音對(duì)象的聲音資源文件。而后等待 Handler機(jī)制接受消息從而進(jìn)行游戲操作或者其他。 Handler的具體實(shí)現(xiàn)核心代碼如下所示: private Handler handler = new Handler(){ 第 22 頁(yè) 共 46 頁(yè) @Override public void handleMessage(Message msg){ if( == ){ toMainView()。 } else if( == ){ toEndView()。 } else if( == ){ endGame()。 } } }。 ( 2) 程序通過(guò)調(diào)用 ReadView來(lái)進(jìn)行過(guò)場(chǎng)動(dòng)畫(huà)界面的初始化操作,在 ReadView類中進(jìn)行初始化時(shí),首先加載圖片資源,然后通過(guò)計(jì)算屏幕的比例,將圖片資源使用畫(huà)筆畫(huà)到屏幕上,因考慮到動(dòng)態(tài)的操作,所有的畫(huà)圖操作均在線程中進(jìn)行定時(shí)操作,每隔一定的時(shí)間根據(jù)當(dāng)前的狀態(tài)重新繪制一次,然后通過(guò) MotionEvent方法進(jìn)行定向坐標(biāo)的按鈕操作,然后發(fā)送消息給消息隊(duì)列,從而方便 Handler操作。界面繪制核心代碼如下所示: canvas = ()。 ()。 ()。 (scalex, scaley, 0, 0)。 (background, 0, 0, paint)。 ()。 (text, text_x, text_y, paint)。 //開(kāi)始游戲的按鈕 (startGame, screen_width / 2 strwid / 2, button_y+ () / 2 + strhei / 2, paint)。 第 23 頁(yè) 共 46 頁(yè) //退出游戲的按鈕 (exitGame, screen_width / 2 strwid / 2, button_y2 + () / 2 + strhei / 2, paint)。 //飛機(jī)飛行的動(dòng)畫(huà) ()。 (fly_x, fly_y, fly_x + (), fly_y + fly_height)。 (planefly, fly_x, fly_y currentFrame * fly_height,paint)。 ( 3) 進(jìn)入程序后,則馬上繪制出過(guò)場(chǎng)動(dòng)畫(huà)界面,如下圖所示: 圖 飛機(jī)大戰(zhàn)游戲 過(guò)場(chǎng)動(dòng)畫(huà)界面 道具制造模塊 問(wèn)題描述 道具制造模塊需要解決的問(wèn)題就是如何批量的生產(chǎn)出游戲運(yùn)行中所需的 大型敵機(jī)、 BOSS子彈、 BOSS敵 機(jī)、中型敵機(jī)、導(dǎo)彈物品、玩家飛機(jī)的子彈(兩種威力)、玩家飛機(jī)、小型敵機(jī),這些物品的制造必須要定義相應(yīng)的功能邏輯屬性,比如炸彈是用來(lái)轟炸敵機(jī)的、不同炸彈的威力也不一樣、每種敵機(jī)的血量也有所不同,當(dāng)然 第 24 頁(yè) 共 46 頁(yè) 摧毀一架敵機(jī)玩家得到的游戲得分也不盡相同。在游戲的進(jìn)行中,還要根據(jù)玩家的水平隨時(shí)出現(xiàn)不同的敵機(jī),并且要控制敵機(jī)的數(shù)量。這就對(duì)道具制造模塊提出了一個(gè)很高的要求,要清晰明了的完成道具制造不是一件容易的事情。 問(wèn)題分析 對(duì)于這些道具的制造,可以充分運(yùn)用 Java 面向?qū)ο蟮脑?,將每個(gè)對(duì)象分別抽象化,忽略一個(gè) 道具中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。通過(guò)對(duì)飛機(jī)炮彈等抽象的實(shí)現(xiàn),可以完美的做到封裝。將道具所使用的數(shù)據(jù)以及道具所能實(shí)現(xiàn)的邏輯功能捆綁在一起,對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。將道具可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。 通過(guò)對(duì)這些對(duì)象的抽象定義,然后再將這些對(duì)象通過(guò)工廠模式封裝成一個(gè)道具制造工廠,可以很方便的通過(guò) Create 方法直接生產(chǎn)出所需的道具。 實(shí)現(xiàn)方法 本部分的道具對(duì)象定義均在 包下,包下集成了眾多的類名定義。包括 、 、 、 、 、 、 、 、 、 、 、 、 類,這些類中包括了每個(gè)道具的繪圖方法,邏輯方法,碰撞檢測(cè)方法。為游戲的順利運(yùn)行提供了堅(jiān)實(shí)的基礎(chǔ)。 ( 1) 為了更加便捷地使用這些方法,首先要避免的就是直接將這些類導(dǎo)入工程之中,隨意調(diào)用,應(yīng)該建立一個(gè)合適的工廠模式,通過(guò)工廠模式統(tǒng)一的對(duì)這些類進(jìn)行管理,這就用到了向上轉(zhuǎn)型,將每個(gè)對(duì)象都向上轉(zhuǎn)型成統(tǒng)一的一個(gè)父類,就可以運(yùn)用工廠模式 ,本工廠類為 。 類繼承關(guān)系如下圖 : 第 25 頁(yè) 共 46 頁(yè) 圖 道具對(duì)象繼承關(guān)系圖 ( 2) 具體 到每個(gè)類到實(shí)現(xiàn)函數(shù),包括數(shù)據(jù)初始化,圖片資源初始化,繪圖函數(shù),碰撞檢測(cè)函數(shù)。因?yàn)檫@些函數(shù)的存在,讓對(duì)象的碰撞檢測(cè)等操作綁定在單一對(duì)象上,而不是通過(guò)游戲操作程序來(lái)記錄,這就為程序調(diào)用起到了大大的便利性。下面以小型敵機(jī)為例,展示下功能實(shí)現(xiàn)方法。繪圖核心代碼如下: public void drawSelf(Canvas canvas) { // TODO Autogenerated method stub //判斷敵機(jī)是否死亡狀態(tài) if(isAlive){ //判斷敵機(jī)是否為爆炸狀態(tài) if(!isExplosion){ if(isVisible){ ()。 (object_x,object_y,object_x + 第 26 頁(yè) 共 46 頁(yè) object_width,object_y + object_height)。 (smallPlane, object_x, object_y,paint)。 ()。 } logic()。 } el
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1