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

正文內(nèi)容

基于安卓平臺上的猴王爭霸游戲設(shè)計與開發(fā)(編輯修改稿)

2024-08-31 09:23 本頁面
 

【文章內(nèi)容簡介】 的 SurfaceView 的刷新線程、碰撞檢測和物理效果線程、計時器線程、 AI 線程需要自己編寫。這些線程都是要經(jīng)歷線程的創(chuàng)建、運行、結(jié)束三個階段。當(dāng)游戲主界面開始時,線程開始創(chuàng)建并運行,游戲結(jié)束并跳轉(zhuǎn)到游戲結(jié)果頁面時,線程應(yīng)當(dāng)被關(guān)閉。但是,在通常的情況下,如果采用 stop()或者 destroy()方法來完成線程的停止可能會引發(fā)異?;蛘咤e誤,同時也不利于實現(xiàn)游 戲的暫停功能。那么,既然不能用強制關(guān)閉線程的方式來結(jié)束線程,不妨設(shè)置標(biāo)志位來控制線程的運行。如采用 while( live) {/*線程內(nèi)容 */; sleep( time) }的方式,當(dāng)游戲主界面開始時,將線程啟動,設(shè)置 live 變量為 true,然后重載游戲主界面的 destroy()方法;當(dāng)游戲主界面銷毀時,設(shè)置 live 變量為 false,這樣線程就可以正常結(jié)束運行而不會發(fā)生任何異常和錯誤。 當(dāng)進(jìn)程中存在線程并發(fā)執(zhí)行時,手機的硬件性能會得到很大的利用,但是線程之間的同步互斥則是程序面臨的另一個問題。在 java 中對于對象之間 加鎖可以采用 synchronized實現(xiàn)。對于一些變量的互斥訪問,可以采用 lock()來進(jìn)行加鎖實現(xiàn)。本游戲中也有需要互斥訪問的變量,比如 SurfaceView 的刷新線程正在對游戲畫面進(jìn)行重新繪制時,如果此時游戲的碰撞檢測和物理效果線程對玩家人物進(jìn)行了位置上的移動,那么勢必會造成游戲中玩家角色前后繪制的數(shù)據(jù)不一致造成位置上的差別。諸如此類需要同步的地方還有很多,但是縱觀這些需要并發(fā)的地方,假如沒有采用 lock()鎖來保持同步,所造成的影響并不是十分惡劣。但是如果采用了 lock()鎖,那么會導(dǎo)致游戲線程之間的 并發(fā)量大大下降,從而使游戲畫面異??D,用戶體驗極其糟糕。因此,對于游戲中需要并發(fā)處理的地方,大多采取鴕鳥算法,也就是視而不見或者盡可能采用別的方式讓用戶無法覺察。比如玩家角色的移動數(shù)據(jù)問題,本游戲所采取的方式就是使游戲畫面的刷新頻率較低,處于 3540 次左右,然后將游戲中碰撞檢測和物理效果線程的運行周期縮短,這樣每次刷新屏幕的移動距離就不會十分明顯。雖然沒有解決同步問題,但是用戶在視覺上已無法覺察。 碰撞檢測和物理效果線程和 AI 線程在后續(xù)的兩節(jié)介紹,這里先說 SurfaceView 刷新線程。這個線程的主要功 能在上一節(jié)游戲繪圖技術(shù)里面已經(jīng)講了,其主要作用就是對游戲主界面進(jìn)行繪制且繪制的頻率要適當(dāng)。線程依然是采用判斷 live 標(biāo)志位來決定是否結(jié)束,當(dāng)游戲主界面退出時, live 被置為 false,此時 SurfaceView 線程將在運行完最后一遍時退出,如圖 所示。 河北工業(yè)大學(xué) 20xx 屆本科優(yōu)秀畢業(yè)設(shè)計論文 7 游戲中的計時器計時線程的主要作用是對游戲中蓄力條的計時,包括玩家或者 AI 的跳躍蓄力和開火蓄力。一般來說,玩家或者 AI 并不是每時每刻都在進(jìn)行跳躍或者開火的蓄力,也就意味著計時器計時線程可能會在一段時間里空轉(zhuǎn)。另外,啟動一個線程和一個銷毀線程都需要不小的開銷,并且計時線程在時間上需要一致,所以采取僅用一個計時線程的方式更有利于提高游戲的效率。 計時線程中利用 LinkedListFJTimeThread申明一個鏈表,這個鏈表的節(jié)點是FJTimeThread 類對象。當(dāng)玩家或者 AI 需要蓄力計時,就創(chuàng)建一個計時 FJTimeThread 類的對象作為計時鏈表節(jié)點加入到計時鏈表中。只要 live 變量是 true,計時線程就會對每一個計時節(jié)點進(jìn)行一次計時操作,這樣就完成了玩家和 AI 共用一個計時線程完成所有的計時的 SurfaceView 刷新線程 河北工業(yè)大學(xué) 20xx 屆本科優(yōu)秀畢業(yè)設(shè)計論文 8 效果,如圖 所示。 游戲中的碰撞技術(shù)與其他物理效果 游戲中玩家角色能夠停留在地圖中的樹枝上,需要用到碰撞檢測技術(shù);玩家角色之間的不可重疊也用到了碰撞檢測技術(shù);子彈擊中人物的效果也應(yīng)用到碰撞檢測技術(shù)。故本游戲中一共有三種碰撞方式,人物角色與可停留物之間的碰 撞、子彈與人物角色之間的碰撞和人物角色之間的碰撞。由于在安卓游戲中,大部分機器的內(nèi)存運行速度都十分有限,游戲的碰撞檢測往往偏重于效率所以往往采取比較簡單的碰撞檢測方式。 在游戲中人物角色與可停留物之間的碰撞檢測采取矩形。也就是用一個個矩形框來標(biāo)志地圖中的碰撞域。這樣,當(dāng)玩家角色的坐標(biāo)與這個矩形的范圍發(fā)生重合時,則發(fā)生碰撞,從而進(jìn)行相應(yīng)的碰撞處理。假如玩家角色與矩形碰撞域碰撞,玩家角色在矩形上方且玩家的Y 軸速度為正,那么玩家角色應(yīng)該停在矩形碰撞域的上方;假如玩家角色從下方與矩形碰撞圖 計時線程 河北工業(yè)大學(xué) 20xx 屆本科優(yōu)秀畢業(yè)設(shè)計論文 9 域發(fā)生碰撞,且玩家 Y 軸方向速 度為負(fù),那么玩家的速度應(yīng)該立刻取其絕對值并改 Y 軸的方向為正,這樣就實現(xiàn)了角色從下方撞到碰撞域上并被反彈下去的效果;如果玩家角色從左邊或者右邊與碰撞域發(fā)生碰撞,那么不管其速度為多少,將其速度置為零,這樣就可實現(xiàn)了角色在空中左右晃動時撞上碰撞域而不會陷入的效果。 對于碰撞域的獲取,采用將碰撞域用文件的形式記錄下來的方式,放在用戶手機的 sd卡中,這樣當(dāng)用戶進(jìn)入游戲時就開始加載游戲地圖和地圖碰撞域。由于矩形的碰撞域只需要確定其左上角
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1