《Android游戏开发大全》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:吴亚峰,苏亚光编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115264930
  • 页数:674 页
图书介绍:本书以Android手机游戏的开发为主题,结合真实的游戏案例向读者详细介绍了Android平台下游戏开发的整个流程,同时在游戏开发的介绍过程中还分享了笔者多年积累的开发技巧与经验。

第一篇Android游戏开发核心技术 2

第1章Android平台简介 2

1.1 Android的来龙去脉 2

1.2掀起Android的盖头来 2

1.2.1选择Android的理由 2

1.2.2 Android的应用程序框架 3

1.3 Android开发环境的搭建 6

1.3.1 SDK的下载及安装 6

1.3.2 Eclipse集成开发环境的搭建 6

1.3.3虚拟设备的创建与模拟器的运行 9

1.3.4第一个Android程序 11

1.3.5 Android程序的监控与调试 14

1.4小结 15

第2章Android游戏开发之前台渲染 16

2.1创建Android用户界面 16

2.1.1布局管理 16

2.1.2常用控件及其事件处理 22

2.2图形与动画在Android中的实现 24

2.2.1简单图形的绘制 24

2.2.2贴图的艺术 26

2.2.3自定义动画的播放 27

2.3 Android平台下的多媒体开发 30

2.3.1音频的播放 30

2.3.2视频的播放 33

2.3.3 Camera图像采集 36

2.4小结 38

第3章Android游戏开发之交互式通信 39

3.1 Android应用程序的基本组件 39

3.1.1 Activity组件 39

3.1.2 Service组件 41

3.1.3 Broadcast Receiver组件 42

3.1.4 Content Provider组件 43

3.1.5 AndroidManifest.xml文件简介 43

3.2应用程序的内部通信 47

3.2.1消息的处理者——Handler类简介 47

3.2.2使用Handler进行内部通信 48

3.3应用程序组件之间的通信 50

3.3.1 Intent类简介 50

3.3.2应用程序组件——IntentF ilter类简介 52

3.3.3示例1:与Android系统组件通信 53

3.3.4示例2:应用程序组件间通信示例Activity部分的开发 54

3.3.5示例3:应用程序组件间通信示例Service部分的开发 56

3.4小结 59

第4章Android游戏开发之数据存储和传感器 60

4.1在Android平台上实现数据存储 60

4.1.1私有文件夹文件的写入与读取 60

4.1.2读取Resources和Assets中的文件 63

4.1.3轻量级数据库SQLite简介 65

4.1.4 SQLite的使用示例 69

4.1.5数据共享者——Content Provider的使用 72

4.1.6简单的数据存储——Preferences的使用 76

4.2 Android平台下传感器应用的开发 78

4.2.1传感器应用开发流程 78

4.2.2常用传感器简介 79

4.2.3传感器应用开发示例 81

4.2.4使用SensorS imulator模拟传感器变化 83

4.2.5使用新版本的API开发传感器应用 86

4.3小结 88

第5章Android游戏开发之网络编程 89

5.1基于Socket套接字的网络编程 89

5.2基于HTTP协议的网络编程 93

5.2.1通过URL获取网络资源 93

5.2.2在Android中解析XML 95

5.3 Android平台下的Google Map 95

5.3.1定位类GenPoint与显示地图类MapView的搭配使用 95

5.3.2位置监听器——LocationListener的使用 99

5.4其他网络通信方式 101

5.4.1使用WiFi进行开发 101

5.4.2借助于蓝牙(Bluetooth)技术进行开发 102

5.5小结 102

第6章 不一样的游戏,一样的精彩 103

6.1射击类游戏 103

6.1.1游戏玩法 103

6.1.2视觉效果 104

6.1.3游戏内容设计 104

6.2竞速类游戏 104

6.2.1游戏玩法 105

6.2.2视觉效果 105

6.2.3游戏内容设计 106

6.3益智类游戏 106

6.3.1游戏玩法 106

6.3.2视觉效果 107

6.3.3游戏内容设计 107

6.4角色扮演游戏 107

