《C++图形与游戏编程基础》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)托尼著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302236092
  • 页数:567 页
图书介绍:本书共12章,涵盖了数据类型、变量、输入、输出、控制结构、函数、数组、文件、类和对象等。

第1章 计算机和编程概论 1

1.1 概述 1

1.2 硬件 1

1.2.1 CPU 2

1.2.2 主内存 3

1.2.3 辅助存储设备 4

1.2.4 输入设备 4

1.2.5 输出设备 4

1.3 计算机如何存储数据 5

1.3.1 存储数字 6

1.3.2 存储字符 8

1.3.3 负整数 8

1.3.4 实数 9

1.3.5 其他类型的数据 9

1.4 程序如何工作 10

1.4.1 从机器语言到汇编语言 12

1.4.2 高级语言 13

1.4.3 关键字、运算符和语法:概述 14

1.4.4 编译器和解释器 15

1.5 C++和Dark GDK库 17

综合测验 26

编程练习 28

第2章 用C+和Dark GDK库进行图形编程 31

2.1 体验C++和Dark GDK库 31

2.1.1 注释 34

2.1.2 编程风格:增强代码的可读性 35

2.2 屏幕坐标系统 36

2.2.1 用dbDot函数画点 37

2.2.2 dbWait函数 38

2.3 基本的二维图形 39

2.3.1 画线:dbLine函数 40

2.3.2 画矩形:dbBox函数 43

2.3.3 画圆:dbCircle函数 45

2.3.4 画椭圆:dbEllipse函数 46

2.3.5 在Dark GDK窗口外部画图 48

2.4 显示文本 49

2.4.1 在Dark GDK窗口中显示文本 49

2.4.2 在窗口标题栏中显示文本 52

2.5 程序开发周期 59

综合测验 61

编程练习 63

第3章 变量、计算和颜色 65

3.1 概述 65

3.2 文字常量 65

3.3 变量 67

3.3.1 数据类型 68

3.3.2 变量名称 69

3.3.3 声明变量 70

3.4 计算 74

3.4.1 运算顺序 77

3.4.2 用圆括号分组 78

3.4.3 整数除法 81

3.4.4 复合赋值运算符 81

3.5 从函数获取值 87

3.5.1 获取随机数 89

3.5.2 为随机数生成器提供种子值 90

3.5.3 嵌套函数调用 92

3.5.4 数学函数 93

3.5.5 其他会返回值的函数 94

3.6 从键盘读取数值输入 94

3.6.1 atoi和atof函数如何处理无效字符 96

3.6.2 将数值转换成字符串 97

3.7 颜色 98

3.7.1 将RGB颜色存储到内存 100

3.7.2 用彩色描绘 101

3.8 具名常量 105

3.9 更改程序窗口的大小 107

综合测验 109

编程练习 111

第4章 void函数 113

4.1 使用函数来模块化程序 113

4.2 定义并调用void函数 115

4.2.1 函数名 115

4.2.2 定义void函数 115

4.2.3 调用函数 116

4.2.4 函数原型 120

4.3 设计程序来使用函数 121

层次图 123

4.4 局部变量 124

作用域和局部变量 126

4.5 向函数传递实参 127

4.5.1 形参变量的作用域 130

4.5.2 传递多个实参 131

4.5.3 以传值方式传递实参 134

4.5.4 以传引用方式传递实参 135

4.6 全局变量和常量 138

综合测验 142

编程练习 144

第5章 处理图像 147

5.1 概述 147

5.2 位图 147

5.2.1 加载位图图像 147

5.2.2 位图文件位置 148

5.2.3 从用户处获得文件名 152

5.2.4 加载多幅位图 153

5.2.5 获取位图的大小和颜色深度 156

5.2.6 从内存中删除位图 157

5.2.7 位图的翻转、镜像、褪色和模糊 157

5.3 色键透明 159

5.3.1 用dbLoadImage函数加载图像 160

5.3.2 用dbPasteImage显示图像 160

5.3.3 用dbSetImageColorKey函数更改键色 161

5.3.4 从内存中删除图像 170

综合测验 171

编程练习 172

第6章 控制结构 175

6.1 概述 175

6.2 用if语句写选择结构 177

6.2.1 布尔表达式和关系运算符 179

6.2.2 综合运用 180

6.2.3 测试颜色 182

6.3 if-else语句 183

6.4 嵌套选择结构和if-else-if语句 187

6.4.1 编程风格和嵌套选择结构 191

6.4.2 if-else-if语句 192

6.5 重复结构:while和do-while循环 194

6.5.1 条件控制和计数控制的循环 195

6.5.2 while循环 195

6.5.3 while循环是先测试循环 199

6.5.4 无限循环 201

6.5.5 do-while循环:后测试循环 201

6.6 递增运算符和递减运算符 203

6.7 重复结构:for循环 204

6.7.1 在初始化表达式中声明计数器变量 207

6.7.2 在循环主体中使用计数器变量 207

6.7.3 递增不止1 208

6.7.4 递减计数器变量来倒数 209

6.8 用for循环处理图像中的像素 209

6.9 逻辑运算符 214

6.9.1 &&运算符 214

6.9.2 ‖运算符 215

6.9.3 短路求值 215

6.9.4 !运算符 216

6.9.5 逻辑运算符的优先级 216

6.10 switch语句 219

