产品特色
内容简介
本书从游戏编程的角度介绍C++语言,既独具匠心又妙趣横生。
全书共10章,每章介绍C++语言的一个或数个重要的知识领域,同时通过一个游戏示例项目的开发进行实践和讲解。每章的结尾,会在一个游戏项目中将一些重要的概念组合起来。最后一章的游戏将综合运用本书介绍的概念与技巧,创建一个相对复杂的游戏,涵盖了本书介绍过的所有主要概念。随着学习的深入,读者将学会如何组织编程项目,如何将问题分解为可管理的子问题块,以及如何精炼代码。
本书适合任何想编写游戏的读者,主要针对初学者,并假设读者之前没有任何编程经验。通过阅读本书,并在实验中实践,读者将为掌握C++这门语言并为游戏编程打下坚实的基础。
作者简介
Michael Dawson是一位程序员、游戏设计师和游戏开发者。他获得了南加州大学的计算机科学学士学位,并且目前教授大学生学习游戏编程。Mike的著作包括Beginning C++ Through Game Programming, Python Programming for the Absolute Beginner, C++ Projects: Programming withText-Based Games和 Guide to Programming with Python。请访问他的网站www.programgames.com,了解他的图书的更多信息,并获得相关的支持。
内页插图
目录
第1章 类型、变量与标准I/O:
Lost Fortune 1
11 C++简介 1
111 使用C++编写游戏 1
112 生成可执行文件 2
113 错误处理 3
114 理解ISO标准 4
12 编写第一个C++程序 4
121 Game Over程序简介 4
122 注释 5
123 使用空白字符 6
124 包含其他文件 6
125 定义main()函数 7
126 通过标准输出显示
文本 7
127 语句的终止 8
128 从main()函数返回值 8
13 使用std名称空间 9
131 Game Over 20程序
简介 9
132 使用using指令 10
133 Game Over 30
程序简介 10
134 使用using声明 11
135 使用using的时机 11
14 使用算术运算符 12
141 Expensive Calculator
程序简介 12
142 加法、减法与乘法 13
143 理解整型与浮点型
除法 13
144 使用模除运算符 14
145 运算符的优先级 14
15 声明和初始化变量 14
151 Game Stats程序简介 14
152 基本类型 16
153 类型修饰符 16
154 变量声明 17
155 变量命名 18
156 变量的赋值 19
157 变量初始化 20
158 显示变量值 20
159 获取用户输入 20
1510 为类型定义新名称 21
1511 类型的选择 21
16 使用变量进行算术运算 21
161 Game Stats 20
程序简介 22
162 修改变量值 23
163 使用组合赋值运算符 23
164 递增运算符与递减
运算符 24
165 整数的溢出处理 25
17 使用常量 26
171 Game Stats 30
程序简介 26
172 使用常量 27
173 使用枚举类型 27
18 Lost Fortune简介 28
181 创建程序 29
182 从玩家获取信息 30
183 讲故事 30
19 本章小结 31
110 问与答 32
111 问题讨论 33
112 习题 34
第2章 真值、分支与游戏循环:
Guess My Number 35
21 理解真值 35
22 使用if语句 36
221 Score Rater程序简介 36
222 验证真与假 38
223 值的真与假 39
224 使用关系运算符 39
225 if语句的嵌套 40
23 使用else子句 40
231 Score Rater 20
程序简介 41
232 两种创建分支的方法 42
24 使用带else子句的if
语句序列 43
241 Score Rater 30程序
简介 43
242 创建带else子句的if
语句序列 44
25 使用switch语句 45
251 Menu Chooser程序
简介 46
252 创建多路分支 48
26 使用while循环 48
261 Play Again游戏简介 48
262 使用while循环 49
27 使用do循环 50
271 Play Again 20程序
简介 50
272 使用do循环 51
28 使用break和continue语句 52
281 Finicky Counter程序
简介 52
282 创建while(true)循环 53
283使用break语句退出
循环 53
284 使用continue语句跳转
到循环开始 54
285 使用break和continue
的时机 54
29 使用逻辑运算符 54
291 Designers Network程序
简介 55
292 使用逻辑与运算符 57
293 使用逻辑或运算符 58
294 使用逻辑非运算符 58
295 运算符的优先级 59
210 随机数的生成 60
2101 Die Roller程序简介 60
2102 调用rand()函数 61
2103 为随机数生成器确定
种子 61
2104 在一定范围内计算 62
211 理解游戏主循环 63
212 Guess My Number游戏
简介 64
2121 采用游戏主循环 64
2122 初始化游戏 65
2123 创建游戏主循环 66
2124 游戏结束 67
213 本章小结 67
214 问与答 68
215 问题讨论 69
216 习题 69
第3章 for循环、字符串与数组:
Word Jumble 71
31 使用for循环 71
311 Counter程序简介 72
312 使用for循环计数 73
313 在for循环中使用空
语句 74
314 for循环的嵌套 74
32 了解对象 75
33 使用string对象 77
331 String Tester程序简介 77
332 创建string对象 79
333 string对象的连接 79
334 使用size()成员函数 79
335 索引string对象 80
336 循环访问string对象 81
337 使用find()成员函数 81
338 使用erase()成员函数 82
339 使用empty()成员函数 83
34 使用数组 83
341 Hero's Inventory程序
简介 83
342 创建数组 85
343 数组的索引 86
344 使用数组元素的成员
函数 87
345 数组边界 87
35 理解C风格字符串 88
36 使用多维数组 89
361 Tic-Tac-Toe Board程序
简介 90
362 创建多维数组 91
363 多维数组的索引 92
37 Word Jumble程序简介 92
371 创建程序 93
372 选择单词 93
373 单词乱序 94
374 欢迎界面 95
375 进入游戏主循环 95
376 游戏结束 96
38 本章小结 96
39 问与答 97
310 问题讨论 99
311 习题 99
第4章 标准模板库:Hangman 100
41 标准模板库简介 100
42 使用vector 101
421 Hero's Inventory 20程序
简介 101
422 使用向量的准备工作 103
423 向量的声明 103
424 使用push_back()成员
函数 104
425 使用size()成员函数 104
426 向量的索引 105
427 调用元素的成员函数 105
428 使用pop_back()成员
函数 106
429 使用clear()成员函数 106
4210 使用empty()成员
函数 106
43 使用迭代器 107
431 Hero's Inventory 30程序
简介 107
432 迭代器的声明 109
433 循环访问向量 110
434 修改向量元素的值 111
435 访问向量元素的成员
函数
前言/序言
C++游戏编程入门(第4版)图书简介 《C++游戏编程入门(第4版)》是一本专为渴望踏入游戏开发领域、掌握强大C++语言进行游戏创作的初学者量身打造的权威指南。本书旨在为你打下坚实的游戏编程基础,让你能够理解并实现各种经典游戏的核心机制,并逐步构建出属于自己的互动娱乐作品。 本书的独特之处与价值所在: 1. 从零开始,循序渐进: 本书深知初学者的学习曲线,因此内容编排精心设计,从最基础的C++语法概念入手,逐步过渡到游戏开发中的高级主题。你将不会被冗长晦涩的理论所淹没,而是通过大量生动、可执行的代码示例,亲手构建起一个个功能模块,在实践中巩固所学。 2. 聚焦核心游戏机制: 游戏开发并非一蹴而就,其核心在于对各种机制的理解与实现。本书不会仅仅停留在语言层面,而是将目光聚焦于那些构成游戏骨架的关键要素: 游戏循环(Game Loop): 这是游戏运行的生命线,你将深入理解它的工作原理,学习如何管理游戏的输入、更新逻辑和渲染过程。 精灵与动画(Sprites and Animation): 游戏中的角色、物体如何跃然屏上?本书将教会你如何加载、管理和播放精灵图集,实现流畅的角色行走、攻击、跳跃等动画效果。 碰撞检测(Collision Detection): 角色如何感知障碍物?子弹如何命中敌人?你将学习到多种碰撞检测算法,从简单的边界框检测到更复杂的形状匹配,确保游戏世界的物理交互真实可信。 用户输入(User Input): 如何响应玩家的操作?键盘、鼠标、手柄的输入如何被游戏捕获并转化为行动?本书将详细讲解不同输入设备的集成与处理。 游戏状态管理(Game State Management): 游戏如何切换不同的场景?菜单、游戏进行中、暂停、结束等状态如何有效地组织与切换?你将学习到状态机等设计模式,构建结构清晰的游戏流程。 音频播放(Audio Playback): 游戏的背景音乐、音效是营造氛围、增强沉浸感的关键。本书将引导你如何集成音频库,实现背景音乐的循环播放和各类音效的触发。 关卡设计与加载(Level Design and Loading): 如何创建和加载游戏关卡?你将学习如何从外部文件中读取关卡数据,例如地图信息、敌人 배치,并将其转化为游戏中的实际元素。 3. 实战导向,驱动学习: 本书最大的亮点在于其强大的实战性。我们不会仅仅列举概念,而是会引导你一步步地构建出若干个完整、可玩的小型游戏项目,例如: 经典的“打砖块”游戏: 学习如何处理玩家控制的挡板、弹射的球以及可破坏的砖块,理解基本的物理反弹与分数系统。 简单的平台跳跃游戏: 体验如何实现角色的移动、跳跃、重力效果,以及如何设计简单的障碍物和收集品。 射击类小游戏: 掌握如何创建可移动的敌人、发射子弹、处理命中反馈,以及实现游戏计分和生命值系统。 甚至可以初步涉足更复杂的游戏类型, 为你未来深入探索奠定基础。 4. 现代C++特性与游戏引擎原理: 随着C++标准的不断更新,现代C++提供了许多更强大、更简洁的编程工具。本书将适时地引入和讲解与游戏开发相关的现代C++特性,例如: 面向对象编程(OOP): 如何利用类和对象来组织游戏中的元素,如玩家、敌人、道具等,实现代码的重用与扩展。 STL(Standard Template Library): 容器(如`vector`、`map`)、算法和迭代器在管理游戏数据和实现游戏逻辑中的应用。 智能指针: 如何安全有效地管理内存,避免常见的内存泄漏问题。 Lambda表达式、范围-based for循环等: 提升代码的简洁性和可读性。 同时,本书也将适当介绍一些游戏引擎背后的基本原理,让你了解现有的游戏引擎(如Unity、Unreal Engine)是如何工作的,这对于理解更高级的游戏开发技术至关重要。 5. 清晰的代码结构与设计模式: 优秀的游戏代码不仅需要能够运行,更需要易于维护和扩展。本书在编写代码时,注重清晰的代码结构、良好的命名规范以及常见的设计模式的应用,例如: 单例模式(Singleton): 用于全局管理器,如音频管理器、资源管理器。 组件模式(Component Pattern): 将游戏对象的行为分解为可复用的组件。 观察者模式(Observer Pattern): 实现事件驱动的交互,如玩家得分变化通知UI更新。 通过学习这些,你将能够写出更加健壮、易于管理的C++代码。 6. 工具链的介绍与配置: 掌握C++编程,离不开合适的开发工具。本书将引导你选择和配置常用的C++开发环境(如Visual Studio、Code::Blocks、CLion等),以及介绍常用的调试技巧,让你能够高效地编写、编译、运行和调试你的游戏代码。 7. 丰富的图示与表格: 为了更好地辅助理解,本书配有大量的图示和表格,直观地展示游戏数据的结构、算法的流程、设计模式的应用等,让抽象的概念变得具体易懂。 谁适合阅读本书? 零基础的编程爱好者: 即使你之前从未接触过C++,本书的入门章节也会帮助你快速掌握必要的语法知识。 想要跨入游戏开发领域的学生: 本书是学习游戏编程的绝佳起点,为你打开通往专业游戏开发的大门。 已经掌握基础C++但缺乏游戏开发经验的开发者: 本书将帮助你将C++的知识转化为游戏开发技能。 对游戏引擎的工作原理感兴趣的人: 通过本书的学习,你可以更深入地理解游戏引擎如何实现复杂的游戏功能。 学习本书,你将收获: 扎实的C++游戏编程基础: 掌握游戏开发的核心技术与常用算法。 独立开发小型游戏的信心: 能够从零开始构思、设计和实现自己的游戏。 解决游戏开发中实际问题的能力: 面对bug不再束手无策,能够运用所学知识进行调试与优化。 为进一步深入游戏开发领域打下坚实基础: 为学习更复杂的引擎、技术和游戏类型做好准备。 《C++游戏编程入门(第4版)》将是你开启游戏开发之旅最可靠的伙伴。我们鼓励你动手实践,享受创造的乐趣,用C++的力量将你的游戏创意变为现实!
这本《C++游戏编程入门(第4版)》是我在探索游戏开发领域时找到的宝藏。我一直对游戏背后的技术原理感到好奇,但编程方面我的基础相对薄弱,尤其是C++,对我来说是一个挑战。这本书的“入门”字样,让我觉得它或许能够化繁为简,让我这个新手也能顺利上手。我希望能在这本书里学到如何将C++的强大功能应用到游戏开发中,不仅仅是停留在理论层面,而是能看到具体的实践应用。我特别关注那些能够帮助我理解游戏核心机制的部分,比如如何构建游戏场景、如何实现角色控制,以及如何处理游戏中的各种事件。我希望这本书的讲解能够清晰易懂,避免过多的术语堆砌,让我能够一步步建立起对游戏编程的信心。如果书中能够提供一些从小项目开始,逐步深入的练习,让我能够亲手做出一些简单的游戏,那对我来说将是极大的激励。我期待通过这本书,能够真正打开游戏开发的大门。