6.4.1游戏玩法 108

6.4.2视觉效果 108

6.4.3游戏内容设计 109

6.5闯关动作类游戏 109

6.5.1游戏玩法 109

6.5.2视觉效果 110

6.5.3游戏内容设计 110

6.6冒险游戏 110

6.6.1游戏玩法 110

6.6.2视觉效果 111

6.6.3游戏内容设计 112

6.7策略游戏 112

6.7.1游戏玩法 112

6.7.2视觉效果 113

6.7.3游戏内容设计 113

6.8养成类游戏 113

6.8.1游戏玩法 114

6.8.2视觉效果 114

6.8.3游戏内容设计 114

6.9经营类游戏 115

6.9.1游戏玩法 115

6.9.2视觉效果 115

6.9.3游戏内容设计 116

6.10体育类游戏 116

6.10.1游戏玩法 116

6.10.2视觉效果 117

6.10.3游戏内容设计 117

6.11小结 117

第7章 游戏背后的数学与物理 118

7.1编程中经常用到的数理知识 118

7.1.1数学方面 118

7.1.2物理方面 120

7.2物理小球在游戏中的应用 121

7.2.1开发运动体Movable类的代码 121

7.2.2开发物理引擎BallThread类的代码 123

7.2.3视图类——开发BallView类的代码 126

7.2.4绘制线程——开发DrawThread类的代码 129

7.2.5开发Activity部分的代码 131

7.3粒子系统 132

7.3.1粒子对象类——开发粒子对象Particle类和粒子集合ParticleSet类 132

7.3.2开发焰火粒子系统的物理引擎ParticleThread类的代码 134

7.3.3视图类——开发视图类ParticleView及其相关类 135

7.3.4开发程序Activity部分的代码 137

7.3.5将焰火粒子系统改为瀑布粒子系统 138

7.4碰撞检测技术 139

7.4.1碰撞检测技术基础 139

7.4.2游戏中实体对象之间的碰撞检测 140

7.4.3游戏实体对象与环境之间的碰撞检测 143

7.5小结 144

第8章 游戏中的人工智能 145

8.1让怪物聪明起来——Android中的路径搜索 145

8.1.1路径搜索示例基本框架的搭建 145

8.1.2路径搜索示例的控制面板实现 147

8.1.3路径搜索示例GameView的实现 151

8.1.4深度优先路径搜索DFS 154

8.1.5广度优先路径搜索BFS 156

8.1.6路径搜索算法——Dijkstra 159

8.1.7用A*算法优化搜索 162

8.2有限状态机 164

8.2.1何为有限状态机 164

8.2.2有限状态机的简单实现 165

8.2.3有限状态机的OO实现 170

8.3小结 172

第9章 游戏开发小秘技 173

9.1地图编辑器与关卡设计 173

9.1.1关卡地图的重要性 173

9.1.2图片分割界面的实现 175

9.1.3地图设计界面的实现 179

9.2游戏中的模糊逻辑 185

9.2.1模糊的才是真实的 185

9.2.2如何在Android中将游戏模糊化 186

9.3游戏的基本优化技巧 188

9.3.1代码上的小艺术 188

9.3.2Android中的查找表技术 190

9.3.3游戏的感觉和性能问题 192

9.4小结 193

第10章 游戏的心脏——物理引擎 194

10.1物理引擎很重要 194

10.1.1什么是物理引擎 194

10.1.2常见的物理引擎 194

10.2 2D的王者JBox2D 197

10.2.1基本的物理学概念 197

10.2.2 JBox2D中常用类的介绍 199

10.3球体撞击木块金字塔案例 203

10.3.1案例运行效果 204

10.3.2案例的基本框架结构 204

10.3.3常量类——Constant 205

10.3.4抽象类——MyBody 206

10.3.5圆形刚体类——MyCircleColor 206

10.3.6生成刚体形状的工具类——Box2DUtil 207

10.3.7颜色工具类——ColorUtil 208

10.3.8主控制类——MyBox2dActivity 209

10.3.9显示界面类——GameView 211

