Android 游戲案例開發大全, 4/e Android 游戏案例开发大全 第4版

吳亞峰 蘇亞光 於復興

  • 出版商: 人民郵電
  • 出版日期: 2018-08-01
  • 售價: $648
  • 貴賓價: 9.5$616
  • 語言: 簡體中文
  • 頁數: 710
  • 裝訂: 平裝
  • ISBN: 7115475555
  • ISBN-13: 9787115475558
  • 相關分類: Android
  • 立即出貨

買這商品的人也買了...

商品描述

內 容 提 要
本書內容分為兩大部分:首先講解了Android游戲開發核心技術,主要包括Android游戲開發的前臺渲染、交互式通信、數據存儲和傳感器、網絡編程、游戲背後的數學與物理、游戲地圖開發、游戲開發小秘技、JBox2D物理引擎、3D應用開發基礎等;接下來介紹Android游戲開發實戰綜合案例,包括多種流行的游戲類型,如滾屏動作類游戲—《坦克大戰》、網絡游戲—《風火三國》、益智類游戲—《Wo!Water!》、3D塔防類游戲—《三國塔防》、策略游戲—《大富翁》、休閑類游戲—《切切樂》、休閑類游戲—《3D冰球》等。
本書適合Android初學者、游戲開發人員閱讀,也可作為高校相關專業的學慣用書或培訓學校的教材。

作者簡介

吳亞峰,畢業於北京郵電大學,後留學澳大利亞臥龍崗大學取得碩士學位。

1998年開始從事Java應用的開發,有10多年的Java開發與培訓經驗。

主要的研究方向為OpenGL ES、WebGL、Vulkan及手機遊戲。

同時為手機遊戲、移動3D應用獨立軟件開發工程師,並兼任百納科技Java培訓中心首xi培訓師。

近十年來為數十家企業培養了上千名軟件開發人員,

曾編寫過《Cocos2d-X案例開發大全》《Cocos2d-X 3.0遊戲開發實戰詳解》《Cocos2d-X 3.x 遊戲案例開發大全》

《OpenGL ES 3.x遊戲開發(上下卷)》《H5和WebGL 3D開發實戰詳解》等多本暢銷技術書籍。

2008年初開始關注Android平台下的3D應用開發,並開發出一系列的Android應用程序與3D遊

目錄大綱

第1章Android平台簡介1 
1.1 Android的來龍去脈1 
1.2掀起Android的蓋頭來1 
1.2.1選擇Android的理由1 
1.2.2 Android的應用程序框架2 
1.3 Android開發環境的搭建4 
1.3.1 Android Studio和Android SDK的下載4 
1.3.2 Android Studio和Android SDK的安裝4 
1.3.3開發第一個Android程序8 
1.3.4 Android程序的監控與調試13 
1.4已有Android Studio項目的導入與
運行14 
1.5本章小結16 

第2章Android遊戲開發中的前台渲染17 
2.1創建Android用戶界面17 
2.1.1佈局管理17 
2.1.2常用控件及其事件處理22 
2.2圖形與動畫在Android中的實現24 
2.2.1簡單圖形的繪製24 
2.2.2貼圖的藝術25 
2.2.3剪裁功能27 
2.2.4自定義動畫的播放30 
2.3 Android平台下的多媒體開發32 
2.3.1音頻的播放32
2.3.2視頻的播放35 
2.3.3 Camera圖像採集37 
2.4本章小結39 

第3章Android遊戲開發中的交互式
通信40 
3.1 Android應用程序的基本組件40 
3.1.1 Activity組件40 
3.1.2 Service組件42 
3.1.3 Broadcast Receiver組件42 
3.1.4 Content Provider組件43 
3.1.5 AndroidManifest.xml文件
簡介44 
3.2應用程序的內部通信46 
3.2.1消息的處理者—Handler類簡介47 
3.2.2使用Handler進行內部通信48 
3.3應用程序組件之間的通信49 
3.3.1 Intent類簡介50 
3.3.2應用程序組件—IntentFilter類簡介51 
3.3.3示例1:與Android系統組件通信52 
3.3.4示例2:應用程序組件間通信示例Activity部分的開發53 
3.3.5示例3:應用程序組件間通信示例Service部分的開發55 
3.4本章小結57 

