《Windows游戏程序设计基础》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:秦海玉主编
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:7121145872
  • 页数:294 页
图书介绍:

第1篇 Windows编程基础 2

第1章 引言 2

1.1 电子游戏产业 2

1.1.1 概述 3

1.1.2 游戏产业价值链 3

1.1.3 电子游戏的历史 4

1.1.4 电子游戏产业的游戏分类 5

1.2 Windows的发展历史 7

1.3 Windows应用程序开发 9

1.4 一些说明 11

1.5 习题 12

第2章 学习使用Visual C++ 13

2.1 Visual C++安装和使用 13

2.1.1 Visual C++的版本信息 13

2.1.2 创建Win32应用程序 14

2.2 Win32控制台应用程序设计 17

2.2.1 预编译头文件 17

2.2.2 Unicode编码 18

2.2.3 TCHAR 19

2.2.4 Debug和Release 20

2.2.5 基本的调试方法 21

2.3 良好的编程习惯 21

2.3.1 使用正确的代码格式 21

2.3.2 采用匈牙利命名法 22

2.4 Win32 API中的常见数据类型 22

2.5 习题 24

第3章 创建窗口与消息响应 25

3.1 Windows应用程序的基本概念 25

3.1.1 窗口 25

3.1.2 入口函数 26

3.1.3 消息和窗口函数 28

3.1.4 进队消息与不进队消息 29

3.1.5 使用MSDN来学习窗口消息 30

3.2 创建窗口 30

3.2.1 包含头文件 33

3.2.2 定义类名和标题字符串 33

3.2.3 注册窗口 33

3.2.4 窗口类的风格 34

3.2.5 创建窗口 35

3.2.6 窗口风格 35

3.2.7 显示窗口 36

3.2.8 更新窗口 37

3.2.9 消息循环 37

3.2.10 窗口函数 38

3.2.11 应用程序的退出 40

3.3 关键在于应用 41

3.4 习题 42

第4章 Windows程序设计基础 43

4.1 GDI的各种概念 43

4.1.1 什么是GDI 43

4.1.2 图形设备上下文 43

4.1.3 WM PAINT消息 44

4.2 GDI版本的Hello,World! 44

4.2.1 BeginPaint和EndPaint 45

4.2.2 输出文本 45

4.3 打字程序 47

4.3.1 按键消息 47

4.3.2 字符消息 49

4.3.3 强制刷新 49

4.3.4 简陋的打字程序 50

4.4 涂鸦程序 51

4.4.1 GDI函数 51

4.4.2 涂鸦程序1.0 52

4.4.3 鼠标消息 55

4.4.4 GetDC与ReleaseDC 56

4.4.5 设置字符串 56

4.4.6 画线与填充 57

4.4.7 涂鸦程序2.0 60

4.5 时钟 62

4.5.1 获取系统时间 64

4.5.2 生成和销毁定时器 65

4.5.3 获取按键的输入状态 67

4.5.4 WM_NCHITTEST 67

4.5.5 使用右键菜单 68

4.6 使用资源 70

4.6.1 使用图标资源 72

4.6.2 使用鼠标指针 73

4.6.3 使用菜单 74

4.6.4 加速键 77

4.7 文件内核对象 80

4.7.1 CreateFile 80

4.7.2 文件大小和文件位置 81

4.7.3 读/写文件 82

4.7.4 与文件相关的通用对话框 83

4.7.5 实现涂鸦文件读/写 85

4.8 习题 88

第5章 进一步提高Windows编程 89

5.1 图像文件的格式 89

5.2 位图 91

5.2.1 位图的概念 91

5.2.2 加载位图 92

5.2.3 设备DC与内存DC 92

5.2.4 BitBlt 93

5.2.5 绘制位图文件的基本流程 94

5.2.6 完整的代码 95

5.2.7 改变窗口的位置与尺寸 96

5.3 内存DC的应用 98

5.3.1 镂空图 98

5.3.2 一个小程序 100

5.3.3 为什么会有屏闪 103

5.3.4 背景滚动 105

5.4 俄罗斯方块 107

5.4.1 设计思路 107

5.4.2 设计BLOCK 110

5.4.3 CGame的设计 111

5.4.4 CGame的实现 113

5.5 习题 121

第2篇 游戏编程基础 124

第6章 库与Cxlmage库 124

6.1 库的基本概念 124

6.2 编译、链接、执行 125

6.3 静态库的基本编程 126

6.4 动态库编程 128

6.4.1 动态库基本编程过程 128

6.4.2 使用统一的头文件 130

6.4.3 再次审视编译链接执行 130

6.5 使用CxImage库 131

6.5.1 生成CxImage 132

6.5.2 通过DLL使用CxImage 133

6.5.3 使用CxImage显示图片 133

6.5.4 旋转图片 134

6.5.5 封装CxImage 135

6.6 习题 136

第7章 常用设计模式的介绍 137

7.1 面向对象程序设计 137

7.1.1 面向对象程序设计的三大机制 137

7.1.2 面向对象程序设计的原则 137

7.2 设计模式概论 139

7.3 模板方法模式 139

7.4 策略模式 141

7.5 习题 144

第8章 搭建Windows游戏程序框架 145

8.1 分析Win32项目的基本代码 145

8.2 游戏循环 147

8.3 “糟糕”的消息机制 148

8.3.1 同步函数与异步函数 148

8.3.2 实现游戏循环 149

8.4 利用模板方法模式搭建Windows游戏程序框架 150

8.5 使用并完善框架类 155

8.5.1 使用cApplication 155