10.3.10绘制线程类——DrawThread 212

10.4简易打砖块案例 213

10.4.1一般碰撞版 213

10.4.2碰撞后消失版 215

10.5旋转关节跷跷板案例 220

10.5.1旋转关节介绍 220

10.5.2多边形刚体类MyPolygonColor的开发 220

10.5.3生成刚体形状的工具类——Box2DUtil 221

10.5.4将场景中的刚体摆放到位 222

10.5.5增加旋转关节 223

10.6旋转关节链条摆案例 225

10.6.1案例运行效果 225

10.6.2案例的机械结构 225

10.6.3主控制类——MyBox2dActivity 226

10.7组合机械结构案例 227

10.7.1案例的运行效果 227

10.7.2整体场景的机械结构 228

10.7.3案例的基本框架结构 229

10.7.4圆形刚体类——MyCircleColor 229

10.7.5生成刚体形状的工具类——Box2DUtil 230

10.7.6主控制类——MyBox2dActivity 230

10.7.7游戏界面类——GameView 232

10.7.8绘制线程类——DrawThread 233

10.8小结 233

第11章OpenGL ES应用开发基础 234

11.1 OpenGL ES概述及3D基本图形绘制 234

11.1.1 OpenGL及OpenGL ES简介 234

11.1.2 3D基本知识 235

11.1.3使用索引的不同绘制方式 236

11.1.4用索引法绘制三角形的案例 238

11.1.5不使用索引数据绘制 244

11.2正交投影和透视投影 245

11.2.1正交投影 246

11.2.2透视投影 246

11.2.3两种投影方式的原理及视口 247

11.2.4两种投影方式的案例 248

11.3光照与材质 250

11.3.1光照的3种组成元素 250

11.3.2定向光与定位光 252

11.3.3法向量 253

11.3.4材质 254

11.3.5两种光源的案例 255

11.4纹理及纹理映射 257

11.4.1纹理映射基本原理 257

11.4.2使用纹理映射的案例 258

11.4.3几种纹理拉伸方式 261

11.4.4几种纹理过滤方式 262

11.5摄像机和雾特效 263

11.5.1摄像机的设置 264

11.5.2设置合理的视角 264

11.5.3雾特效的开发 266

11.6典型几何体的开发 267

11.6.1圆柱 268

11.6.2圆锥 273

11.6.3球 276

11.6.4椭圆体 278

11.6.5胶囊体 281

11.6.6几何体大集合 284

11.7小结 286

第二篇Android游戏开发实战综合案例 288

第12章 滚屏动作游戏——太空保卫战 288

12.1游戏的背景及功能概述 288

12.1.1背景概述 288

12.1.2功能简介 288

12.2游戏的策划及准备工作 290

12.2.1游戏的策划 290

12.2.2 Android平台下游戏的准备工作 291

12.3游戏的架构 292

12.3.1各个类的简要介绍 292

12.3.2游戏的框架简介 293

12.4辅助界面相关类的实现 294

12.4.1主控制类——PlaneActivity的实现 294

12.4.2欢迎界面WelcomeView类 296

12.4.3其他辅助界面的介绍 300

12.5游戏界面的框架设计 303

12.6游戏实体相关类的实现 306

12.6.1飞机Plane类的实现 306

12.6.2敌方飞机EnemyPlane类的实现 309

12.6.3子弹Bullet类的实现 311

12.6.4其他相关类的实现 312

12.7游戏界面的完善 314

12.7.1地图类Maps的实现 314

12.7.2背景滚动类GameViewBack GroundThread的实现 316

12.7.3物体移动线程MoveThread的实现 317

12.7.4键盘监听线程KeyThread的实现 319

12.7.5图片初始化方法initBitmap的实现 320

12.7.6绘制方法onDraw的实现 322

12.8游戏的优化与改进 324

第13章 棋牌游戏——中国象棋人机对弈 325

13.1游戏的背景及功能概述 325

13.1.1背景概述 325

13.1.2功能介绍 325

13.2游戏的策划及准备工作 327

13.2.1游戏的策划 327

