C#游戏编程
文件大小: 5746k
源码售价: 10 个金币 积分规则     积分充值
资源说明:中文名: 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 Reviews Product Description Even 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 Author Daniel 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xii PART I BACKGROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Chapter 1 The History of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 C# Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Versions of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 C# 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Anonymous Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 C# 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Lambda Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Object Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Collection Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Local Variable Type Inference and Anonymous Types. . . . . . . . 13 C# 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Dynamic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Optional Parameters and Named Arguments. . . . . . . . . . . . . . . 15 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Chapter 2 Introducing OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Architecture of OpenGL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Vertices—The Building Blocks of 3D Graphics . . . . . . . . . . . . . . . . . . . 21 The Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 OpenGL Is Changing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 WebGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 OpenGL and the Graphics Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Shaders—Programs on the Graphics Card . . . . . . . . . . . . . . . . . . . . . . . 27 The Tao Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Chapter 3 Modern Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Pragmatic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Game Programming Traps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 KISS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 DRY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Source Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Using Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Test Driven Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Unit Testing in C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 PART II IMPLEMENTATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Chapter 4 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Introducing Visual Studio Express—A Free IDE for C# . . . . . . . . . . . . . . . 49 A Quick Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Visual Studio Express Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Automatic Refactoring and Code Generation . . . . . . . . . . . . . . . . .53 Renaming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Creating Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Separating Chunks of Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Subversion, an Easy Source Control Solution . . . . . . . . . . . . . . . . . . . . . . 60 Where to Get It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Creating the Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Adding to the Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Extending Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Tao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 NUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Using NUnit with a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Running Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 An Example Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Chapter 5 The Game Loop and Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . 81 How Do Games Work? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A Closer Look at the Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Implementing a Fast Game Loop in C# . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Adding High-Precision Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Full Screen Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Clearing the Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 Vertices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 Triangles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 Coloring and Spinning the Triangle . . . . . . . . . . . . . . . . . . . . . . . . .101 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Chapter 6 Game Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 The Basic Pattern of a Game Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Handling Game State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Game State Demo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Setting the Scene with Projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Form Size and OpenGL Viewport Size . . . . . . . . . . . . . . . . . . . . . . . . . 114 Aspect Ratio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 The Projection Matrix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 2D Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Positioning the Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Managing Textures with DevIl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Textured Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Alpha Blending Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Color Modulating Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 A Sprite and Renderer Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Using the Sprite Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 viii Contents Chapter 7 Rendering Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Font Textures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Font Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Parsing the Font Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Using the CharacterData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Rendering Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Calculating the FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 V-Sync and Frame-Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Refining the Text Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Faster Rendering with glDrawArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Modifying the Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Profiling the Batch Draw Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Chapter 8 Game Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Plotting a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Trigonometric Functions for Special Effects . . . . . . . . . . . . . . . . . . . . 176 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 What Is a Vector? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 The Length Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Vector Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Vector Addition, Subtraction, and Multiplication . . . . . . . . . . . . . . . 184 Normal Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 The Dot Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 The Cross-Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Finishing Touches to the Vector Structure. . . . . . . . . . . . . . . . . . . . . . 196 Two-Dimensional Intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Tweens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 An Overview of Tweening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 The Tween Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Using Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 What Is a Matrix? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 The Identity Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Matrix-Matrix and Vector-Matrix Multiplication . . . . . . . . . . . . . . . . 217 Chapter 7 Rendering Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Font Textures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Font Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Parsing the Font Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Using the CharacterData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Rendering Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Calculating the FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 V-Sync and Frame-Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Refining the Text Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Faster Rendering with glDrawArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Modifying the Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Profiling the Batch Draw Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Chapter 8 Game Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Plotting a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Trigonometric Functions for Special Effects . . . . . . . . . . . . . . . . . . . . 176 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 What Is a Vector? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 The Length Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Vector Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Vector Addition, Subtraction, and Multiplication . . . . . . . . . . . . . . . 184 Normal Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 The Dot Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 The Cross-Product Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Finishing Touches to the Vector Structure. . . . . . . . . . . . . . . . . . . . . . 196 Two-Dimensional Intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Tweens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 An Overview of Tweening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 The Tween Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Using Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 What Is a Matrix? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 The Identity Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Matrix-Matrix and Vector-Matrix Multiplication . . . . . . . . . . . . . . . . 217 Translating and Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Matrix Operations on Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Modifying the Sprite to Use Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . 225 Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Chapter 9 Making the Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 A New Game Engine Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Extending the Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Using the Game Engine in a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Multiple Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Adding Sound Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Creating Sound Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Developing a SoundManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Improving Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Wrapping Game Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Adding Better Mouse Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Adding Keyboard Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Chapter 10 A Simple Side-Scrolling Shooting Game. . . . . . . . . . . . . . . . . 289 A Simple Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 The First Implementation Pass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 The Start Menu State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 The Inner Game State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 The Game Over State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Developing the Inner Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Moving the Player Character. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Faking Movement with a Scrolling Background. . . . . . . . . . . . . . . . . 320 Adding Some Simple Enemies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Introducing Simple Weapons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Damage and Explosions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Managing Explosions and Enemies . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Level Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Enemy Movement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Enemy Attacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Continuing Iterations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。