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

  • 购买积分:18 如何计算积分?
  • 作  者:吴亚峰,于复兴,杜化美编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115317070
  • 页数:644 页
图书介绍:本书内容既包括Android平台下开发的基础知识,也有游戏编程的实用技巧,同时还有多个游戏实际案例供读者学习。在知识的层次上由浅入深,真正地将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开发环境的搭建 5

1.3.1 SDK的下载及安装 5

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

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

1.3.4 第一个Android程序 9

1.3.5 Android程序的监控与调试 12

1.4 小结 13

第2章 Android游戏开发中的前台渲染 14

2.1 创建Android用户界面 14

2.1.1 布局管理 14

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

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

2.2.1 简单图形的绘制 21

2.2.2 贴图的艺术 23

2.2.3 自定义动画的播放 24

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

2.3.1 音频的播放 27

2.3.2 视频的播放 30

2.3.3 Camera图像采集 32

2.4 小结 34

第3章 Android游戏开发中的交互式通信 35

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

3.1.1 Activity组件 35

3.1.2 Service组件 37

3.1.3 Broadcast Receiver组件 38

3.1.4 Content Provider组件 39

3.1.5 AndroidManifest.xml文件简介 39

3.2 应用程序的内部通信 42

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

3.2.2 使用Handler进行内部通信 43

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

3.3.1 Intent类简介 45

3.3.2 应用程序组件——IntentFilter类简介 46

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

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

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

3.4 小结 52

第4章 Android游戏开发中的数据存储和传感器 53

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

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

4.1.2 读取Resources和Assets中的文件 56

4.1.3 轻量级数据库SQLite简介 58

4.1.4 SQLite的使用示例 60

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

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

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

4.2.1 基本开发步骤 69

4.2.2 光传感器 71

4.2.3 温度传感器 72

4.2.4 接近传感器 74

4.2.5 磁场传感器 75

4.2.6 加速度传感器 76

4.2.7 姿态传感器 81

4.3 小结 85

第5章 Android游戏开发中的网络编程 86

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

5.2 基于HTTP的网络编程 89

5.2.1 通过URL获取网络资源 89

5.2.2 在Android中解析XML 91

5.3 Android平台下的Google Map 91

5.3.1 准备工作 91

5.3.2 简单的案例 94

5.4 蓝牙通信 98

5.4.1 基础知识 98

5.4.2 简单的案例 98

5.5 小结 109

第6章 不一样的游戏,一样的精彩应用 110

6.1 射击类游戏 110

6.1.1 游戏玩法 110

6.1.2 视觉效果 110

6.1.3 游戏内容设计 111

6.2 竞速类游戏 111

6.2.1 游戏玩法 111

6.2.2 视觉效果 112

6.2.3 游戏内容设计 112

6.3 益智类游戏 112

6.3.1 游戏玩法 113

6.3.2 视觉效果 113

6.3.3 游戏内容设计 113

6.4 角色扮演游戏 114

6.4.1 游戏玩法 114

6.4.2 视觉效果 114

6.4.3 游戏内容设计 115

6.5 闯关动作类游戏 115

6.5.1 游戏玩法 115

6.5.2 视觉效果 116

6.5.3 游戏内容设计 116

6.6 冒险游戏 116

6.6.1 游戏玩法 116

6.6.2 视觉效果 117

6.6.3 游戏内容设计 117

6.7 策略游戏 118

6.7.1 游戏玩法 118

6.7.2 视觉效果 118

6.7.3 游戏内容设计 119

6.8 养成类游戏 119

6.8.1 游戏玩法 119

6.8.2 视觉效果 119

6.8.3 游戏内容设计 120

6.9 经营类游戏 120

6.9.1 游戏玩法 121

6.9.2 视觉效果 121

6.9.3 游戏内容设计 121

6.10 体育类游戏 121

6.10.1 游戏玩法 121

6.10.2 视觉效果 122

6.10.3 游戏内容设计 122

6.11 小结 122

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

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

7.1.1 数学方面 123

7.1.2 物理方面 125

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

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

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

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

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

7.2.5 开发Activity部分的代码 134

7.3 粒子系统 135

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

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

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

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

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

7.4 碰撞检测技术 141

7.4.1 碰撞检测技术基础 142

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

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

7.5 用粒子系统模拟流体 146

7.5.1 基本原理 146

7.5.2 一个简单的案例 148

7.5.3 通过将物理计算并行化提高效率 152

7.6 小结 153

第8章 游戏地图必知必会 154