13.2.2 Android平台下游戏的准备工作 327

13.3游戏的架构 329

13.3.1各个类简要介绍 329

13.3.2游戏框架简介 330

13.4主控制类——Chess_DJB_Activity 331

13.5辅助界面相关类 334

13.6游戏界面相关类 336

13.6.1游戏界面绘制类GameView 336

13.6.2游戏界面常量类ViewConstant 353

13.7走法引擎相关类 354

13.7.1常量类Constant 354

13.7.2工具类Chess_LoadUtil 359

13.7.3走法引擎主类LoadUtil 360

13.7.4走法的排序规则类MyComparator 371

13.7.5记录走棋步骤类StackplayChess 371

13.8游戏的优化与改进 371

第14章 物理传感器游戏——小球快跑 372

14.1游戏背景及功能概述 372

14.1.1背景概述 372

14.1.2功能简介 372

14.2游戏的策划及准备工作 374

14.2.1游戏的策划 374

14.2.2小球快跑游戏开发的准备工作 375

14.3游戏的架构 375

14.3.1游戏的总体架构 376

14.3.2游戏的类结构 376

14.4主控制类——DriftBall类的开发 378

14.4.1 DriftBall类的代码框架 378

14.4.2 DriftBall类的主要成员方法的实现 379

14.5游戏主菜单的开发 381

14.5.1欢迎界面类——Welcome View类的代码框架 381

14.5.2 WelcomeView类主要成员方法 382

14.5.3 WelcomeThread类的开发 383

14.5.4菜单界面的用户交互事件处理 384

14.6游戏界面模块的开发 385

14.6.1游戏界面类——GameView的成员变量 385

14.6.2 GameView的成员方法简介 387

14.6.3游戏界面绘制线程——GameThread类的代码框架 387

14.6.4 GameMenuThread类的开发 388

14.6.5用户交互事件处理 389

14.7游戏中各个图层的开发 391

14.7.1地图图层的开发 391

14.7.2其他图层的开发与实现 392

14.8游戏后台逻辑的开发 395

14.8.1小球的运动控制 395

14.8.2小球的碰撞检测 396

14.8.3大炮相关类Cannon和Missile的开发 400

14.9传感器计算模块的开发 403

14.9.1手机姿态变化监听器——BallListener类的开发 403

14.9.2工具类——RotateUtil类的代码框架 404

14.9.3工具类——RotateUtil类的开发 406

14.10游戏的优化与改进 408

第15章 塔防游戏——精灵塔防 410

15.1游戏的背景及功能概述 410

15.1.1背景概述 410

15.1.2功能介绍 410

15.2游戏的策划及准备工作 413

15.2.1游戏的策划 413

15.2.2 Android平台下游戏开发的准备工作 414

15.3游戏的架构 415

15.3.1各个类的简要介绍 416

15.3.2游戏框架简介 417

15.4主控制类TafangGameActivity和数据库类DBUtil 418

15.4.1主控制类——TafangGame Activity主要框架 418

15.4.2主控制类——TafangGame Activity中部分数据库的实现 421

15.4.3主控制类——TafangGame Activity中对话框的开发 423

15.4.4数据库类DBUtil的开发 427

11.5界面相关类 428

15.5.1欢迎界面Welcome View类的介绍 428

15.5.2主界面MainMenuSurfaceView类的介绍 430

15.5.3音效设置界面MusicSurfaceView类的介绍 434

15.5.4游戏结束界面GameOverView类和帮助界面HelpView类的介绍 435

15.5.5积分榜界面HighJifenSurfaceView类的介绍 435

15.6游戏界面GameView及相关类 438

15.6.1精灵怪物Target类 439

15.6.2箭塔SingleJianta类 443

15.6.3箭Shell类 444

15.6.4精灵怪物的出击现场——TargetNumThread 447

15.6.5箭塔控制发射线程——ShellNumThread 449

15.6.6游戏地图矩阵模拟化 451

15.6.7摆放箭塔守护城池 452

15.6.8游戏中的2.5D效果 455

