內容簡介
《Android 3D遊戲案例開發大全》以Android手機3D遊戲開發為主題,通過9個典型範例,全面深入地講解了Android平台下如何利用OpenGL ES進行3D遊戲開發的技術和技巧。
全書共分10章,其中第 1章為Android平台的簡介及Android開發環境的搭建;第 2章是棋牌類遊戲的開發;第3章和第7章介紹了物理引擎類遊戲;第4章介紹了一款藍牙對戰遊戲;第5章講解了一款競速類遊戲的開發流程;第6章是一款益智類遊戲的開發詳解;第8章給出了一款休閒類遊戲案例;第9章和第 10章是體育競技類遊戲開發。為了便於讀者學習,《Android 3D遊戲案例開發大全》附贈的光碟中包含了書中所有案例的完整原始碼,並對程式進行了詳細注釋,最大限度地幫助讀者快速掌握3D遊戲的開發技術。
《Android 3D遊戲案例開發大全》以真實的3D遊戲項目開發為寫作背景,具有很強的實用性和實戰性。講解上深入淺出、通俗易懂,既有Android開發的實戰技術和技巧,也包括真實3D項目的策劃方案。《Android 3D遊戲案例開發大全》非常適合初學者或有一定Android基礎,並希望學習Android 3D高級開發技術的讀者使用。
圖書目錄
第 1章 千里之行始於足下——Android平台簡介及開發環境的使用 1
1.1 Android的來龍去脈 1
1.2 掀起Android的蓋頭來 2
1.2.1 選擇Android的理由 2
1.2.2 Android的應用程式框架 3
1.3 Android開發環境的搭建 5
1.3.1 SDK的下載及安裝 5
1.3.2 Eclipse集成開發環境的搭建 6
1.3.3 虛擬設備的創建與模擬器的運行 8
1.3.4 Eclipse與真機的連線 11
1.3.5 導入並運行Android程式 12
1.3.6 Android程式的監控與調試 12
1.4 小結 14
第 2章 棋牌類3D遊戲——西洋棋人機對弈 15
2.1 遊戲背景及功能概述 15
2.1.1 背景概述 15
2.1.2 功能簡介 16
2.2 遊戲的策劃和準備工作 18
2.2.1 遊戲的策劃 18
2.2.2 遊戲的準備工作 19
2.3 遊戲的架構 21
2.3.1 各個類簡要介紹 21
2.3.2 遊戲框架簡介 23
2.4 主控制類——GJXQActivity類的開發 24
2.5 輔助界面相關類 28
2.5.1 歡迎界面類WelcomeView 29
2.5.2 選單界面類MenuView 31
2.5.3 設定界面類SetView 34
2.5.4 幫助界面類HelpView 38
2.5.5 關於界面類AboutView 40
2.6 遊戲界面相關類 41
2.6.1 操控動作類Action 41
2.6.2 操控動作類型類ActionType 42
2.6.3 頂點數據管理者VertexDataManager 42
2.6.4 紋理圖數據管理者PicDataManager 44
2.6.5 遊戲界面GameSurfaceView 45
2.6.6 動作佇列執行執行緒DoActionThread 52
2.7 相關工具類 60
2.7.1 模型載入類LoadUtil 60
2.7.2 西洋棋規則類ChessRuleUtil 63
2.7.3 機器自動走棋類RobotAutoUtil 68
2.7.4 包圍盒工具類AABB3Util 74
2.7.5 拾取相關計算類IntersectantUtil 75
2.8 遊戲的最佳化與改進 78
第3章 物理引擎3D遊戲——瘋狂的石頭 79
3.1 遊戲背景及功能介紹 79
3.1.1 遊戲背景概述 79
3.1.2 遊戲功能介紹 79
3.2 遊戲的策劃及準備工作 81
3.2.1 遊戲的策劃 81
3.2.2 遊戲開發前的準備工作 81
3.3 遊戲的架構 82
3.3.1 各個類的簡要介紹 83
3.3.2 遊戲框架簡介 85
3.4 主控制類MyActivity 86
3.5 2D界面類 90
3.5.1 歡迎界面類 90
3.5.2 父類界面RootView 92
3.5.3 主選單界面MainMenuView 92
3.5.4 2D界面繪製類DrawCurrView 96
3.5.5 選關界面 SelectView 97
3.5.6 幫助界面 HelpView 100
3.6 工具類 101
3.6.1 圖片工具類PicLoadUtil 101
3.6.2 坐標轉換工具類From2DTo3DUtil 102
3.6.3 聲音工具類 SoundUtil 103
3.6.4 數據存儲工具類SharedPreferencesUtil 104
3.6.5 靜態數據工具類Constant 105
3.7 剛體類及剛體紋理類 109
3.7.1 創建剛體的工具類Box2DUtil 110
3.7.2 小球類 Ball 114
3.7.3 平面矩形紋理類TextureRectangular 119
3.7.4 長方體類 Rec 121
3.7.5 齒輪紋理類 ChiLun 125
3.7.6 木桶類 MuTong 126
3.7.7 木桶紋理Texture_MuTong 127
3.8 遊戲界面相關類 131
3.8.1 遊戲界面 GameView 131
3.8.2 碰撞監聽工具類CollisionAction 136
3.8.3 移動控制執行緒ChangeThread 138
3.9 遊戲的最佳化與改進 139
第4章 藍牙對戰遊戲——3D坦克對戰 140
4.1 遊戲背景及功能概述 140
4.1.1 背景概述 140
4.1.2 功能介紹 141
4.2 遊戲的策劃及準備工作 143
4.2.1 遊戲的策劃 143
4.2.2 Android平台下遊戲的準備工作 143
4.3 遊戲的架構 146
4.3.1 各個類簡要介紹 146
4.3.2 遊戲框架簡介 149
4.4 公共類 150
4.4.1 主控制類MainActivity 150
4.4.2 子彈類BulletTextureByVertex 162
4.4.3 地板類Floor 166
4.4.4 矮牆類LowWall 168
4.5 藍牙相關類 170
4.5.1 後台服務類MyService 170
4.5.2 顯示設備的Activity類MyDeviceListActivity 176
4.6 2D界面相關類 178
4.6.1 主選單界面類MainView 179
4.6.2 聲音控制工具類SoundUtil 183
4.6.3 設定界面類SettingView 184
4.6.4 藍牙界面類BuleView 188
4.7 遊戲界面相關類 191
4.7.1 遊戲界面類MySurfaceView 191
4.7.2 點數據處理類BNPoint 209
4.7.3 子彈類Bullet 210
4.7.4 子彈走執行緒類BulletGoThread 213
4.7.5 執行動作執行緒類DoActionThread 215
4.8 遊戲的最佳化與改進 219
第5章 競速類遊戲——快樂小球 221
5.1 遊戲背景及功能概述 221
5.1.1 遊戲背景概述 221
5.1.2 功能介紹 221
5.2 遊戲的策劃及準備工作 223
5.2.1 遊戲的策劃 223
5.2.2 Android平台下遊戲的開發準備工作 223
5.3 遊戲的架構 225
5.3.1 各個類簡要介紹 225
5.3.2 遊戲框架簡介 228
5.4 公共類RadioBallActivity 229
5.5 輔助界面相關類 234
5.5.1 歡迎界面類WelcomeView 235
5.5.2 2D界面的父類MySFView 237
5.5.3 主選單界面類MenuView 238
5.5.4 音效設定界面類SoundView 240
5.5.5 幫助界面類HelpView 243
5.5.6 歷史界面類HistoryView 245
5.6 遊戲界面相關類 248
5.6.1 小球類 Ball 248
5.6.2 小球執行緒類BallThread 251
5.6.3 管道類GuanDao 253
5.6.4 簡單賽道類SaiDao 256
5.6.5 賽道類SaiDaoYC 257
5.6.6 玻璃類 BoLi 257
5.6.7 油桶上下面的圓類Circle 259
5.6.8 油桶的側面類CircleSider 261
5.6.9 油桶類YuanZhu 264
5.6.10 貨櫃類Container 265
5.6.11 立方體類LiFangTi 267
5.6.12 紋理矩形類TextureRect 269
5.6.13 物體控制類WuTiForControl 270
5.6.14 地圖類 MapData 271
5.6.15 正方形類 Rectangular 272
5.6.16 立方體類 Cube 273
5.6.17 立方體組類 CubeGroup 274
5.6.18 立方體組的執行緒控制類CubeThread 276
5.6.19 遊戲界面類MySurfaceView 277
5.7 遊戲的最佳化與改進 285
第6章 益智類遊戲——3D推箱子 286
6.1 遊戲背景及功能概述 286
6.1.1 遊戲背景概述 286
6.1.2 遊戲功能簡介 286
6.2 遊戲的策劃和準備工作 289
6.2.1 遊戲的策劃 290
6.2.2 遊戲開發的準備工作 290
6.3 遊戲的架構 293
6.3.1 各個類簡要介紹 293
6.3.2 遊戲框架簡介 296
6.4 主控制類——TXZActivity類的開發 297
6.5 輔助界面相關類 301
6.5.1 歡迎界面類TXZWelcomeView 301
6.5.2 選單界面類TXZMenuView 304
6.5.3 設定界面類TXZSetView 313
6.5.4 選關界面類TXZSelectView 317
6.5.5 幫助界面類TXZHelpView 322
6.6 遊戲界面相關類 326
6.6.1 頂點數據管理者VertexDataManager 326
6.6.2 紋理圖數據管理者PicDataManager 331
6.6.3 遊戲界面TXZGameSurfaceView 332
6.6.4 動作佇列執行執行緒TXZDoActionThread 344
6.7 相關工具類 347
6.7.1 箱子排序類CompareDis 347
6.7.2 記錄關卡工具類SharedPreferencesUtil 348
6.7.3 聲音載入類SoundUtil 349
6.8 遊戲的最佳化與改進 350
第7章 物理引擎類遊戲——3D抽方塊 351
7.1 遊戲背景及功能概述 351
7.1.1 遊戲背景概述 351
7.1.2 遊戲功能介紹 351
7.2 遊戲的策劃及準備工作 353
7.2.1 遊戲的策劃 353
7.2.2 Android平台下遊戲的準備工作 354
7.3 遊戲的架構 356
7.3.1 各個類簡要介紹 356
7.3.2 遊戲框架簡介 358
7.4 主控制類JengaMeActivity 359
7.5 2D界面相關類 361
7.5.1 歡迎界面類SplashScreenView 362
7.5.2 主選單類MenuView 364
7.5.3 幫助界面HelpView 365
7.5.4 設定界面OptionMenu 367
7.5.5 記錄界面RecordView 369
7.5.6 遊戲結束界面EndMenu 371
7.5.7 圖片資源數據存儲轉換工具類InPutStreamTobyte 372
7.6 輔助工具類的開發 373
7.6.1 互動工具類IntersectantUtil 373
7.6.2 資料庫工具類SQLiteUtil 374
7.6.3 聲音工具類SoundUil 376
7.6.4 自定義工具類SYSUtil 379
7.6.5 著色器工具類ShaderUtil 379
7.7 遊戲界面相關類 382
7.7.1 木塊類MyCube 382
7.7.2 桌面類TexFloor 384
7.7.3 紋理矩形類TextureRect 387
7.7.4 觸控點類BNPoint 387
7.7.5 向量類MyVector3f 388
7.7.6 著色器管理類ShaderManager 389
7.7.7 包圍盒類AABB3 390
7.7.8 遊戲界面類MySurfaceView 396
7.8 該遊戲中的著色器 410
7.9 遊戲的最佳化與改進 412
第8章 休閒類遊戲——炫動方塊 414
8.1 遊戲背景及功能概述 414
8.1.1 遊戲背景概述 414
8.1.2 遊戲功能介紹 414
8.2 遊戲的策劃及準備工作 416
8.2.1 遊戲的策劃 416
8.2.2 Android 平台下遊戲的準備工作 416
8.3 遊戲的架構 419
8.3.1 各個類簡要介紹 419
8.3.2 遊戲框架簡介 423
8.4 公共類HitCubeActivity 424
8.5 輔助界面相關類 427
8.5.1 3D界面的父類MyGLSurfaceView 427
8.5.2 主選單界面類MenuView 428
8.5.3 選關卡界面類ContView 432
8.5.4 遊戲音效設定界面類SoundView 435
8.5.5 遊戲失敗界面類LoseView 438
8.5.6 按鈕六邊形類ButtonGraph 440
8.5.7 選單界面按鈕的執行緒類MenuButtonThread 442
8.5.8 星星類Star 444
8.5.9 星星類執行緒類StarThread 446
8.6 遊戲界面相關類 447
8.6.1 小球運動執行緒類BallThread 447
8.6.2 磚塊類Cube 451
8.6.3 磚塊的碰撞檢測類CubeHit 452
8.6.4 磚塊信息類CubeInfo 455
8.6.5 管道類GuanDao 456
8.6.6 管道執行緒類GuanDaoThread 460
8.6.7 線條類Line 461
8.6.8 牆壁類Wall 463
8.6.9 牆壁執行緒類WallThread 466
8.6.10 碰撞反射的工具類ReflectUtil 467
8.6.11 沙漏矩形類TextureRectShaLou 468
8.6.12 沙漏執行緒類ShaLouThread 469
8.6.13 遊戲界面繪製類MySurfaceView 470
8.7 遊戲中著色器的開發 483
8.7.1 紋理的著色器 483
8.7.2 按鈕的著色器 484
8.7.3 管道的著色器 486
8.7.4 水波紋的著色器 487
8.7.5 沙漏的著色器 488
8.8 遊戲的最佳化與改進 490
第9章 體育競技類遊戲——3D桌球錦標賽 491
9.1 遊戲背景及功能概述 491
9.1.1 遊戲背景概述 491
9.1.2 遊戲功能簡介 491
9.2 遊戲的策劃和準備工作 493
9.2.1 遊戲的策劃 494
9.2.2 遊戲開發的準備工作 494
9.3 遊戲的架構 495
9.3.1 遊戲的總體架構 495
9.3.2 遊戲的類架構 496
9.4 公共類 499
9.4.1 主控制類MainActivity 499
9.4.2 聲音振動控制類SoundAndShakeUtil 503
9.5 主界面相關類 505
9.5.1 主界面類MainMenuView 505
9.5.2 主界面物體類 514
9.6 遊戲界面相關類 515
9.6.1 遊戲界面類GameSurfaceView 515
9.6.2 桌球類GameBall 526
9.6.4 遊戲房間類GameRoom 530
9.6.5 飄揚的旗幟類GameFlyFlag 531
9.6.6 球拍控制類GameBatContorl 532
9.7 人工智慧與物理引擎相關類 535
9.7.1 物理世界模擬執行緒BallForContorl 536
9.7.2 人工智慧計算輔助類CalculateUtil 548
9.8 錄像功能模組相關類 553
9.8.1 錄像基本數據類FrameData 553
9.8.2 錄像播放執行緒類PlayVideoThread 554
9.8.3 錄像功能輔助工具類VideoUtil 555
9.9 遊戲中的著色器 556
9.9.1 普通紋理著色器 556
9.9.2 球檯陰影著色器 557
9.9.3 飄揚的旗幟著色器 559
9.10 遊戲的最佳化與改進 560
第 10章 體育競技類遊戲——3D極品桌球 561
10.1 遊戲背景及功能概述 561
10.1.1 遊戲背景概述 561
10.1.2 遊戲功能介紹 561
10.2 遊戲的策劃及準備工作 563
10.2.1 遊戲的策劃 563
10.2.2 Android平台下遊戲的準備工作 564
10.3 遊戲的架構 566
10.3.1 各個類簡要介紹 566
10.3.2 遊戲框架簡介 570
10.4 公共類MyActivity 571
10.5 輔助界面相關類 581
10.5.1 歡迎界面類WelcomeView 581
10.5.2 主選單界面類MainMenuView 583
10.5.3 聲音控制界面類SoundControlView 586
10.5.4 幫助界面類HelpView 587
10.5.5 積分榜界面類HighScoreView 591
10.6 遊戲界面相關類 594
10.6.1 球類BallDingDian 594
10.6.2 球運動控制類BallKongZhi 599
10.6.3 小地圖類MiniMap 606
10.6.4 球走執行緒類BallGoThread 607
10.6.5 移動攝像機的執行緒類MoveCameraThread 613
10.6.6 提示訊息的執行緒類RegulationTimeThread 614
10.6.7 虛擬按鈕監聽執行緒類ThreadKey 615
10.6.8 牆壁類Qiang 617
10.6.9 進度條的百分比類Percentage 621
10.6.10 圓面類Circle 623
10.6.11 球桿側面類CueSide 627
10.6.12 遊戲界面繪製類MySurfaceView 630
10.7 相關工具類 637
10.7.1 資料庫相關類DBUtil 637
10.7.2 圖片處理工具類PicLoadUtil 640
10.7.3 倒計時類Timer 641
10.7.4 聲音控制類SoundSwitchButton 643
10.8 遊戲中著色器的開發 644
10.8.1 紋理著色器 644
10.8.2 陰影著色器 645
10.9 遊戲的最佳化與改進 648