第4章Android遊戲開發中的數據存儲和傳感器58 
4.1在Android平台上實現數據存儲58 
4.1.1私有文件夾文件的寫入與
讀取58 
4.1.2讀取Resources和Assets中的文件61 
4.1.3輕量級數據庫SQLite簡介63 
4.1.4 SQLite的使用示例65 
4.1.5數據共享者—Content Provider的使用68 
4.1.6簡單的數據存儲—Preferences的使用71 
4.2 Android平台下傳感器應用的開發73 
4.2.1基本開發步驟74 
4.2.2光傳感器76 
4.2.3溫度傳感器77 
4.2.4接近傳感器79 
4.2.5加速度傳感器80 
4.2.6磁場傳感器82 
4.2.7姿態傳感器84 
4.2.8陀螺儀傳感器87 
4.2.9加速度傳感器綜合案例88 
4.2.10傳感器的坐標軸問題91 
4.3本章小結94 

第5章Android遊戲開發中的網絡編程95 
5.1基於Socket套接字的網絡編程95 
5.2基於HTTP的網絡編程98 
5.2.1通過URL獲取網絡資源98 
5.2.2在Android中解析XML 100 
5.3藍牙通信101 
5.3.1基礎知識101 
5.3.2簡單的案例101 
5.4簡單的多用戶並發網絡遊戲編程
架構112 
5.4.1基本知識112 
5.4.2雙人聯網操控飛機案例114 
5.5本章小結123 

第6章不一樣的遊戲,一樣的精彩應用125 
6.1射擊類游戲125 
6.1.1遊戲玩法125 
6.1.2視覺效果125 
6.1.3遊戲內容設計126 
6.2競速類游戲127 
6.2.1遊戲玩法127 
6.2.2視覺效果127 
6.2.3遊戲內容設計127 
6.3益智類游戲128 
6.3.1遊戲玩法128 
6.3.2視覺效果129 
6.3.3遊戲內容設計129 
6.4角色扮演遊戲129 
6.4.1遊戲玩法129 
6.4.2視覺效果130 
6.4.3遊戲內容設計131 
6.5闖關動作類游戲131 
6.5.1遊戲玩法132 
6.5.2視覺效果132 
6.5.3遊戲內容設計132 
6.6冒險遊戲132 
6.6.1遊戲玩法133 
6.6.2視覺效果133 
6.6.3遊戲內容設計134 
6.7策略遊戲134 
6.7.1遊戲玩法134
6.7.2視覺效果135 
6.7.3遊戲內容設計135 
6.8養成類游戲135 
6.8.1遊戲玩法135 
6.8.2視覺效果136 
6.8.3遊戲內容設計136 
6.9經營類游戲137 
6.9.1遊戲玩法137 
6.9 .2視覺效果137 
6.9.3遊戲內容設計138 
6.10體育類游戲138 
6.10.1遊戲玩法138 
6.10.2視覺效果139 
6.10.3遊戲內容設計139 
6.11本章小結139 

第7章遊戲背後的數學與物理140 
7.1編程中經常用到的數理知識140 
7.1.1數學方面140 
7.1.2物理方面142 
7.2碰撞檢測技術143 
7.2.1碰撞檢測技術基礎143 
7.2.2遊戲中實體對象之間的碰撞檢測144 
7.2. 3遊戲實體對象與環境之間的碰撞檢測146 
7.2.4穿透效應問題147 
7.3必知必會的計算幾何148 
7.3.1 GeoLib庫中常用基礎類的
介紹148 
7.3.2無孔多邊形的相關知識156 
7.3.3有孔多邊形的相關知識159
7.3.4有孔多邊形案例162 
7.3.5顯示凸殼案例166 
7.3.6多邊形切分案例169 
7.3.7顯示包圍框以及多邊形的
矩形組合案例173 
7.3.8旋轉與凸子區域案例175 
7.3.9平滑與計算最短距離案例177 
7.3.10多邊形縮放與不重疊案例178 
7.3.11求多邊形對稱案例180 
7.3.12多邊形集合運算案例181 
7.4本章小結183 