15.6.9弹指间怪物灰飞烟灭——游戏水晶 455

15.7游戏的优化和改进 459

第16章 策略游戏——回到战国 460

16.1游戏的背景及功能概述 460

16.1.1背景概述 460

16.1.2功能简介 460

16.2游戏的策划及准备工作 465

16.2.1游戏的策划 465

16.2.2 Android平台下游戏的准备工作 465

16.3游戏的架构 467

16.3.1游戏的模块架构 467

16.3.2游戏各个类的简要介绍 468

16.4地图设计器的开发 470

16.4.1底层地图设计器的开发 470

16.4.2上层地图设计器的开发 474

16.5Activity和游戏工具类的开发 475

16.5.1主控制类——HDZGActivity的介绍 475

16.5.2公式封装类——GameFormula的介绍 478

16.5.3常量工具类ConstantUtil的介绍 479

16.6数据存取模块的开发 481

16.6.1城池信息以及地图层信息的封装类 481

16.6.2数据存取相关类的介绍 485

16.7英雄角色模块的开发 488

16.7.1 Hero类的代码框架 488

16.7.2英雄运动线程——HeroGoThread类的开发 491

16.7.3辅助线程——HeroBackDataThread类的开发 493

16.8表示层界面模块的开发 493

16.8.1滚屏类——ScreenRollView类的开发 494

16.8.2滚屏线程——ScreenRollThread的开发 495

16.8.3游戏界面GameView的框架介绍 496

16.8.4游戏界面绘制方法onDraw的介绍 498

16.8.5游戏界面屏幕监听方法onTouch的介绍 500

16.8.6游戏界面后台线程GameViewThread的介绍 502

16.9管理面板模块的开发 503

16.9.1人物属性面板类ManPanelView的开发 503

16.9.2城池管理面板类CityManageView的开发 508

16.10地图中可遇实体模块的开发 511

16.10.1绘制类——MyDrawable的开发 511

16.10.2抽象类——MyMeetableDrawable的开发 513

16.10.3森林类——ForestDrawable的开发 514

16.10.4可遇实体对象的调用流程 516

16.11英雄技能模块的开发 518

16.11.1技能抽象类——Skill的开发 518

16.11.2伐木技能类——LumberSkill的开发 519

16.11.3随心步技能类——SuiXinBuSkill的开发 520

16.12游戏提示模块的开发 520

16.12.1提示模块抽象类——GameAlert的开发 520

16.12.2点击确定按钮显示的信息类——PlainAlert的开发 521

16.12.3显示粮草危机信息类——FoodAlert的开发 522

16.12.4辅助线程HeroBackDataThread中对FoodAlert的调用 524

16.13游戏的优化与改进 525

第17章 体育游戏——2D迷你桌球 527

17.1 2D桌球的背景及功能概述 527

17.1.1背景概述 527

17.1.2功能简介 527

17.2游戏的策划及准备工作 530

17.2.1游戏的策划 530

17.2.2 Android平台下游戏的准备工作 530

17.3游戏的架构 531

17.3.1游戏的框架简介 531

17.3.2各个类的简要介绍 532

17.4公共类的实现 534

17.4.1主控制类——GameActivity的代码框架 534

17.4.2 GameActivity类主要成员变量及方法的实现 536

17.4.3常量类——Constant的实现 540

17.5辅助界面相关类的实现 542

17.5.1欢迎动画界面WelcomeView类的实现 542

17.5.2主菜单界面MainMenuView的代码框架 544

17.5.3主界面类——MainMenu View部分成员方法的实现 545

17.5.4主界面动画线程类View DrawThread的实现 548

17.5.5排行榜界面HighScore View的代码框架 549

17.5.6 HighScoreView类的部分方法的实现 550

17.6游戏界面相关类的实现 552

17.6.1游戏界面GameView类的代码框架 552

17.6.2 GameView类部分成员方法的实现 553

17.6.3键盘监听线程KeyThread类的实现 557

17.6.4球运动的线程BallGoThread类的实现 558

17.7情景相关类的实现 559

