第2章:创建你的第一个游戏Pong
概览
这个章节讨论了设计和创建一个简单的Pong游戏。Pong曾经是第一个视频游戏,甚至在六十年代第一批Pong版本出现以前,就有一个能在示波镜oscilloscope上玩(2人网球,William A. Higinbotham,1958)的版本。这说明了实现一个基础版本的Pong有多么容易。一个叫做Ralph Baer 的TV工程师声称甚至早在1951年他就有实现Pong的想法,但是直到1966年他才出示了第一个原型。Atari在80年代得到Pong的授权许可,并且和另一个公司打了一场官司,该公司声明他们是第一个发明Pong的。如果你今天听到是为了这么简单的一个游戏而打官司简直是疯了。你能在www.pong-story.com,阅读到完整的Pong的故事。
实现一个非常简单的Pong的克隆不会花太多的时间,不过你也得学习本章关于XNA的Sprite相关类。你将从写游戏构思开始,然后经历一个完整的游戏项目设计阶段。在将来的工程项目中,你可以有同样的选择,不久之后,您再先不必首先撰写游戏构思的过程,因为在做第一次单元测试的时候您就已经能很自然地产生这些想法了。然后,您将学习一种有效的方法来管理和使用游戏的纹理,并修改调整您的游戏,让它更加有趣,加入双人对战的支持,甚至在Xbox 360控制台上测试。
虽然本章聚焦在Pong游戏,但这并不是您将要唯一学习的,Pong游戏更多的是用来学习我将在本章稍后提及的“敏捷方法学(Agile Methodology)”的。您将学习为什么首先写单元测试很重要,并且预先设计游戏,然后再一步一步地改进它。在接下来的几章中您也将针对其他的一些类来使用单元测试。对于这个游戏,您只需要一个简单的类,然后在末尾添加几个单元测试来测试绘图、碰撞和正确地定位每一样东西。
这一章使用的单元测试的种类归诸于静态单元测试(static unit tests),相应的在下一章中您将学习动态单元测试(dynamic unit tests)。其区别在于您要手动启动静态单元测试,并且要亲自根据屏幕的输出结果来检查是否正确。动态单元测试则是在一个单元测试框架,比如NUnit的帮助下自动执行。更多有关单元测试框架(Unit Testing Framework)的细节,参阅第三章。