目录 3
第1部分 C++编程 3
第1章 C++程序设计 3
选用C++的原因 4
设置Visual C++ 4
第1个程序:“Hello all you happy people” 8
C++程序的结构 10
注释 12
捕获错误 13
警告 15
总结 16
问与答 17
练习 17
第2章 变量和运算符 19
变量和存储器 20
C++中变量的类型 21
在程序中使用变量 23
变量修饰符 25
类型重定义 27
变量命名 27
运算符 28
按位移运算符 32
关系运算符 32
条件运算符 33
逻辑运算符 34
运算符优先级 34
总结 36
问与答 36
练习 37
第3章 函数和程序流 38
函数的定义和用途 39
创建和使用函数 41
缺省参数 43
变量作用域 45
递归 48
函数使用要点 49
代码块和语句 50
if,else if,else语句 50
程序流 50
while,do...while以及for循环 52
Breaking和Continuing 56
switch 58
随机化 60
第一个游戏:“craps” 63
总结 69
问与答 69
练习 69
第4章 多文件和预处理器 71
源文件和头文件的区别 72
处理多文件 72
预处理器 74
避免重复包含 75
宏 77
其他预处理指令 78
总结 78
练习 78
第5章 数组、指针和字符串 79
声明和使用数组 80
数组的定义 80
多维数组 83
指针的定义 86
指针和变量 86
指针和数组 88
声明指针和为指针分配内存 90
指针运算符 92
操作内存 95
字符串 96
问与答 109
总结 109
练习 110
第6章 类 111
类的定义 112
创建类 113
类的使用 114
私有、保护以及公有成员 115
构造函数和析构函数 117
运算符重载 119
字符串类 120
继承和多态 125
枚举 131
联合体 132
静态成员 133
使用类的一些有用技术 133
总结 140
问与答 140
练习 140
第7章 开发Monster游戏 142
conlib 143
创建Monster游戏 154
总结 175
第8章 流 176
流的定义 177
二进制流和文本流 177
输入和输出 178
ostream 181
文件流 182
修改Monster游戏来实现保存和加载游戏 194
总结 199
问与答 199
练习 200
第9章 软件体系结构简介 201
软件设计的重要性 202
设计方法 202
一些基本的技术 204
模块和多文件 207
命名惯例 208
常识战胜规则 210
本书所使用的设计 210
总结 211
问与答 211
练习 212
第2部分 Windows编程 215
第10章 设计游戏库Mirus 215
概述 216
Mirus组件 216
窗口组件 217
帮助组件 217
图形组件 218
声音组件 220
输入组件 221
创建帮助组件 221
创建错误信息文件的方法 226
Mirus的使用方法 227
总结 227
问与答 228
第11章 Windows程序设计 229
Windows的历史 230
Windows编程简介 231
Visual C++和Windows应用程序 233
创建Windows应用程序 233
创建实时消息循环 242
创建可重用的窗口类 246
使用Mirus窗口框架 252
常用的窗口函数 253
总结 255
显示 255
问与答 256
练习 256
第12章 DirectX简介 257
什么是DirectX 258
DirectX简史 258
为什么要使用DirectX 259
DirectX组件 260
DirectX的工作过程 261
如何在Visual C++环境下使用DirectX 263
总结 265
问与答 265
练习 265
第13章 DirectX Graphics 266
要用到的接口 267
Direct3D初步 268
表面、缓冲区和交换链 278
渲染表面 280
顶点、多边形与纹理 285
从三维到二维 287
Windows位图 294
全屏及其他位模式 296
色彩理论与关键色 297
targa文件 300
动画与模板集 301
碰撞检测 302
2D图像处理 305
2D图元揭密 308
开发Mirus 312
问与答 369
总结 369
练习 370
第14章 DirectInput 371
DirectInput简介 372
mrInputManager 373
mrKeyboard 375
mrMouse 385
mrJoystick 395
问与答 403
练习 403
总结 403
第15章 DirectSound 404
声音原理 405
DirectSound简介 406
mrSoundPlayer 407
mrSound 410
媒体控制接口 418
mrCDPlayer 418
练习 423
问与答 423
总结 423
第3部分 核心游戏编程 426
第16章 游戏设计简介 426
什么是游戏设计 427
令人厌烦的设计文档 428
“游戏在我心里”的方法为什么不好 428
两种设计类型 429
填写一份设计文档模板 430
一个游戏设计样本:宇宙侵略者 431
问与答 434
总结 434
练习 435
第17章 数据结构和算法 436
数据结构和算法的重要性 437
链表 438
树 447
广义树 449
二叉搜索树 454
数据排序 464
快速排序 466
压缩 470
RLE压缩 471
总结 472
问与答 472
练习 473
第18章 游戏的数学基础 474
三角学 475
矢量 478
矩阵 485
概率 492
函数 493
总结 495
问与答 495
练习 496
第19章 人工智能简介 497
人工智能的几个领域 498
确定性算法 503
有限状态机 507
模糊逻辑 509
一个简单的记忆方法 511
人工智能和游戏 512
总结 512
问与答 513
练习 513
第20章 物理建模简介 514
物理学简介 515
创建物理引擎 515
基本物理概念 517
力 522
引力作用 526
摩擦力 530
处理碰撞 534
模拟 538
粒子系统 545
总结 558
问与答 558
练习 558
第21章 创建打砖块游戏 559
设计打砖块游戏 560
创建打砖块游戏 565
结论 601
第22章 出版游戏 602
评估游戏出版价值 603
该去敲哪个出版商的门 604
学会正确的敲门方法 604
合同 605
重要事件 606
访谈 607
没有出版商,该怎么办 607
André LaMothe:Xtreme Games LLC 609
总结 610
参考网站 610
结论 611
第4部分 附录 615
附录A 光盘内容简介 615
源代码 616
工具软件 617
Microsoft DirectX 8.0 SDK 617
游戏 618
附录B 在Visual C++中调试程序 619
断点和执行过程控制 620
运行期间修改变量 621
观察变量 622
附录C 二进制、十六进制和十进制系统 623
二进制 624
十六进制 624
十进制 624
附录D C语言基础 626
标准输入输出 627
文件输入输出 628
结构体 630
动态分配内存 630
附录E 练习答案 632
第1章 633
第2章 633
第3章 633
第6章 634
第8章 634
第4章 634
第5章 634
第9章 635
第11章 635
第12章 635
第13章 635
第16章 636
第17章 636
第15章 636
第14章 636
第18章 637
第19章 637
第20章 637
附录F C++关键字 639
附录G 常用表 641
ASCII表 642
积分表 646
微分表 646
惯性公式表 647
附录H 更多的资源 648
游戏开发和游戏编程 649
新闻、评论和下载站点 649
引擎 650
自主游戏开发者 650
产业 651
计算机幽默 651
书籍 651
术语表 653
Symbols符号 654