第8章遊戲地圖必知必會184 
8.1兩種不同單元形狀的地圖184 
8.1.1正方形單元地圖184 
8.1.2正方形單元地圖案例186 
8.1.3正六邊形單元地圖187 
8.1.4正六邊形單元地圖案例189 
8.1.5正方形單元和正六邊形單元地圖的比較191 
8.2正六邊形單元地圖的路徑搜索191 
8.2.1路徑搜索示例基本框架的
搭建191 
8.2.2深度優先路徑搜索DFS 197 
8.2.3廣度優先路徑搜索199 
8.2.4路徑搜索算法—Dijkstra 
算法201 
8.2.5用A*算法優化算法204 
8.3正六邊形單元地圖的網格定位206 
8.3.1基本知識206
8.3.2簡單的案例206 
8.4地圖編輯器與關卡設計208 
8.4.1關卡地圖的重要性208 
8.4.2圖片分割界面的實現210 
8.4.3地圖設計界面的實現214 
8.5多分辨率屏幕的自適應219 
8.5.1非等比例縮放219 
8.5.2非等比例縮放案例220 
8.5.3等比例縮放並剪裁223 
8.5.4等比例縮放並剪裁案例224 
8.5.5等比例縮放並留白225 
8.5.6等比例縮放並留白案例226 
8.6本章小結227 

第9章遊戲開發小秘技228 
9.1有限狀態機228 
9.1.1什麼是有限狀態機228 
9.1.2有限狀態機的簡單實現229 
9.1.3有限狀態機的OO實現233 
9.2遊戲中的模糊邏輯235 
9.2.1模糊的才是真實的235 
9.2.2如何在Android中將游戲
模糊化236 
9.3遊戲的基本優化技巧238 
9.3.1代碼上的小藝術238 
9.3 .2 Android中的查找表技術239 
9.3.3遊戲的感覺和性能問題241 
9.4多點觸控技術的使用242 
9.4.1基本知識242
9.4.2一個簡單的案例243 
9.5本章小結247 

第10章JBox2D物理引擎248 
10.1物理引擎很重要248 
10.1.1什麼是物理引擎248 
10.1.2常見的物理引擎248 
10.2 2D的王者JBox2D 251 
10.2.1基本的物理學概念251 
10.2.2 JBox2D中常用類的介紹252 
10.3木塊金字塔被撞擊案例262 
10.3.1案例運行效果262 
10.3.2案例的基本框架結構263 
10.3.3常量類—Constant 263 
10.3. 4物體類—MyBody 264 
10.3.5圓形物體類— 
 MyCircleColor 264 
10.3.6矩形物體類— 
 MyRectColor 265 
10.3.7生成物理形狀工具類— 
 Box2DUtil 266 
10.3.8主控制類— 
 MyBox2dActivity 267 
10.3.9顯示界面類— 
 GameView 269 
10.3.10繪製線程類— 
 DrawThread 270 
10.4簡易打磚塊案例271 
10.4.1案例運行效果271
10.4.2需要了解的類271 
10.4.3碰撞監聽器— 
 MyContactListener類274 
10.4.4碰撞檢測工具類— 
 BodySearchUtil 275 
10.4.5繪製線程類— 
 DrawThread 275 
10.5物體無碰撞下落案例276 
10.5.1案例運行效果276 
10.5.2碰撞過濾器— 
 ContactFilter類277 
10.5.3碰撞過濾類的開發277 
10.5.4多邊形剛體類— 
 MyPolygonColor 278 
10.5.5生成剛體性狀的工具類— 
 Box2DUtil 279 
10.5.6主控制類— 
 MyBox2dActivity 279 
10.5.7顯示界麵類— 
 GameView 281 
10.6關節—Joint 282 
10.6.1關節定義—JointDef類282 
10.6.2距離關節描述— 
 DistanceJointDef類282 
10.6.3距離關節案例— 
 小球下擺283 
10.6.4旋轉關節描述— 
 RevoluteJointDef類286 
10.6.5旋轉關節案例—轉動的
 風扇與蹺蹺板287 
10.6.6鼠標關節描述— 
 MouseJointDef類290 
10.6.7鼠標關節案例— 
 物體下落290 
10.6.8移動關節描述— 
 PrismaticJointDef類294 
10.6.9移動關節案例—定向
 移動的木塊295 
10.6.10齒輪關節描述— 
 GearJointDef類297 