6.11 数值真假、标志和bool变量 223

综合测验 225

编程练习 228

第7章 游戏循环和动画 231

7.1 游戏循环 231

7.1.1 游戏循环 233

7.1.2 将控制交还给Dark GDK 234

7.2 简单动画 235

7.3 用键盘控制物体 238

7.3.1 移动屏幕上的物体 240

7.3.2 用键盘执行其他操作 241

7.4 有关sprite 243

7.4.1 创建sprite 243

7.4.2 移动sprite 244

7.4.3 获取sprite的X和Y坐标 247

7.4.4 获取sprite的宽度和高度 247

7.4.5 旋转sprite 248

7.4.6 偏移sprite的插入点 250

7.4.7 显示和隐藏sprite 251

7.4.8 改变sprite的大小 252

7.4.9 设置sprite的优先级 253

7.4.10 判断sprite是否存在 253

7.4.11 更改sprite图像 254

7.4.12 翻转和镜像sprite 254

7.4.13 设置back save和透明功能 255

7.4.14 使用sprite的alpha值来更改透明度 256

7.4.15 从内存中删除sprite 257

7.4.16 显示sprite、图像和基本图形 257

7.4.17 粘贴和克隆sprite 261

7.5 胶片动画和sprite sheet 265

7.5.1 使用sprite sheet简化动画 268

7.5.2 用Dark GDK播放sprite动画 269

7.6 sprite碰撞检测 271

综合测验 281

编程练习 282

第8章 Vulture Trouble游戏:引入声音、物理和文本效果 285

8.1 概述 285

8.2 播放音效和音乐 285

8.2.1 声音文件 286

8.2.2 音乐文件 295

8.3 模拟下落物体 301

8.4 文本效果 309

8.4.1 更改字号 310

8.4.2 更改字体 310

8.4.3 使用加粗和倾斜字形 310

8.4.4 文本背景透明 312

8.4.5 获取文本宽度和高度 313

8.4.6 设置光标位置 314

8.5 Vulture Trouble游戏 316

综合测验 336

编程练习 338

第9章 返回值的函数和鼠标输入 341

9.1 返回值的函数 341

9.1.1 自己动手写能返回值的函数 342

9.1.2 充分利用return语句 344

9.1.3 返回布尔值 350

9.2 使用鼠标 366

9.2.1 获取鼠标坐标 366

9.2.2 显示、隐藏和定位鼠标 367

9.2.3 检测鼠标按钮操作 368

9.2.4 显示系统的沙漏指针 369

9.2.5 获取鼠标移动距离 369

9.3 Bug Zapper游戏 378

综合测验 389

编程练习 390

第10章 数组和tile map 393

10.1 数组基础 393

10.1.1 数组元素和下标 394

10.1.2 向数组元素赋值 395

10.1.3 C++不执行数组边界检查 397

10.1.4 使用循环来遍历数组 397

10.1.5 数组初始化 399

10.1.6 DWORD类型的颜色数组 401

10.1.7 隐式指定数组的大小 402

10.1.8 复制数组 402

10.1.9 将数组作为实参传给函数 403

10.1.10 比较两个数组 406

10.1.11 交换数组元素 417

10.1.12 部分填充的数组 417

10.2 数组排序 424

10.3 二维数组 432

10.3.1 声明二维数组 433

10.3.2 访问二维数组中的元素 433

10.3.3 初始化二维数组 435

10.3.4 向函数传递二维数组 436

10.4 tile map 438

综合测验 458

编程练习 460

第11章 字符串和文件 463

11.1 字符串处理 463

11.1.1 char数据类型 463

11.1.2 字符串在内存中的存储方式 464

11.1.3 用char数组存储字符串 464

11.1.4 显示char数组存储的字符串 465

11.1.5 使用标准C++库函数进行字符串处理 465

11.1.6 字符串数组 475

11.2 文件输入和输出 478

11.2.1 文件名 479

11.2.2 文件编号 480

11.2.3 打开输出文件 480

11.2.4 向输出文件写入数据 481

11.2.5 关闭输出文件 482

11.2.6 打开输入文件 482

11.2.7 从输入文件读取数据 483

11.2.8 关闭输出文件 483

11.2.9 判断文件是否打开 484

11.2.10 使用循环处理文件 489

11.2.11 检测文件尾 489

11.3 保存游戏的最高分 492

综合测验 500

编程练习 503

第12章 面向对象编程 505

12.1 过程式编程和面向对象编程 505

12.1.1 对象重用 506

12.1.2 日常生活中的一个对象的例子 506

12.1.3 OOP术语 507

12.2 类和对象 507

12.2.1 声明类 509

12.2.2 赋值函数和取值函数 511

12.2.3 定义成员函数 511

12.2.4 创建对象 513

12.2.5 构造器 516

12.2.6 从同一个类创建多个对象 519

12.2.7 重载成员函数 520

12.2.8 重载构造器 523

12.2.9 创建对象数组 526

12.2.10 对象作为实参传给函数 530

12.2.11 析构器 531

12.3 继承 537

12.3.1 常规化和和特殊化 537

12.3.2 继承和“属于”关系 537

12.3.3 向基类构造器传递实参 543

12.4 面向对象的游戏:Balloon Target 550

综合测验 557

编程练习 558

附录A 下载和安装必要的软件 561

附录B ASCII字符集 567