前 言 好莱坞能带来最好视觉效果、声乐效果以及纯粹的兴奋,顶级的计算机游戏也完全可以与其媲美。但是游戏这种娱乐方式与其他方式不同,它们能让玩家一连好几个小时守在屏幕跟前。能让游戏如此与众不同并且引人入胜的原因在于交互性。在计算机游戏中,我们不是坐下来观看主人公如何与怪物搏斗,而是自己担任主角。 实现这种交互性的关键在于编程。编程让外星生物、外星人进攻中队或整支敌人军队在不同情况下对玩家做出不同的反应。编程让游戏的故事情节能够以新的方式展开。实际上,作为编程的结果,游戏可能以编写者想象不到的方式与玩家进行交互。 尽管有数以千计的计算机编程语言,但是C++是游戏行业的标准语言。如果去您最喜爱的商场的PC游戏区逛逛,并随手拿起一款游戏,它主要或完全用C++编写的可能性非常大。如果想要更加专业地编写计算机游戏,就必须了解C++。 本书的目的在于从游戏编程的角度介绍C++语言。尽管没有哪本书可以让人同时掌握C++与游戏编程这两门高深的主题,但是本书可以作为这两个主题的入门。 本书读者对象 本书适合任何想编写游戏的读者,主要针对初学者,并假设读者之前没有任何编程经验。如果您可以熟练使用计算机,则马上可以开始您的游戏编程之旅。虽然本书是写给初学者的,但并不代表学习C++与游戏编程很简单。您必须阅读本书,并在实验中实践。读完本书,您将为掌握C++这门游戏编程语言打下坚实的基础。 本书组织方式 本书从C++与游戏编程的基础开始,假设读者对两者都没有经验。随着章节的推进,本书将在已学内容的基础上介绍更高级的内容。 本书的每一章介绍一个或几个相关主题。在介绍概念的同时会给出长度较短并且与游戏相关的程序来进行演示。每章的结尾会在一个游戏项目中将一些最重要的概念组合起来。本书最后一章以一个最具雄心的项目来结束,它涵盖了本书介绍过的所有主要概念。 除了介绍C++与游戏编程之外,本书还介绍如何组织编程工作,如何将问题分解为可管理的子问题块,以及如何精炼代码。您有时会遇到一些困难,但总是可以克服。总体而言,学习过程是充满乐趣的。在学习过程中,您将创建一些极妙的计算机游戏,并理解一些游戏编程的技巧。 第1章:类型、变量与标准I/O:Lost Fortune。本章将介绍游戏行业标准语言C++的基础,以及如何在控制台窗口显示输出、执行算术计算、使用变量以及从键盘获取用户输入。 第2章:真值、分支与游戏循环:Guess My Number。通过编程让程序根据某种条件执行、跳转以及重复执行代码块,您将创建一些更加有趣的游戏。本章将介绍如何生成随机数来增加游戏的不可预测性,还将介绍游戏循环——组织游戏不断运行的基本方式。 第3章:for循环、字符串与数组:Word Jumble。本章将介绍序列与字符串(非常适合单词游戏的字符序列),以及软件对象(用于表示游戏中对象的实体,譬如外星飞行器、生命药水甚至玩家自身)。 第4章:标准模板库:Hangman。本章将介绍一个功能强大的库(游戏程序员甚至非游戏程序员依赖它来存储对象的集合,譬如玩家物品栏中的物品),还有协助程序员规划更大型游戏程序的技术。 第5章:函数:Mad Lib。本章将介绍如何将游戏程序分解为更小的、可管理的代码块。分解方法是使用游戏程序中的基本逻辑单元:函数。 第6章:引用:Tic-Tac-Toe。本章将介绍如何在程序的不同部分使用高效与清晰的方式共享信息,一个简单的AI(人工智能)例子,以及为计算机对手赋予一些人格的方法。 第7章:指针:Tic-Tac-Toe 2.0。本章将介绍C++的一些最底层与最强大的特征,如直接对计算机内存进行寻址与操作的方法。 第8章:类:Critter Caretaker。本章将介绍如何创建自定义类型的对象,以及如何通过面向对象编程来定义对象之间的交互方式。在学习过程中,您将创建要照顾的自己的动物。 第9章:高级类与动态内存:Game Lobby。本章将介绍如何扩展与计算机之间直接的连接,以及按照游戏程序需求获取与释放内存的方法,还有使用“动态”内存的隐患与避免方法。 第10章:继承与多态:Blackjack。本章将介绍根据其他对象来定义新对象的方法,随后将所有学过的知识融汇到一个大型游戏中。通过创建经典的赌博游戏Blackjack,我们将介绍大型项目的设计与实现方法。 本书约定 本书采用了如下约定: 提示 这部分内容给出一些好的建议,帮助您成为更好的游戏程序员。 陷阱 这部分内容指出容易犯错的地方。 技巧 这部分内容给出一些技巧,可以让游戏编程更简单。 现实世界 这部分内容是一些关于游戏编程的真实情况。 本书程序的源代码 本书的所有源代码都可以从或http://www.tupwk.com.cn/downpage上下载到。您可以通过检索本书的ISBN来获得相关源代码。 关于编译器 现在讨论编译器或许为时过早,但编译器很重要,因为是它们将编写的源代码翻译成计算机可以运行的程序。如果使用的是Windows操作系统,建议使用Microsoft的Visual C++ 2010 Express Edition,因为它包含了一个现代编译器,并且是免费的。软件安装好之后,请查看本书的附录A,其中介绍了使用Visual C++ 2010 Express Edition编译C++程序的方法。如果您使用其他的编译器或IDE,请查阅其文档。