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

正文內(nèi)容

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

2025-06-03 07:53本頁面
  

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