10.6.11齒輪關節案例—轉動的
 齒輪298 
10.6.12焊接關節描述— 
 WeldJointDef類301 
10.6.13焊接關節案例— 
 有彈性的木板301 
10.6.14滑輪關節描述— 
 PulleyJointDef類304 
10.6.15滑輪關節案例—移動的
 木塊304 
10.6.16車輪關節描述— 
 WheelJointDef類306 
10.6.17車輪關節案例— 
 運動的小車307 
10.6.18繩索關節描述— 
 RopeJointDef類309 
10.6.19繩索關節案例—掉落的
 糖果309 
10.7模擬傳送帶案例317 
10.7.1案例運行效果317
10.7.2碰撞監聽器— 
 MyContactListener類318 
10.7.3主控制類— 
 MyBox2DActivity 320 
10.7.4線程類—DrawThread 321 
10.8光線投射案例322 
10.8.1案例運行效果322 
10.8.2 RayCastInput類與RayCastOutput類322 
10.8. 3光線檢測類— 
 MyRayCast 323 
10.8.4主控制類— 
 MyBox2dActivity 324 
10.8.5顯示界麵類— 
 GameView 325 
10.9模擬爆炸案例327 
10.9.1案例運行效果327 
10.9.2光線投射回調接口— 
 RayCastCallback 327 
10.9.3自身的光線投射回調類— 
 RayCastClosestCallback 328 
10.9.4主控制類— 
 MyBox2dActivity 328 
10.10流體模擬329 
10.10.1流體模擬的相關知識330 
10.10.2波浪製造機案例333 
10.10.3軟體案例336 
10.10.4固體案例337 
10.10.5粉塵案例339
10.11本章小結340 

第11章3D應用開發基礎341 
11.1 OpenGL和OpenGL ES簡介341 
11.2 3D基本知識343 
11.3 OpenGL ES 2.0 344 
11.3.1 OpenGL ES 2.0的渲染
 管線345 
11.3.2不同的繪製方式348 
11.3.3初識OpenGL ES 2.0應用
 程序350 
11.3.4著色語言355 
11.3.5正交投影357 
11.3.6透視投影361 
11.3.7光照的3種組成元素364 
11.3.8定向光與定位光366 
11.3.9點法向量和麵法向量371 
11.3.10紋理映射372 
11.4利用OpenGL ES 2.0繪製真實的
 流體377 
11.4.1流體繪製的策略377 
11.4.2一個簡單的案例379 
11.4.3流體計算流水線回顧388 
11.5 OpenGL ES 3.x 389 
11.5.1程序升級的要點390 
11.5.2一個簡單的案例390 
11.6用OpenGL ES實現2D繪製392 
11.7本章小結394 

第12章滾屏動作類游戲—
 《坦克大戰》 395 
12.1遊戲的背景及功能概述395 
12.1.1背景概述395 
12.1.2功能簡介395 
12.2遊戲的策劃及準備工作397 
12.2.1遊戲的策劃397 
12.2.2安卓平台下游戲開發的準備
 工作398 
12.3遊戲的架構401 
12.3.1程序結構的簡要介紹401 
12.3.2服務器端的簡要介紹401 
12.4服務器端的開發402 
12.4.1數據類的開發402 
12.4.2服務線程的開發403 
12.4.3碰撞檢測類的開發405 
12.4.4動作執行類的開發407 
12.4.5狀態更新類的開發410 
12.5 Android端的開發411 
12.5.1數據類的開發411 
12.5.2 TankActivity類的開發413 
12.5.3 MySurfaceView類的開發415 
12.5.4菜單類的開發419 
12.5.5雜項類的開發421 
12.5.6物體繪製類的開發425 
12.6輔助工具類426 
12.6.1搖桿工具類的開發426 
12.6.2數據接收工具類的開發428
12.6.3數據發送工具類的開發429 
12.7地圖設計器431 
12.8遊戲的優化及改進432 

第13章網絡遊戲開發—《風火三國》網絡
 對戰遊戲433 
13.1遊戲背景及功能概述433 
13.1.1背景概述433 
13.1.2功能簡介434 
13.2遊戲策劃及準備工作436 
13.2.1遊戲的策劃436 
13.2.2 Android平台下游戲開發的
 準備工作436 
