Android遊戲案例開發大全(第4版)

Android遊戲案例開發大全(第4版)

《Android 遊戲案例開發大全(第4版)》是2020年3月人民郵電出版社出版的圖書,作者是吳亞峰、蘇亞光、於復興。

基本介紹

  • 書名:Android遊戲案例開發大全(第4版)
  • 作者:吳亞峰
    蘇亞光
    於復興
  • ISBN:9787115475558
  • 頁數:710頁
  • 定價:108元
  • 出版社:人民郵電出版社
  • 出版時間:2020年3月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

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

圖書目錄

第 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
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

相關詞條

熱門詞條

聯絡我們