8.1 两种不同单位形状的地图 154

8.1.1 正方形地图 154

8.1.2 正方形地图案例 156

8.1.3 正六边形地图 157

8.1.4 正六边形地图案例 159

8.1.5 正方形地图和正六边形地图的比较 161

8.2 正六边形地图路径搜索 161

8.2.1 路径搜索示例基本框架的搭建 161

8.2.2 深度优先路径搜索DFS 166

8.2.3 广度优先路径搜索BFS 168

8.2.4 路径搜索算法——Dijkstra 170

8.2.5 用A算法优化算法 173

8.3 地图编辑器与关卡设计 175

8.3.1 关卡地图的重要性 176

8.3.2 图片分割界面的实现 177

8.3.3 地图设计界面的实现 181

8.4 小结 186

第9章 游戏开发小秘技 187

9.1 有限状态机 187

9.1.1 何为有限状态机 187

9.1.2 有限状态机的简单实现 188

9.1.3 有限状态机的OO实现 192

9.2 游戏中的模糊逻辑 194

9.2.1 模糊的才是真实的 194

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

9.3 游戏的基本优化技巧 197

9.3.1 代码上的小艺术 197

9.3.2 Android中的查找表技术 198

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

9.4 小结 201

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

10.1 物理引擎很重要 202

10.1.1 什么是物理引擎 202

10.1.2 常见的物理引擎 202

10.2 2D的王者JBox2D 204

10.2.1 基本的物理学概念 205

10.2.2 JBox2D中常用类的介绍 206

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

10.3.1 案例运行效果 211

10.3.2 案例的基本框架结构 211

10.3.3 常量类——Constant 212

10.3.4 抽象类——MyBody 212

10.3.5 圆形刚体类——MyCircleColor 213

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

10.3.7 颜色工具类——ColorUtil 215

10.3.8 主控制类——MyBox2dActivity 215

10.3.9 显示界面类——GameView 217

10.3.10 绘制线程类——DrawThread 218

10.4 简易打砖块案例 219

10.4.1 一般碰撞版 219

10.4.2 碰撞后消失版 221

10.5 旋转关节跷跷板案例 225

10.5.1 旋转关节介绍 225

10.5.2 多边形刚体类MyPolygon Color的开发 225

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

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

10.5.5 增加旋转关节 227

10.6 旋转关节链条摆案例 229

10.6.1 案例运行效果 229

10.6.2 案例的机械结构 229

10.6.3 主控制类——MyBox2dActivity 230

10.7 组合机械结构案例 231

10.7.1 案例运行效果 231

10.7.2 整体场景的机械结构 232

10.7.3 案例的基本框架结构 233

10.7.4 圆形刚体类MyCircleColor 234

10.7.5 生成刚体的工具类Box2DUtil 235

10.7.6 游戏界面——GameView 236

10.7.7 主控制类MyBox2dActivity 237

10.7.8 绘画线程类——DrawThread 239

10.8 小结 240

第11章 OpenGL ES 3D应用开发基础 241

11.1 OpenGLES概述及3D基本图形绘制 241

11.1.1 OpenGL及OpenGL ES简介 241

11.1.2 3D基本知识 242

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

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

11.1.5 不使用索引数据绘制 250

11.2 正交投影和透视投影 251

11.2.1 正交投影 251

11.2.2 透视投影 252

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

11.2.4 两种投影方式的案例 253

11.3 光照与材质 255

11.3.1 光照的3种组成元素 255

11.3.2 定向光与定位光 256

11.3.3 法向量 257

11.3.4 材质 259

11.3.5 两种光源的案例 259

11.4 纹理及纹理映射 261

11.4.1 纹理映射基本原理 262

11.4.2 使用纹理映射的案例 262

11.4.3 几种纹理拉伸方式 265

11.4.4 几种纹理过滤方式 266

11.5 摄像机和雾特效 267

11.5.1 摄像机的设置 267

11.5.2 设置合理的视角 268

11.5.3 雾特效的开发 269

11.6 典型几何体的开发 271

11.6.1 圆柱 271

11.6.2 圆锥 275

11.6.3 球 278

11.6.4 椭圆体 280

11.6.5 胶囊体 282

11.6.6 几何体大集合 285

11.7 小结 287

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

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

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

12.1.1 游戏背景概述 290

12.1.2 游戏功能简介 290

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

12.2.1 游戏的策划 292

12.2.2 Android平台下游戏开发的准备工作 292

12.3 游戏的架构 294

12.3.1 各种类的简要介绍 294

