资源说明:中文名: 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
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。