资源大小: 5.61MB
发布时间: 2013-01-17
文件格式: pdf
下载次数: 6
分享到:

下载地址:

下载地址1
(本站为飞网专业下载站,域名:down.cfei.net)

资源简介:

中文名: C#游戏编程原名: C# Game Programming: For Serious Game Creation作者: Daniel Schuller资源格式: PDF版本: 文字版,英文原版出版社: Delmar Learning书号: 978-1435455566发行时间: 2010年地区: 美国语言: 英文简介: 内容简介:即使有经验的游戏开发学生有时也很难为一个伟大的游戏成为现实的设想。可用的编程语言,库数量,生产方式可以使开发过程中最复杂和不可靠的游戏的代码的结果。 C#中游戏程序设计:显示学生创作的严肃游戏的游戏程序员如何编写简单,清洁,可靠的代码循序渐进的方式,通过建立一个基本的游戏步骤。游戏是使用C#中,一个高层次的编程语言和OpenGL,为业界最喜爱的图形显示。学生们将获得一个方法and用来建立良好的游戏,学习如何使用这些库和create你的own,并最终建立您自己的滚动射击游戏库overview。他们甚至会找到如何开发自己的游戏的创意,你就会有一个良好的代码基础工作的提示和信息。 C#中游戏程序设计:为客户提供一个严肃游戏的创造的所有信息类大学生,他们需要采取from概念他们的游戏理念,以completion.Copyright ©里德Business信息,作为Reed Elsevier公司的表决保留所有权利。 - 这个文本是指印刷或无法版这个称号了。Editorial ReviewsProduct DescriptionEven experienced game developers sometimes have a hard time making their vision for a great game a reality. The number of available programming languages, libraries, and production methods can make the development process overwhelming and result in complicated, unreliable game code. C# Game Programming: For Serious Game Creation shows programmers how to write simple, clean, and reliable code step-by-step through the creation of a basic game. The game is built using C#, a high-level programming language, and OpenGL, an industry favorite for graphics display. You'll get an overview of the methods and libraries used to build good games, learn how to use those libraries and create your own, and finally build your own scrolling shooter game. You'll even find tips and information on how to develop your own game ideas and you'll have an excellent code base to work with. C# Game Programming: For Serious Game Creation provides you with all the information you need to take your game ideas from concept to completion. About the AuthorDaniel Schuller is a British-born computer game developer who has worked and lived in America, Singapore, Japan, and is currently working in the United Kingdom. He has released games on the PC as well as the Xbox 360 and PlayStation 3. He has developed games for Sony, Ubisoft, Naughty Dog, RedBull, and Wizards of the Coast, and maintains a game development website at http://www.godpatterns.com. In addition to developing computer games, Daniel also studies Japanese and is interested in Artificial Intelligence, cognition, and the use of games in education. 目录: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiiPART I BACKGROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Chapter 1 The History of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3C# Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Versions of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5C# 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Anonymous Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9C# 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Lambda Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Object Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Collection Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Local Variable Type Inference and Anonymous Types. . . . . . . . 13C# 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14Dynamic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Optional Parameters and Named Arguments. . . . . . . . . . . . . . . 15Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Chapter 2 Introducing OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Architecture of OpenGL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Vertices—The Building Blocks of 3D Graphics . . . . . . . . . . . . . . . . . . . 21The Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22OpenGL Is Changing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25WebGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25OpenGL and the Graphics Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Shaders—Programs on the Graphics Card . . . . . . . . . . . . . . . . . . . . . . . 27The Tao Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Chapter 3 Modern Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Pragmatic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Game Programming Traps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32KISS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32DRY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36Source Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Using Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Test Driven Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44Unit Testing in C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44PART II IMPLEMENTATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Chapter 4 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Introducing Visual Studio Express—A Free IDE for C# . . . . . . . . . . . . . . . 49A Quick Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Visual Studio Express Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Automatic Refactoring and Code Generation . . . . . . . . . . . . . . . . .53Renaming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Creating Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Separating Chunks of Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60Subversion, an Easy Source Control Solution . . . . . . . . . . . . . . . . . . . . . . 60Where to Get It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Creating the Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Adding to the Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Extending Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Tao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69NUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Using NUnit with a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Running Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75An Example Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Chapter 5 The Game Loop and Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . 81How Do Games Work? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81A Closer Look at the Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Implementing a Fast Game Loop in C# . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Adding High-Precision Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Full Screen Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Clearing the Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96Vertices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98Triangles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99Coloring and Spinning the Triangle . . . . . . . . . . . . . . . . . . . . . . . . .101Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Chapter 6 Game Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105The Basic Pattern of a Game Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Handling Game State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Game State Demo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Setting the Scene with Projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Form Size and OpenGL Viewport Size . . . . . . . . . . . . . . . . . . . . . . . . . 114Aspect Ratio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116The Projection Matrix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172D Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Positioning the Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Managing Textures with DevIl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Textured Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Alpha Blending Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Color Modulating Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136A Sprite and Renderer Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Using the Sprite Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143viii ContentsChapter 7 Rendering Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Font Textures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Font Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Parsing the Font Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Using the CharacterData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Rendering Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Calculating the FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155V-Sync and Frame-Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Refining the Text Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Faster Rendering with glDrawArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Modifying the Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Profiling the Batch Draw Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Chapter 8 Game Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Plotting a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Trigonometric Functions for Special Effects . . . . . . . . . . . . . . . . . . . . 176Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179What Is a Vector? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179The Length Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Vector Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Vector Addition, Subtraction, and Multiplication . . . . . . . . . . . . . . . 184Normal Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187The Dot Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191The Cross-Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Finishing Touches to the Vector Structure. . . . . . . . . . . . . . . . . . . . . . 196Two-Dimensional Intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Tweens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206An Overview of Tweening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206The Tween Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Using Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213What Is a Matrix? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214The Identity Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Matrix-Matrix and Vector-Matrix Multiplication . . . . . . . . . . . . . . . . 217Chapter 7 Rendering Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Font Textures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Font Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Parsing the Font Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Using the CharacterData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Rendering Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Calculating the FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155V-Sync and Frame-Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Refining the Text Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Faster Rendering with glDrawArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Modifying the Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Profiling the Batch Draw Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Chapter 8 Game Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Plotting a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Trigonometric Functions for Special Effects . . . . . . . . . . . . . . . . . . . . 176Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179What Is a Vector? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179The Length Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Vector Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Vector Addition, Subtraction, and Multiplication . . . . . . . . . . . . . . . 184Normal Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187The Dot Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191The Cross-Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Finishing Touches to the Vector Structure. . . . . . . . . . . . . . . . . . . . . . 196Two-Dimensional Intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Tweens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206An Overview of Tweening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206The Tween Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Using Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213What Is a Matrix? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214The Identity Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Matrix-Matrix and Vector-Matrix Multiplication . . . . . . . . . . . . . . . . 217Translating and Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220Inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Matrix Operations on Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Modifying the Sprite to Use Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . 225Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Chapter 9 Making the Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229A New Game Engine Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Extending the Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Using the Game Engine in a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Multiple Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Adding Sound Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Creating Sound Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Developing a SoundManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Improving Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Wrapping Game Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Adding Better Mouse Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Adding Keyboard Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Chapter 10 A Simple Side-Scrolling Shooting Game. . . . . . . . . . . . . . . . . 289A Simple Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289The First Implementation Pass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290The Start Menu State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294The Inner Game State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308The Game Over State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311Developing the Inner Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Moving the Player Character. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315Faking Movement with a Scrolling Background. . . . . . . . . . . . . . . . . 320Adding Some Simple Enemies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Introducing Simple Weapons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Damage and Explosions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Managing Explosions and Enemies . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Level Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359Enemy Movement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Enemy Attacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375Continuing Iterations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380


飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。