12.3.2 游戏的框架简介 295

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

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

12.4.2 欢迎界面WelcomeView类 298

12.4.3 其他辅助界面的介绍 301

12.5 游戏界面的框架设计 303

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

12.6.1 飞机Plane类的实现 307

12.6.2 敌方飞机EnemyPlane类的实现 310

12.6.3 子弹Bullet类的实现 311

12.6.4 其他相关类的实现 312

12.7 游戏界面的完善 314

12.7.1 地图类Maps的实现 314

12.7.2 背景滚动类GameViewBackGroundThread的实现 316

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

12.7.4 键盘监听线程PlanMove Thread的实现 318

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

12.7.6 绘制方法onDraw的实现 320

12.8 游戏的优化与改进 322

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

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

13.1.1 游戏背景概述 323

13.1.2 游戏功能介绍 323

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

13.2.1 游戏的策划 324

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

13.3 游戏的架构 327

13.3.1 各个类简要介绍 327

13.3.2 游戏框架简介 328

13.4 主控制类——Chess DJB Activity 328

13.5 辅助界面相关类 331

13.6 游戏界面相关类 333

13.6.1 游戏界面绘制类GameView 333

13.6.2 游戏界面常量类ViewConstant 348

13.7 走法引擎相关类 349

13.7.1 常量类Constant 349

13.7.2 工具类Chess_LoadUtil 353

13.7.3 走法引擎主类LoadUtil 354

13.7.4 走法的排序规则类MyComparator 363

13.7.5 记录走棋步骤类StackplayChess 364

13.8 游戏的优化与改进 364

第14章 物理传感器游戏——哇!重力球 365

14.1 游戏背景及功能概述 365

14.1.1 游戏背景概述 365

14.1.2 游戏功能简介 365

14.2 游戏的策划和准备工作 367

14.2.1 游戏的策划 367

14.2.2 游戏的准备工作 367

14.3 游戏的架构 369

14.3.1 游戏的总体架构 369

14.3.2 游戏的类架构 369

14.4 主控制类——TableBallActivity类的开发 371

14.5 界面相关类 374

14.5.1 主界面类MainMenuView 374

14.5.2 模式选择界面类PatternChooseView 376

14.5.3 选关界面LevelChooseView 378

14.5.4 历史记录界面HistoryView 379

14.5.5 设置界面SettingsView 382

14.6 工具辅助类 384

14.6.1 数据库类DBUtil 385

14.6.2 声音工具类SoundUtil 389

14.6.3 图片工具类PieLoadUtil 391

14.6.4 时间相关类 393

14.7 刚体类 395

14.7.1 刚体父类MyBody 395

14.7.2 球洞类Hole 396

14.7.3 变化的洞FlashHole类 397

14.7.4 创建刚体的工具类 398

14.8 游戏界面相关类 401

14.8.1 游戏界面GameView 401

14.8.2 碰撞响应类CollisionAction 404

14.8.3 游戏界面绘画线程DrawThread 406

14.9 游戏的优化与改进 406

第15章 塔防游戏——炫彩塔防 408

15.1 游戏背景及功能概述 408

15.1.1 游戏背景概述 408

15.1.2 游戏功能介绍 408

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

15.2.1 游戏的策划 411

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

15.3 游戏的架构 414

15.3.1 各个类的简要介绍 414

15.3.2 游戏框架简介 416

15.4 游戏辅助界面 417

15.4.1 主菜单界面 417

15.4.2 游戏关卡界面 419

15.4.3 关于游戏界面 423

15.5 游戏算法及主界面相关类 424

15.5.1 游戏核心算法类——Game 424

15.5.2 游戏界面相关类 427

15.5.3 怪物类——MonsterSquare 434

15.5.4 炮塔类——Tower Shell 440

15.5.5 子弹相关类 444

15.5.6 地图功能类——Blood_Up 449

15.5.7 怪物生成线程——CreateMonster 450

15.5.8 爆炸类——Utils 451

15.5.9 屏幕自适应相关类 453

15.6 游戏的优化及改进 456

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

16.1 游戏背景及功能概述 457

16.1.1 游戏背景概述 457

16.1.2 游戏功能简介 457

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

16.2.1 游戏的策划 461

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

16.3 游戏的架构 463

16.3.1 游戏的模块架构 463

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

16.4 地图设计器的开发 466

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

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

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

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

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

16.5.3 常量工具类ConstantUtil的介绍 474

16.6 数据存取模块的开发 475

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

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