13.3遊戲的框架437 
13.3.1各個類的簡要介紹437 
13.3.2遊戲的框架簡介438 
13.4共有類SanGuoActivity的實現439 
13.5輔助界面相關類的實現444 
13.5.1歡迎界麵類444 
13.5.2主菜單界麵類446 
13.6遊戲界面相關類的實現448 
13.6.1遊戲界面框架449 
13.6.2界面刷幀線程類457 
13.6.3牌圖分割類457 
13.6.4牌的控制類459 
13.6.5出牌規則類460 
13.7客戶端代理線程461 
13.8服務器相關類464 
13.8.1服務器主類464
13.8.2服務器代理線程466 
13.8.3發牌類473 
13.8.4初始化血點類474 
13.8.5判斷裝備牌類474 
13.8.6管理玩家距離類475 
13.9本章小結476 

第14章益智類游戲—《Wo !Water!》 477 
14.1遊戲背景和功能概述477 
14.1.1背景概述477 
14.1.2功能介紹478 
14.2遊戲的策劃及準備工作480 
14.2.1遊戲的策劃480 
14.2.2安卓平台下游戲開發的準備
 工作481 
14.3遊戲的架構483 
14.3.1各個類的簡要介紹484 
14.3.2遊戲框架簡介486 
14.4常量及公共類488 
14.4.1遊戲主控類MainActivity 488 
14.4.2遊戲常量類Constant 490 
14.4.3遊戲常量類
 SourceConstant 491 
14.5界面相關類494 
14.5.1遊戲界面管理類ViewManager 494 
14.5.2主選關界麵類BNMainSelectView 498 
14.5.3遊戲界麵類BNGameView 502
14.5.4紋理矩形繪製類RectForDraw 512 
14.5.5屏幕自適應相關類515 
14.6線程相關類517 
14.6.1物理刷幀線程類PhysicsThread 517 
14.6.2數據計算線程類
 SaveThread 519 
14.6.3火焰線程類
 FireUpdateThread 520 
14.7水粒子的相關類521 
14.7.1水粒子物理封裝類
 WaterObject 521 
14.7.2水紋理生成類
 WaterForDraw 522 
14.7.3計算類PhyCaulate 525 
14.8遊戲中著色器的開發528 
14.8.1紋理的著色器528 
14.8 .2水紋理的著色器529 
14.8.3加載界面閃屏紋理的
 著色器530 
14.8.4煙火的紋理著色器531 
14.9遊戲地圖數據文件介紹531 
14.10遊戲的優化及改進533 

第15章3D塔防類遊戲— 
 《三國塔防》 534 
15.1背景和功能概述534 
15.1.1遊戲背景概述534 
15.1.2遊戲功能簡介534 
15.2遊戲的策劃及準備工作538
15.2.1遊戲的策劃538 
15.2.2手機平台下游戲的準備
 工作538 
15.3遊戲的架構542 
15.3.1各個類的簡要介紹542 
15.3.2遊戲框架簡介545 
15.4公共類TaFang_Activity 546 
15.5界面顯示類548 
15.5 .1顯示界麵類
 GlSurfaceView 549 
15.5.2界面抽象父類TFAbstractView 549 
15.5.3加載資源界麵類
 LoadView 550 
15.5.4選關設置界麵類
 SelectView 551 
15.5.5武器界麵類WeaponView 553 
15.6場景及相關類553 
15.6 .1總場景管理類AllSence 554 
15.6.2關卡場景類SenceLevel1 555 
15.6.3水麵類Water 556 
15.6.4場景數據管理類
 SenceData 556 
15.7輔助類557 
15.7.1按鈕管理類MenuButton 557 
15.7.2單個怪物類
 SingleMonster1 558 
15.7.3單個砲彈類SingleBullet1 561
15.7.4標誌板管理類
 BoardGroup 563 
15.7.5砲台管理類PaoGroup 564 
15.8工具線程類565 
15.8.1 obj模型加載類LoadUtil 565 
15.8.2交點坐標計算類IntersectantUtil 567 
15.8.3紋理管理器類TextureManager 567 
15.8 .4水流動線程類
 WaterThread 568 
15.8.5怪物砲彈控制線程類
 MonPaoThread 569 
