第1章开始设计游戏 1
1.1电脑游戏设计导论 2
1.1.1为什么使用VisualC++来设计游戏 2
1.1.2其他函数库的结合 3
1.1.3游戏舞台的坐标系统 6
1.2游戏架构与规划 8
1.2.1游戏的戏剧表现 8
1.2.2游戏主题的确立 9
1.2.3剧情的发展过程 9
1.2.4主要人物的突出 10
1.2.5悬念的安排 10
9.1.2建立DirectSound对象 3 11
1.2.6节奏的快慢 11
1.2.7风格的呈现 12
1.2.8摄影机的操控 12
1.2.9视角的应用 13
1.3游戏剧本的规划与设计 13
1.3.1游戏规划的细则 14
1.3.2界面的设计 14
1.3.3道具的设计 14
1.3.4真实与虚构 15
1.3.5游戏的死角 15
1.3.8游戏中的对话 16
1.3.7游戏中的奖励 16
1.3.6游戏的交互性 16
1.4构建游戏窗口 17
1.4.1设置Visual C++应用程序中的头文件 17
1.4.2建立程序项目 18
1.4.3应用程序与窗口 24
第2章VisuaI C++基本绘图技巧 29
2.1 MFC绘图类 30
2.1.1MFC的GDI类 30
2.1.2 MFC的CDC类 30
2.2位图的使用技巧 39
2.2.1在窗口中显示位图 39
2.2.2镂空图的制作技巧 49
2.2.3半透明效果的制作 54
第3章动画的制作 63
3.1控制动画显示时间 64
3.1.1定时器的运用 64
3.1.2使用单个定时器显示动画 65
3.1.3使用多个定时器显示动画 67
3.1.4利用回调函数显示动画 70
3.2特殊动画效果 72
3.2.1镂空动画技巧 72
3.2.2半透明动画技巧 80
3.3.1单背景卷动技术 87
3.3游戏背景的卷动 87
3.3.2多重背景卷动技术 89
第4章物理动作设计 95
4.1物体的移动 96
4.1.1匀速运动 96
4.1.2变速运动 99
4.1.3动量 100
4.1.4重力 101
4.1.6摩擦力 103
4.1.5重力加速度 103
4.1.7下落与弹跳 108
4.2物体间的碰撞 111
4.2.1通过范围检测碰撞 112
4.2.2通过颜色检测碰撞 115
4.2.3通过行进路线检测碰撞 121
4.2.4与斜面碰撞后的速度 122
4.3粒子的应用 127
4.3.1粒子的定义 127
4.3.2雪花纷飞 128
4.3.3放焰火 131
第5章管理程序中的消息 137
5.1键盘消息 138
5.1.1处理键盘输入消息 138
5.1.2使用键盘控制人物移动 139
5.2.1处理鼠标输入消息 146
5.2鼠标消息 146
5.2.2鼠标版“电流急急棒” 148
5.2.3改变鼠标指针 155
第6章剖析人工智能 161
6.1移动型人工智能 162
6.1.1固定模式移动 162
6.1.2追逐移动 169
6.1.3躲避移动 176
6.2行为型人工智能 177
6.2.1物体的动作行为 177
6.2.2路径查找的概念 188
6.2.3查找最佳路径 189
6.3策略型人工智能 206
6.3.1计算机的决策方式 207
6.3.2五子棋游戏设计 211
第7章进入3D的世界 229
7.1初探DirectX 230
7.1.1 DirectX SDK简介 230
7.1.2 DirectX的特色 231
7.2 DirectX 8.0 231
7.2.1浅谈Direct3D 232
7.2.2建立Direct3D环境 232
7.3绘制基本几何图形 238
7.3.1描绘三角形 238
7.3.2旋转的三角型 242
7.3.3描绘立方体 246
7.4打光 252
7.4.1打光的概念 252
7.4.2光的属性 254
7.4.3光的色彩属性 255
7.4.4光线投射的范例 257
7.5材质贴图 261
7.5.1材质的基本概念 261
7.5.2材质过滤 263
7.5.3材质Stage 264
7.5.4材质贴图的范例 266
7.6.1构成三角形的方法 270
7.6模型 270
7.6.2加载.x文件 272
7.6.3绘制模型文件 273
第8章使用DirectDraw 277
8.1建立DirectDraw程序 278
8.1.1建立DirectDraw的第一步 278
8.1.2建立DirectDraw对象 279
8.1.3设置程序协调层级 280
8.1.4设置屏幕显示模式 281
8.1.5绘图页的概念 281
8.1.6建立绘图页 282
8.2绘图页的基本应用 285
8.2.1在幕后暂存区中加载位图 285
8.2.2贴图与翻页 287
8.2.3清除绘图页 294
8.3 DirectDraw进阶应用 295
8.3.1颜色键 296
8.3.2 DirectDraw动画 300
8.3.3存取绘图页的方式 304
第9章使用DirectSound 309
9.1建立DirectSound 310
9.1.1建立DirectSound程序的第一步 310
9.1.3设置程序协调层级 312
9.1.4缓冲区的概念 312
9.1.5建立主缓冲区 314
9.1.6加载WAVE声音文件 315
9.1.7建立次缓冲区 319
9.1.8加载声音到次缓冲区 320
9.2声音的播放与控制 322
9.2.1播放声音 322
9.2.2制作混音效果 322
9.2.3控制声音 325
9.3使用3D音效 332
9.3.1 3D音效概念 332
9.3.2建立倾听者 334
9.3.3建立发声者 335
第10章使用DireCtInput 341
10.1建立DirectInput程序 342
10.1.1建立DirectSound的第一步 342
10.1.2建立DirectInput对象 343
10.1.3建立输入设备对象 344
10.1.4设置数据格式 345
10.1.5设置程序协调层级 345
10.1.6取得输入设备的控制权 346
10.2使用键盘与鼠标 346
10.2.1取得键盘输入 346
10.2.2取得鼠标输入 351
10.3使用摇杆 357
10.3.1取得摇杆设备 357
10.3.2列出摇杆组件 359
10.3.3取得摇杆输入 364
10.3.4设置无效范围 368
第1 1章使用DirectPlay和DirectShow 371
11.1.2 DirectPlay的网络拓扑 372
11.1.1为什么要使用DirectPlay 372
11.1 DirectPlay 372
11.1.3网络联机游戏的组成 374
11.1.4 DirectPlay的使用方法 375
11.1.5范例介绍 382
11.2 DirectShow 395
11.2.1 DirectShow的架构 396
11.2.2播放影片 397
11.2.3播放MP3 399
第12章游戏制作集锦 401
12.1程序中的自定义函数 402
12.1.1初始化DirectX对象 402
12.1.2建立DirectDraw幕后暂存区 408
12.1.3建立DirectSound次缓冲区 410
12.1.4设置颜色键 412
12.2豪华版“电流急急棒” 413
12.2.1游戏功能介绍 413
12.2.2实现游戏功能的方法 415
12.2.3程序内容说明 417
12.3太空射击游戏 425
12.3.1游戏功能介绍 425
12.3.2卷动背景的设计 427
12.3.3怪物的产生与移动 427
12.3.4子弹的产生 428
12.3.5检测碰撞的方法 429
12.3.6程序编写 431
第13章游戏专题——2D斜角游戏 453
13.1.1游戏规划 454
13.1游戏制作前的工作 454
13.1.2游戏流程 455
13.1.3工作分配 456
13.1.4整合与维护 457
13.2背景横向卷动 457
13.2.1横向卷动的原理 457
13.2.2横向卷动的算法 459
13.3斜角地图贴图 462
1 3.3.1游戏地图拓扑 462
13.3.2地图索引 463
13.3.3斜角地图的实现 464
13.4障碍物贴图 469
13.4.1障碍物索引 469
13.4.2障碍物贴图算法 471
13.5人物贴图 473
13.5.1人物移动的模式 473
13.5.2索引图的规则 474
13.5.3人物贴图算法 475
13.6排序贴图 479
13.6.1排序索引 479
13.6.2障碍物与人物的贴图方式 481
13.7障碍物判断 485
13.7.1障碍物的碰撞 485
13.7.2使用障碍物索引 486
13.7.3碰撞处理 488
13.8斜角游戏范例程序 493
附录DirectInput按键索引值与按键列表 499