16.7 英雄角色模块的开发 481

16.7.1 Hero类的代码框架 482

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

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

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

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

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

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

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

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

16.8.6 游戏界面后台线程Game ViewThread的介绍 495

16.9 管理面板模块的开发 495

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

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

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

16.10.1 绘制类——MyDrawable的开发 503

16.10.2 抽象类——MyMeetableDrawable的开发 504

16.10.3 森林类——ForestDrawable的开发 505

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

16.11 英雄技能模块的开发 508

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

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

16.11.3 “随心步”技能类——SuiXinBuSkill的开发 510

16.12 游戏提示模块的开发 510

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

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

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

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

16.13 游戏的优化与改进 515

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

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

17.1.1 游戏背景概述 516

17.1.2 游戏功能简介 516

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

17.2.1 游戏的策划 518

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

17.3 游戏的架构 519

17.3.1 游戏的框架简介 520

17.3.2 各个类的简要介绍 520

17.4 公共类的实现 522

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

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

17.4.3 常量类——Constant的实现 528

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

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

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

17.5.3 主界面类——MainMenuView部分成员方法的实现 532

17.5.4 主界面动画线程类ViewDrawThread的实现 534

17.5.5 排行榜界面HighScoreView的代码框架 536

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

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

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

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

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

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

17.7 情景相关类的实现 544

17.7.1 球台Table类的实现 544

17.7.2 桌球Ball类的代码框架 546

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

17.7.4 球杆Cue类的实现 550

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

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

17.8.2 定时器Timer类的实现 554

17.8.3 主菜单按钮MainMenuButton类的实现 555

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

17.9 游戏的优化与改进 556

第18章 益智游戏——3D魔方 557

18.1 游戏背景及功能概述 557

18.1.1 游戏开发背景概述 557

18.1.2 游戏功能介绍 558

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

18.2.1 游戏的策划 559

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

18.3 游戏的架构 561

18.3.1 各个类简要介绍 561

18.3.2 游戏框架简介 563

18.4 公共类CubeActivity 564

18.5 游戏欢迎界面类WelcomeView 567

18.6 游戏界面相关类 570

18.6.1 辅助类TextureRect类 570

18.6.2 魔方控制类CubesControl 571

18.6.3 魔方正方形绘制类CubeSurfDraw 575

18.6.4 辅助类FlagDraw 577

18.6.5 魔方单面颜色信息类Surface 578

18.6.6 魔方信息类CubeData 578

18.6.7 单个魔方面类SurfaceGroup 583

18.6.8 数据常量类Constant 583

18.6.9 游戏界面类MySurfaceView 585

18.7 游戏相关线程类 591

18.7.1 单层旋转动画类RotateThread 591

18.7.2 游戏帮助类HelpThread 593

18.7.3 魔方还原动画类ReSetCube 596

18.7.4 打乱魔方动画类UpsetThread 597

18.7.5 计时器类TimeThread 598

18.8 魔方的还原算法工具类ReSetUtil 600

18.9 游戏的优化与改进 601

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

19.1 游戏背景及功能概述 602

19.1.1 游戏开发背景 602

19.1.2 游戏功能概述 602

19.2 游戏策划及准备工作 604

19.2.1 游戏策划 604

19.2.2 游戏开发的准备工作 605

19.3 游戏的框架 607

19.3.1 游戏主要用到的技术 607

19.3.2 游戏各个类的介绍 607

19.3.3 游戏的基本框架 609

19.4 公共类 609

19.4.1 主控制类——MyBox2dActivity 609

19.4.2 常量类Constant 611

19.5 主界面的设计与实现 619

19.5.1 鼠头和猫头类Taj 619

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

19.5.3 主界面MainMenuView 621

19.5.4 刷帧线程MainMenu DrawThread 626

19.6 工具类 627

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

19.6.2 生成刚体工具类Box2DUtil 628

19.6.3 声音工具类SoundUtil 629

19.7 刚体相关类 630

19.7.1 多边形类MyPolygonImg 630

19.7.2 猫头类BodyCat 631

19.7.3 冰块类BodyIce 632

19.7.4 木条类BodyWood 633

19.7.5 刚体类型枚举类BodyType 634

19.7.6 刚体查询工具类BodySearchUtil 634

19.8 游戏界面相关类 635

19.8.1 皮筋类Pijin 635

19.8.2 记录分数类Score 636

19.8.3 刷帧线程DrawThread 637

19.8.4 游戏界面类GameView 639

19.9 游戏优化与改进 644