15.9粒子系統與著色器的開發569 
15.9.1粒子系統的開發570 
15.9.2著色器的開發571 
15.10遊戲的優化及改進573 
15.11本章小結574 

第16章策略遊戲—《大富翁》 575 
16.1遊戲的背景和功能概述575 
16.1.1背景概述575 
16.1.2功能簡介575 
16.2遊戲的策劃及準備工作578 
16.2.1遊戲的策劃578 
16.2.2安卓平台下游戲開發的準備
 工作579 
16.3遊戲的架構585 
16.3.1程序結構的簡要介紹585 
16.3.2遊戲各個類的簡要介紹585
16.4地圖設計器的開發587 
16.4.1地圖設計器的開發設計
 思路587 
16.4.2地圖設計器的框架介紹588 
16.4.3底層地圖設計器的開發
 步驟588 
16.5 Activity和遊戲工具類的開發592 
16.5. 1主控制類—ZActivity的開發592 
16.5.2常量工具類ConstantUtil的
 開發594 
16.5.3日期管理類DateUtil的
 開發595 
16.5.4圖片管理類PicManager的
 開發596 
16.6數據存取模塊的開發597 
16.6.1地圖層信息的封裝類597 
16.6.2數據存取相關類的
 介紹600 
16.7人物角色模塊的開發604 
16.7.1 Figure類的代碼框架604 
16.7.2 Dice類的代碼框架606 
16.7.3 FigureGoThread類的
 代碼框架607 
16.8表示層界面模塊的開發612 
16.8.1遊戲界面GameView的框架
 介紹612 
16.8.2遊戲界面繪製方法onDraw的
 介紹614
16.8.3遊戲界面屏幕監聽方法onTouch的介紹618 
16.8.4後台線程GameViewThread的
 開發619 
16.9地圖中可遇實體模塊的開發620 
16.9.1繪製類—MyDrawable的
 開發620 
16.9.2抽像類— 
 MyMeetableDrawable的
 開發622 
16.9.3土地類— 
 GroundDrawable類623 
16.9.4可遇實體對象的調用
 流程624 
16.10管理面板模塊的開發625 
16.11遊戲的優化及改進627 

第17章休閒類游戲—《切切樂》 629 
17.1遊戲的背景和功能概述629 
17.1.1背景描述629 
17.1.2功能介紹630 
17.2遊戲的策劃及準備工作633 
17.2.1遊戲的策劃633 
17.2.2手機平台下游戲的準備
 工作633 
17.3遊戲的架構635 
17.3. 1各個類的簡要介紹635 
17.3.2遊戲框架簡介637 
17.4顯示界麵類638 
17.5輔助工具類644 
17.5.1工具類645
17.5.2輔助類648 
17.6繪製相關類658 
17.6.1 BNObject繪製類的
 開發658 
17.6.2 BNPolyObject繪製類的
 開發662 
17.7雪花粒子系統的開發663 
17.7.1基本原理664 
17.7.2開發步驟664 
17.8本遊戲中的著色器666 
17.9遊戲的優化及改進668 
17.10本章小結669 

第18章休閒類游戲—《3D冰球》 670 
18.1遊戲的背景和功能概述670 
18.1.1背景描述670 
18.1.2功能介紹671 
18.2遊戲的策劃及準備工作674 
18.2.1遊戲的策劃674 
18.2.2手機平台下游戲的準備
 工作675 
18.3遊戲的架構677 
18.3.1各個類的簡要介紹677 
18.3.2遊戲框架簡介680 
18.4顯示界麵類681 
18.4.1顯示界面MySurfaceView 
 類681 
18.4.2加載界面LoadingView類682 
18.4.3主界面MainView類683  
18.4.4轉場界面TransitionView
 類685 
18.4.5遊戲界面GameView類686 
18.5輔助工具類689 
18.5.1工具類689 
18.5.2輔助類693 
18.5.3線程類699 
18.6繪製相關類702 
18.6.1 3D模型繪製類的開發702 
18.6. 2 BN3DObject繪製類的開發704 
18.7粒子系統的開發705 
18.7.1基本原理706 
18.7.2開發步驟706 
18.8本遊戲中的著色器708 
18.9遊戲的優化及改進710 
18.10本章小結710