8.5.2 实现双缓冲技术避免屏闪 156

8.5.3 计算并显示帧率 157

8.6 查询按键及退出游戏的实现 159

8.6.1 获取按键状态 159

8.6.2 Escape退出 160

8.7 游戏暂停功能的实现 160

8.7.1 单击空格键暂停游戏 161

8.7.2 是否当前窗口判断游戏暂停 161

8.8 六字真言:输入、计算、输出 163

8.9 习题 163

第3篇 射击游戏 166

第9章 图像显示与背景 166

9.1 必要的数学运算 166

9.1.1 坐标和角度运算 166

9.1.2 敌机的旋转角度 167

9.1.3 边界检测 168

9.2 管理器的概念 168

9.2.1 怪物 169

9.2.2 怪物管理器 169

9.2.3 怪物仿真程序的逻辑 171

9.3 图片资源的管理 172

9.4 实现背景的滚动 173

9.4.1 背景类cBackground的声明 174

9.4.2 背景类cBackground的实现 174

9.4.3 背景类cBackground的使用 175

9.5 可移动对象接口类IMovable 176

9.5.1 可移动对象 176

9.5.2 可移动对象管理器 178

9.6 实现云彩 180

9.7 习题 181

第10章 飞机和子弹 182

10.1 总体设计 182

10.2 飞机 182

10.3 实现战机 183

10.4 敌机 184

10.4.1 整体设计 184

10.4.2 敌机类cEnemy 186

10.4.3 敌机管理器 186

10.4.4 敌机与战机的碰撞 189

10.4.5 使用敌机管理器类 189

10.5 敌机飞起来 190

10.5.1 敌机与策略 190

10.5.2 匀速策略类 192

10.5.3 策略管理器 192

10.5.4 直线型策略 194

10.5.5 让敌机具备跟踪功能 195

10.6 子弹 196

10.6.1 总体思路 196

10.6.2 子弹管理器 196

10.6.3 碰撞检测 198

10.6.4 发射 199

10.7 习题 204

第11章 实现关卡 205

11.1 XML编程基础 205

11.1.1 XML的基本概念 205

11.1.2 XML文件示例 207

11.1.3 使用XML Notepad 208

11.2 通过XML实现关卡 208

11.2.1 使用TinyXML 208

11.2.2 XML实现敌机类型 209

11.2.3 XML实现子弹类型 210

11.2.4 XML实现战机子弹 211

11.2.5 XML实现关卡脚本 212

11.3 习题 214

第4篇 知识拓展 216

第12章 Windows体系结构 216

12.1 多任务的操作系统 216

12.2 Windows的体系结构 216

12.2.1 核心态 217

12.2.2 用户态 218

12.3 抢先式多任务工作方式 219

12.4 Windows内存管理机制 221

12.5 多线程 223

12.6 习题 223

第13章 Windows高级编程 224

13.1 内核对象与内核对象句柄 224

13.1.1 内核对象 224

13.1.2 创建内核对象 225

13.1.3 使用计数 226

13.1.4 进程间共享内核对象 226

13.1.5 触发/未触发状态 226

13.2 进程 228

13.2.1 进程与线程 228

13.2.2 通过任务管理器查看程序的信息 229

13.2.3 创建子进程 230

13.2.4 终止进程 233

13.3 多线程编程 233

13.3.1 进程与线程 233

13.3.2 引入线程的好处 234

13.3.3 如何使用多线程 234

13.3.4 创建线程 235

13.3.5 多个线程使用同一个线程函数 237

13.3.6 线程的调度 238

13.4 互斥访问共享资源 239

13.4.1 提出问题 239

13.4.2 互锁函数 241

13.4.3 关键段操作 242

13.4.4 使用内核对象保证互斥访问 243

13.5 线程同步 248

13.5.1 单向的同步关系 249

13.5.2 循环的同步关系 250

13.6 习题 253

第14章 使用DirectX完成二维游戏绘制 254

14.1 DirectX概述 254

14.2 初始化Direct3D 255

14.2.1 获取IDirect3D9接口 256

14.2.2 构造D3DPRESENT_PARAMETERS结构体 256

14.2.3 创建IDirect3DDevice9对象 258

14.2.4 创建Direct3D窗口 258

14.3 显示图形 260

14.3.1 页面切换 260

14.3.2 在响应WM_PAINT消息的代码中进行绘制 261

14.3.3 顶点与FVF(灵活顶点格式) 263

14.3.4 三角形 264

14.3.5 绘制二维三角形 265

14.4 使用DirectGraphics进行2D图像处理 268

14.4.1 纹理 268

14.4.2 创建并使用纹理 269

14.4.3 常用渲染状态 271

14.5 把Direct3D融入框架中 272

14.5.1 纹理类 272

14.5.2 渲染系统类 274

14.5.3 使用渲染系统 276

14.6 习题 276

附录A Visual C++编译常见错误 277

附录B ASCII码表 281

附录C 标准模板库的使用 285

C.1 STL概述 285

C.1.1 要点 285

C.1.2 头文件 286

C.1.3 名字空间 286

C.1.4 迭代器 286

C.2 常用数据容器与数据结构 287

C.3 vector 288

C.3.1 插入数据 288

C.3.2 遍历 288

C.4 list 288

C.4.1 list的迭代器 289

C.4.2 遍历 289

C.4.3 删除元素 289

C.5 map 290

C.5.1 数据的插入和修改 291

C.5.2 数据的遍历 291

C.5.3 数据的查找 292

C.5.4 数据的清空与判空 292

C.6 使用标准模板库(STL) 292

参考文献 293