17.7.1球台Table类的实现 559

17.7.2桌球Ball类的代码框架 561

17.7.3 Ball类部分成员方法的实现 563

17.7.4球杆Cue类的实现 566

17.8自定义控件及工具类的实现 568

17.8.1球与球碰撞检测的工具类CollisionUtil的实现 568

17.8.2定时器Timer类的实现 571

17.8.3主菜单按钮MainMenu Button类的实现 572

17.8.4获取日期的工具DateUtil类的实现 573

17.9游戏的优化与改进 574

第18章 益智游戏——3D版推箱子 575

18.1 3D版推箱子的背景及功能概述 575

18.1.1背景概述 575

18.1.2功能简介 575

18.2游戏的策划及准备工作 579

18.2.1游戏的策划 579

18.2.2 Android平台下游戏开发的准备工作 579

18.3游戏的架构 580

18.3.1游戏的框架简介 580

18.3.2各个类的简要介绍 581

18.4公共类的实现 582

18.4.1主控制类——MyActivity的代码框架 582

18.4.2 MyActivity类成员方法的实现 584

18.4.3常量类Constant的实现 585

18.5辅助界面相关类的实现 587

18.5.1欢迎动画界面WelcomeView类的实现 587

18.5.2主菜单界面MainView的实现 589

18.6游戏界面相关类 590

18.6.1游戏界面MySurfaceView类的设计与实现 590

18.6.2键盘监听线程KeyThread 599

18.7自定义控件及工具类 600

18.7.1缩放图片的方法PicLoadUtil 600

18.7.2主菜单上的按钮类MainMenuButton 601

18.8情景相关类的实现 602

18.8.1机器人类的代码框架 602

18.8.2机器人类成员方法的实现 603

18.8.3机器人组类RobotGroup类的实现 605

18.8.4机器人组类成员方法的实现 606

18.8.5圆面Circle类的实现 607

18.8.6矩形纹理类TextureRect的实现 609

18.8.7纹理矩形组类TextureRectGroup的实现 610

18.8.8墙类Wall的实现 611

18.8.9墙Wall类成员方法的实现 612

18.8.10箱子Cube类的实现 616

18.8.11箱子组CubeGroup类的实现 618

18.8.12箱子移动CubeGo类的代码框架 619

18.8.13箱子移动CubeGo类的成员方法的实现 620

18.8.14地板类Floor的实现 621

18.9推箱子地图设计器的开发 623

18.10游戏的优化与改进 624

第19章 物理引擎游戏——盛怒的老鼠 625

19.1游戏背景及功能概述 625

19.1.1游戏开发背景 625

19.1.2游戏功能概述 625

19.2游戏策划及准备工作 628

19.2.1游戏策划 628

19.2.2游戏开发的准备工作 628

19.3游戏的框架 630

19.3.1游戏主要用到的技术 631

19.3.2游戏各个类的介绍 631

19.3.3游戏的基本框架 633

19.4公共类 634

19.4.1主控制类——MyBox2dActivity 634

19.4.2常量类Constant 635

19.5主界面的设计与实现 644

19.5.1鼠头和猫头类Taj 644

19.5.2鼠头和猫头控制线程——TJThread 646

19.5.3主界面MainMenuView 646

19.5.4刷帧线程MainMenuDrawThread 653

19.6工具类 654

19.6.1加载及缩放图片的工具类PicLoadUtil 654

19.6.2生成刚体工具类Box2DUtil 655

19.6.3声音工具类SoundUtil 656

19.7刚体相关类 657

19.7.1多边形类MyPolygonImg 657

19.7.2猫头类BodyCat 659

19.7.3冰块类BodyIce 660

19.7.4木条类BodyWood 661

19.7.5刚体类型枚举类BodyType 661

19.7.6刚体查询工具类Body SearchUtil 662

19.8游戏界面相关类 663

19.8.1皮筋类Pijin 663

19.8.2记录分数类Score 664

19.8.3刷帧线程DrawThread 665

19.8.4游戏界面类GameView 668

19.9游戏优化与改进 673