Starting out with games & graphics in C++
副标题:无
分类号:
ISBN:9787302236092
微信扫一扫,移动浏览光盘
简介
《C++图形与游戏编程基础》作为入门教材,采用一种新颖、有趣的“
寓教于乐”的方式来讲授传统主题,即鼓励并引导学生亲自动手写程序来
生成图形、处理图像/声音和玩游戏。所有例子和作业都经过精心设计,能
很好地激发学生的学习兴趣,使其在整个课程中都能兴趣盎然地专心学、
动手做。
全书共12章,涵盖的基本主题包括数据类型、变量、输入、输出、控
制结构、函数、数组、文件、类和对象。在学习过程中,循序渐进地介绍
如何画一些基本的图形,如何加载和处理图像,如何创建图形和动画,如
何播放音乐和音效,如何检测程序不同图形元素(称为sprite)之间的碰
撞。同时还介绍如何综合运用这些技能创建互动电脑游戏。
本书适合没有任何编程背景但对游戏编程具有强烈兴趣的读者,是帮
助他们进入图形和游戏编程世界的理想教程。
目录
第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
知识检查点 5
1.3 计算机如何存储数据 5
1.3.1 存储数字 6
1.3.2 存储字符 8
1.3.3 负整数 8
1.3.4 实数 9
1.3.5 其他类型的数据 9
知识检查点 10
1.4 程序如何工作 10
1.4.1 从机器语言到汇编语言 12
1.4.2 高级语言 13
1.4.3 关键字、运算符和语法:概述 14
.1.4.4 编译器和解释器 15
知识检查点 17
1.5 c++和dark gdk库 17
需要使用的软件 18
综合测验 26
编程练习 28
第2章 用c+和dark gdk库
进行图形编程 31
2.1 体验c++和dark gdk库 31
2.1.1 注释 34
2.1.2 编程风格式:增强代码的可读性 35
知识检查点 35
2.2 屏幕坐标系统 36
2.2.1 用dbdot函数画点 37
2.2.2 dbwait函数 38
知识检查点 39
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
知识检查点 48
2.4 显示文本 49
2.4.1 在dark gdk窗口中显示文本 49
2.4.2 在窗口标题栏中显示文本 52
知识检查点 58
2.5 程序开发周期 59
知识检查点 60
综合测验 61
编程练习 63
第3章 变量、计算和颜色 65
3.1 概述 65
3.2 文字常量 65
知识检查点 67
3.3 变量 67
3.3.1 数据类型 68
3.3.2 变量名称 69
3.3.3 声明变量 70
知识检查点 74
3.4 计算 74
3.4.1 运算顺序 77
3.4.2 用圆括号分组 78
3.4.3 整数除法 81
3.4.4 复合赋值运算符 81
知识检查点 86
3.5 从函数获取值 87
3.5.1 获取随机数 89
3.5.2 为随机数生成器提供种子值 90
3.5.3 嵌套函数调用 92
3.5.4 数学函数 93
3.5.5 其他会返回值的函数 94
知识检查点 94
3.6 从键盘读取数值输入 94
3.6.1 atoi函数和atof如何处理无效字符 97
3.6.2 将数值转换成字符串 97
知识检查点 98
3.7 颜色 98
3.7.1 将rgb颜色存储到内存 100
3.7.2 用彩色描绘 101
知识检查点 105
3.8 具名常量 105
知识检查点 107
3.9 更改程序窗口的大小 107
综合测验 109
编程练习 111
第4章 void函数 113
4.1 使用函数来模块化程序 113
函数的好处 114
知识检查点 115
4.2 定义并调用void函数 115
4.2.1 函数名 115
4.2.2 定义void函数 115
4.2.3 调用函数 116
4.2.4 函数原型 120
知识检查点 121
4.3 设计程序来使用函数 121
层次图 123
4.4 局部变量 124
作用域和局部变量 126
知识检查点 127
4.5 向函数传递实参 127
4.5.1 形参变量的作用域 130
4.5.2 传递多个实参 131
4.5.3 以传值方式传递实参 134
4.5.4 以传引用方式传递实参 135
知识检查点 138
4.6 全局变量和常量 138
全局常量 139
知识检查点 141
综合测验 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
知识检查点 159
5.3 色键透明 159
5.3.1 用dbloadimage函数加载图像 160
5.3.2 用dbpasteimage显示图像 160
5.3.3 用dbsetimagecolorkey函数更改键色 161
5.3.4 从内存中删除图像 170
知识检查点 170
综合测验 171
编程练习 172
第6章 控制结构 175
6.1 概述 175
知识检查点 176
6.2 用if语句写选择结构 177
6.2.1 布尔表达式和关系运算符 179
6.2.2 综合运用 180
6.2.3 测试颜色 182
知识检查点 183
6.3 if-else语句 183
知识检查点 187
6.4 嵌套选择结构和if-else-if语句 187
6.4.1 编程风格和嵌套选择结构 191
6.4.2 if-else-if语句 192
知识检查点 194
6.5 重复结构:while和do-while循环 194
6.5.1 条件控制和计数控制的循环 195
6.5.2 while循环 195
6.5.3 while循环是先测试循环 198
6.5.4 无限循环 201
6.5.5 do-while循环:后测试循环 201
知识检查点 203
6.6 递增运算符和递减运算符 203
6.7 重复结构:for循环 204
6.7.1 在初始化表达式中声明计数器变量 207
6.7.2 在循环主体中使用计数器变量 207
6.7.3 递增不止 208
6.7.4 递减计数器变量来倒数 209
知识检查点 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
知识检查点 218
6.10 switch语句 219
知识检查点 222
6.11 数值真假、标志和bool变量 223
bool变量 223
知识检查点 224
综合测验 225
编程练习 228
第7章 游戏循环和动画 231
7.1 游戏循环 231
7.1.1 游戏循环 233
7.1.2 将控制交还给dark gdk 234
知识检查点 235
7.2 简单动画 235
在游戏循环中清除屏幕 237
7.3 用键盘控制物体 238
7.3.1 移动屏幕上的物体 240
7.3.2 用键盘执行其他操作 241
知识检查点 242
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
知识检查点 265
7.5 胶片动画和sprite sheet 265
7.5.1 使用sprite sheet简化动画 268
7.5.2 用dark gdk播放sprite动画 269
知识检查点 270
7.6 sprite碰撞检测 271
知识检查点 279
综合测验 280
编程练习 281
第8章 vulture trouble游戏:
引入声音、物理和文本
效果 283
8.1 概述 283
8.2 播放音效和音乐 283
8.2.1 声音文件 284
8.2.2 音乐文件 293
知识检查点 298
8.3 模拟下落物体 299
模拟两个方向的运动 305
知识检查点 307
8.4 文本效果 307
8.4.1 更改字号 308
8.4.2 更改字体 308
8.4.3 使用加粗和倾斜字形 308
8.4.4 文本背景透明 310
8.4.5 获取文本宽度和高度 311
8.4.6 设置光标位置 312
知识检查点 314
8.5 vulture trouble游戏 314
综合测验 334
编程练习 335
第9章 返回值的函数和鼠标输入 339
9.1 返回值的函数 339
9.1.1 自己动手写能返回值的函数 340
9.1.2 充分利用return语句 342
9.1.3 返回布尔值 348
知识检查点 363
9.2 使用鼠标 364
9.2.1 获取鼠标坐标 364
9.2.2 显示、隐藏和定位鼠标 365
9.2.3 检测鼠标按钮操作 366
9.2.4 显示系统的沙漏指针 367
9.2.5 获取鼠标移动距离 367
知识检查点 376
9.3 bug zapper游戏 376
综合测验 387
编程练习 388
第10章 数组和tile map 391
10.1 数组基础 391
10.1.1 数组元素和下标 392
10.1.2 向数组元素赋值 393
10.1.3 c++不执行数组边界检查 395
10.1.4 使用循环来遍历数组 395
10.1.5 数组初始化 397
10.1.6 dword类型的颜色数组 399
10.1.7 隐式指定数组的大小 400
10.1.8 复制数组 400
10.1.9 将数组作为实参传给函数 401
10.1.10 比较两个数组 404
10.1.11 交换数组元素 415
10.1.12 部分填充的数组 415
知识检查点 421
10.2 数组排序 422
知识检查点 430
10.3 二维数组 430
10.3.1 声明二维数组 431
10.3.2 访问二维数组中的元素 431
10.3.3 初始化二维数组 433
10.3.4 向函数传递二维数组 434
知识检查点 435
10.4 tile map 436
显示分层的tile集合 448
知识检查点 456
综合测验 457
编程练习 459
第11章 字符串和文件 462
11.1 字符串处理 462
11.1.1 char数据类型 462
11.1.2 字符串在内存中的存储方式 463
11.1.3 用char数组存储字符串 463
11.1.4 显示char数组存储的字符串 464
11.1.5 使用标准c++库函数进行字符串处理 464
11.1.6 字符串数组 474
知识检查点 476
11.2 文件输入和输出 477
11.2.1 文件名 478
11.2.2 文件编号 479
11.2.3 打开输出文件 479
11.2.4 向输出文件写入数据 480
11.2.5 关闭输出文件 481
11.2.6 打开输入文件 481
11.2.7 从输入文件读取数据 482
11.2.8 关闭输出文件 482
11.2.9 判断文件是否打开 483
11.2.10 使用循环处理文件 488
11.2.11 检测文件尾 488
知识检查点 490
11.3 保存游戏的最高分 491
综合测验 499
编程练习 501
第12章 面向对象编程 503
12.1 过程式编程和面向对象编程 503
12.1.1 对象重用 504
12.1.2 日常生活中的一个对象的例子 504
12.1.3 oop术语 505
知识检查点 505
12.2 类和对象 505
12.2.1 声明类 507
12.2.2 赋值函数和取值函数 509
12.2.3 定义成员函数 509
12.2.4 创建对象 511
12.2.5 构造器 514
12.2.6 从同一个类创建多个对象 517
12.2.7 重载成员函数 518
12.2.8 重载构造器 521
12.2.9 创建对象数组 524
12.2.10 对象作为实参传给函数 528
12.2.11 析构器 529
知识检查点 534
12.3 继承 535
12.3.1 常规化和和特殊化 535
12.3.2 继承和“属于”关系 535
12.3.3 向基类构造器传递实参 541
知识检查点 547
12.4 面向对象的游戏:balloon target 548
综合测验 555
编程练习 556
附录a 下载和安装必要的软件 559
步骤1:安装microsoft visual c++ 2008速成版 559
步骤2:启动visual c++ 2008 560
步骤3:下载并安装dark gdk 560
步骤4:下载示例源代码、媒体文件和游戏案例分析 563
附录b ascii字符集 565
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
知识检查点 5
1.3 计算机如何存储数据 5
1.3.1 存储数字 6
1.3.2 存储字符 8
1.3.3 负整数 8
1.3.4 实数 9
1.3.5 其他类型的数据 9
知识检查点 10
1.4 程序如何工作 10
1.4.1 从机器语言到汇编语言 12
1.4.2 高级语言 13
1.4.3 关键字、运算符和语法:概述 14
.1.4.4 编译器和解释器 15
知识检查点 17
1.5 c++和dark gdk库 17
需要使用的软件 18
综合测验 26
编程练习 28
第2章 用c+和dark gdk库
进行图形编程 31
2.1 体验c++和dark gdk库 31
2.1.1 注释 34
2.1.2 编程风格式:增强代码的可读性 35
知识检查点 35
2.2 屏幕坐标系统 36
2.2.1 用dbdot函数画点 37
2.2.2 dbwait函数 38
知识检查点 39
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
知识检查点 48
2.4 显示文本 49
2.4.1 在dark gdk窗口中显示文本 49
2.4.2 在窗口标题栏中显示文本 52
知识检查点 58
2.5 程序开发周期 59
知识检查点 60
综合测验 61
编程练习 63
第3章 变量、计算和颜色 65
3.1 概述 65
3.2 文字常量 65
知识检查点 67
3.3 变量 67
3.3.1 数据类型 68
3.3.2 变量名称 69
3.3.3 声明变量 70
知识检查点 74
3.4 计算 74
3.4.1 运算顺序 77
3.4.2 用圆括号分组 78
3.4.3 整数除法 81
3.4.4 复合赋值运算符 81
知识检查点 86
3.5 从函数获取值 87
3.5.1 获取随机数 89
3.5.2 为随机数生成器提供种子值 90
3.5.3 嵌套函数调用 92
3.5.4 数学函数 93
3.5.5 其他会返回值的函数 94
知识检查点 94
3.6 从键盘读取数值输入 94
3.6.1 atoi函数和atof如何处理无效字符 97
3.6.2 将数值转换成字符串 97
知识检查点 98
3.7 颜色 98
3.7.1 将rgb颜色存储到内存 100
3.7.2 用彩色描绘 101
知识检查点 105
3.8 具名常量 105
知识检查点 107
3.9 更改程序窗口的大小 107
综合测验 109
编程练习 111
第4章 void函数 113
4.1 使用函数来模块化程序 113
函数的好处 114
知识检查点 115
4.2 定义并调用void函数 115
4.2.1 函数名 115
4.2.2 定义void函数 115
4.2.3 调用函数 116
4.2.4 函数原型 120
知识检查点 121
4.3 设计程序来使用函数 121
层次图 123
4.4 局部变量 124
作用域和局部变量 126
知识检查点 127
4.5 向函数传递实参 127
4.5.1 形参变量的作用域 130
4.5.2 传递多个实参 131
4.5.3 以传值方式传递实参 134
4.5.4 以传引用方式传递实参 135
知识检查点 138
4.6 全局变量和常量 138
全局常量 139
知识检查点 141
综合测验 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
知识检查点 159
5.3 色键透明 159
5.3.1 用dbloadimage函数加载图像 160
5.3.2 用dbpasteimage显示图像 160
5.3.3 用dbsetimagecolorkey函数更改键色 161
5.3.4 从内存中删除图像 170
知识检查点 170
综合测验 171
编程练习 172
第6章 控制结构 175
6.1 概述 175
知识检查点 176
6.2 用if语句写选择结构 177
6.2.1 布尔表达式和关系运算符 179
6.2.2 综合运用 180
6.2.3 测试颜色 182
知识检查点 183
6.3 if-else语句 183
知识检查点 187
6.4 嵌套选择结构和if-else-if语句 187
6.4.1 编程风格和嵌套选择结构 191
6.4.2 if-else-if语句 192
知识检查点 194
6.5 重复结构:while和do-while循环 194
6.5.1 条件控制和计数控制的循环 195
6.5.2 while循环 195
6.5.3 while循环是先测试循环 198
6.5.4 无限循环 201
6.5.5 do-while循环:后测试循环 201
知识检查点 203
6.6 递增运算符和递减运算符 203
6.7 重复结构:for循环 204
6.7.1 在初始化表达式中声明计数器变量 207
6.7.2 在循环主体中使用计数器变量 207
6.7.3 递增不止 208
6.7.4 递减计数器变量来倒数 209
知识检查点 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
知识检查点 218
6.10 switch语句 219
知识检查点 222
6.11 数值真假、标志和bool变量 223
bool变量 223
知识检查点 224
综合测验 225
编程练习 228
第7章 游戏循环和动画 231
7.1 游戏循环 231
7.1.1 游戏循环 233
7.1.2 将控制交还给dark gdk 234
知识检查点 235
7.2 简单动画 235
在游戏循环中清除屏幕 237
7.3 用键盘控制物体 238
7.3.1 移动屏幕上的物体 240
7.3.2 用键盘执行其他操作 241
知识检查点 242
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
知识检查点 265
7.5 胶片动画和sprite sheet 265
7.5.1 使用sprite sheet简化动画 268
7.5.2 用dark gdk播放sprite动画 269
知识检查点 270
7.6 sprite碰撞检测 271
知识检查点 279
综合测验 280
编程练习 281
第8章 vulture trouble游戏:
引入声音、物理和文本
效果 283
8.1 概述 283
8.2 播放音效和音乐 283
8.2.1 声音文件 284
8.2.2 音乐文件 293
知识检查点 298
8.3 模拟下落物体 299
模拟两个方向的运动 305
知识检查点 307
8.4 文本效果 307
8.4.1 更改字号 308
8.4.2 更改字体 308
8.4.3 使用加粗和倾斜字形 308
8.4.4 文本背景透明 310
8.4.5 获取文本宽度和高度 311
8.4.6 设置光标位置 312
知识检查点 314
8.5 vulture trouble游戏 314
综合测验 334
编程练习 335
第9章 返回值的函数和鼠标输入 339
9.1 返回值的函数 339
9.1.1 自己动手写能返回值的函数 340
9.1.2 充分利用return语句 342
9.1.3 返回布尔值 348
知识检查点 363
9.2 使用鼠标 364
9.2.1 获取鼠标坐标 364
9.2.2 显示、隐藏和定位鼠标 365
9.2.3 检测鼠标按钮操作 366
9.2.4 显示系统的沙漏指针 367
9.2.5 获取鼠标移动距离 367
知识检查点 376
9.3 bug zapper游戏 376
综合测验 387
编程练习 388
第10章 数组和tile map 391
10.1 数组基础 391
10.1.1 数组元素和下标 392
10.1.2 向数组元素赋值 393
10.1.3 c++不执行数组边界检查 395
10.1.4 使用循环来遍历数组 395
10.1.5 数组初始化 397
10.1.6 dword类型的颜色数组 399
10.1.7 隐式指定数组的大小 400
10.1.8 复制数组 400
10.1.9 将数组作为实参传给函数 401
10.1.10 比较两个数组 404
10.1.11 交换数组元素 415
10.1.12 部分填充的数组 415
知识检查点 421
10.2 数组排序 422
知识检查点 430
10.3 二维数组 430
10.3.1 声明二维数组 431
10.3.2 访问二维数组中的元素 431
10.3.3 初始化二维数组 433
10.3.4 向函数传递二维数组 434
知识检查点 435
10.4 tile map 436
显示分层的tile集合 448
知识检查点 456
综合测验 457
编程练习 459
第11章 字符串和文件 462
11.1 字符串处理 462
11.1.1 char数据类型 462
11.1.2 字符串在内存中的存储方式 463
11.1.3 用char数组存储字符串 463
11.1.4 显示char数组存储的字符串 464
11.1.5 使用标准c++库函数进行字符串处理 464
11.1.6 字符串数组 474
知识检查点 476
11.2 文件输入和输出 477
11.2.1 文件名 478
11.2.2 文件编号 479
11.2.3 打开输出文件 479
11.2.4 向输出文件写入数据 480
11.2.5 关闭输出文件 481
11.2.6 打开输入文件 481
11.2.7 从输入文件读取数据 482
11.2.8 关闭输出文件 482
11.2.9 判断文件是否打开 483
11.2.10 使用循环处理文件 488
11.2.11 检测文件尾 488
知识检查点 490
11.3 保存游戏的最高分 491
综合测验 499
编程练习 501
第12章 面向对象编程 503
12.1 过程式编程和面向对象编程 503
12.1.1 对象重用 504
12.1.2 日常生活中的一个对象的例子 504
12.1.3 oop术语 505
知识检查点 505
12.2 类和对象 505
12.2.1 声明类 507
12.2.2 赋值函数和取值函数 509
12.2.3 定义成员函数 509
12.2.4 创建对象 511
12.2.5 构造器 514
12.2.6 从同一个类创建多个对象 517
12.2.7 重载成员函数 518
12.2.8 重载构造器 521
12.2.9 创建对象数组 524
12.2.10 对象作为实参传给函数 528
12.2.11 析构器 529
知识检查点 534
12.3 继承 535
12.3.1 常规化和和特殊化 535
12.3.2 继承和“属于”关系 535
12.3.3 向基类构造器传递实参 541
知识检查点 547
12.4 面向对象的游戏:balloon target 548
综合测验 555
编程练习 556
附录a 下载和安装必要的软件 559
步骤1:安装microsoft visual c++ 2008速成版 559
步骤2:启动visual c++ 2008 560
步骤3:下载并安装dark gdk 560
步骤4:下载示例源代码、媒体文件和游戏案例分析 563
附录b ascii字符集 565
Starting out with games & graphics in C++
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×