In this blog, 25.000 books will be uploaded, so far more than 1400 books are available. Books, will be added daily, please check this blog daily.
Tuesday, September 28, 2010
Java Game Programming For Dummies
Introduction ................................................................. 1
About This Book .................................................................................................. 1
Who You Are......................................................................................................... 1
About the Java Code in This Book .................................................................... 2
How This Book Is Organized .............................................................................. 2
Part I: Steppin' Out .................................................................................... 2
Part II: Up to Speed .................................................................................... 2
Part III: Seven League Boots ..................................................................... 3
Part IV: The Part of Tens ........................................................................... 3
Appendix: About the CD-ROM ................................................................. 3
CD Chapters: Fundamentals ..................................................................... 3
Icons Used in This Book ..................................................................................... 4
Part l: Steppin' Out....................................................... 5
Chapter 1: Follow the Bouncing Ball.......................................................... 7
Ticking Off the Time ............................................................................................ 7
Making Things Move ........................................................................................... 9
Floating the point....................................................................................... 9
Encapsulating the essence of a ball ........................................................ 9
Setting Bounds ................................................................................................... 10
Moving out of bounds ............................................................................. 11
Bouncing back .......................................................................................... 11
Coding movement and bounce .............................................................. 11
Settin' things in motion........................................................................... 13
Drawing the Details ........................................................................................... 14
Drawing offscreen .................................................................................... 15
Overriding the flicker .............................................................................. 15
Drawing the background and the ball .................................................. 16
Putting.the action on the screen ........................................................... 16
Chapter 2: Ponglet........................................................................................ 17
Setting State ....................................................................................................... 17
Breaking down the task .......................................................................... 18
Serving the ball ........................................................................................ 20
Up Java Creek without a Paddle ...................................................................... 22
Returning the serve ................................................................................. 23
Changing state.......................................................................................... 24
Creating a computer opponent.............................................................. 24
Rolling down the gutter .......................................................................... 25
He shoots, he scores! .............................................................................. 26
We have a winna! ...................................................................................... 26
Tracking User Input........................................................................................... 27
Entering the control zone ....................................................................... 27
Tracking the mouse ................................................................................. 27
Displaying the State .......................................................................................... 28
Keeping score ........................................................................................... 29
Game over? ............................................................................................... 29
Chapter 3: Hole In One................................................................................. 31
Modeling the Deceleration of a Ball................................................................ 32
Using vectors............................................................................................ 32
Creating a vector class ............................................................................ 35
Starting from a Circle ........................................................................................ 36
Creating the C i r c 1 e class ...................................................................... 37
Building a B a 1 1 by extending C i r c 1 e .................................................. 37
Decelerating the ball ............................................................................... 38
Moving the ball ........................................................................................ 39
Staying in bounds .................................................................................... 39
Putting the ball ......................................................................................... 40
Selecting the ball ................................................................................. 40
Executing the putt .............................................................................. 41
Waiting for the ball to go in ............................................................... 41
Drawing the ball ....................................................................................... 41
Digging a Hole .................................................................................................... 42
Gravitating toward the center ............................................................... 43
Vectoring in............................................................................................... 44
Curving around the hole ......................................................................... 44
Coding the curve ..................................................................................... 46
Pushing to the center ......................................................................... 46
Sinking the putt ................................................................................... 47
Spinning in the hole ............................................................................ 47
Coding the H o 1 e I n 0 n e Applet ......................................................................... 48
Completing the putting interface .......................................................... 48
Drawing the green .................................................................................... 49
Chapter 4: JavaPool ..................................................................................... 51
Calculating Ball-to-Ball Collisions ................................................................... 52
Passing in the night ................................................................................. 52
Reducing the distance............................................................................. 52
Calculating position over time............................................................... 53
Calculating the distance to a collision ................................................. 54
Solving for time ........................................................................................ 56
Two solutions? .................................................................................... 56
Rearrange the equation ..................................................................... 57
The complete set of equations (all you really need) ..................... 59
Timing and order ..................................................................................... 60
Checking the combinations .................................................................... 61
Bouncing Off the Bumpers ............................................................................... 61
Coding the Collisions ........................................................................................ 62
Conserving Momentum .................................................................................... 63
Revisiting vectors .................................................................................... 64
What if both balls are moving? ......................................................... 66
The dot product .................................................................................. 66
The c o 1 1 i d e ( ) method ............................................................... 67
collide( ) dissected .................................................................... 67
Putting All the Pieces Together ....................................................................... 68
Part ll: Up to Speed .................................................... 71
Chapter 5: Sliding Blocks Brain Teaser................................................... 73
Using Images in Games ..................................................................................... 74
Digital Stamp Pads ............................................................................................ 75
Drawing while downloading ................................................................... 77
Loading images with Medi aTracker .................................................... 77
MediaTracker.addImage() ...........................................................78
MediaTracker.waitForAll().......................................................78
Loading multiple images .................................................................... 79
Laying Out the Game Board ............................................................................. 79
Reading the width and height of an I m a g e .......................................... 81
Initializing gri dX, gri dY, pi eceWi dth, and pi eceHei ght ..............81
Crafting the Puzzle ............................................................................................ 82
Making puzzle pieces that act like real puzzle pieces ........................ 82
Putting the pieces together .................................................................... 83
Mousing the Pieces Around ............................................................................. 85
Selecting a puzzle piece .......................................................................... 85
Moving the pieces .................................................................................... 86
Slide( ) ing around ................................................................................. 87
Checking for pieces that block the slide path with
Rectangl e. i ntersects ( ) ..........................................................87
Checking for the board boundaries Re c t a n g 1 e. u n i o n ( ) and
Rectangl e. equal s ( ) ..................................................................88
Cleaning up after a move ........................................................................ 89
Drawing the Board ............................................................................................ 90
Declaring the Puzzle Solved and Congratulating the Winner ..................... 91
Chapter 6: Blackjack ................................................................................... 93
Understanding the Blackjack Game ................................................................ 93
Playing Blackjack ..................................................................................... 94
Designing the game ................................................................................. 95
Creating a Reusable Deck of Cards ................................................................. 96
Shuffling and dealing the deck............................................................... 97
Building the C a r d class ........................................................................... 99
Converting cards to strings ............................................................. 102
Extracting card graphics from a composite image ...................... 103
Customizing the deck ............................................................................ 105
Creating a User Interface with Components ............................................... 106
Using buttons ......................................................................................... 106
Creating and placing buttons .......................................................... 107
Having your game respond to buttons .......................................... 108
Reading and displaying text ................................................................. 108
Displaying status and scores with labels ...................................... 109
Getting a few words from the user ................................................. 109
Creating scrolling text areas ........................................................... 110
Using C a n v a s to create new components .......................................... 112
Customizing your game's appearance with I mageButton......... 112
Displaying a hand of cards .............................................................. 114
Arranging the User Interface ......................................................................... 117
Positioning components with a LayoutManager ............................. 118
FlowLayout ........................................................................................ 119
BorderLayout ..................................................................................... 119
GridLayout ......................................................................................... 120
Your own LayoutManager................................................................ 120
Dividing the screen with panels .......................................................... 123
Laying out a game of Blackjack ........................................................... 124
The top-level applet.......................................................................... 124
The HTML that loads the applet..................................................... 130
The players ........................................................................................ 131
The players' hands ........................................................................... 134
Chapter 7: 2-D Maze................................................................................... 137
Creating the Maze Class.................................................................................. 138
The Bl ockMaze subclass...................................................................... 139
The WaI 1 Maze subclass........................................................................ 140
Generating a Maze ........................................................................................... 142
Selecting an algorithm .......................................................................... 142
Adding to the Maze class ...................................................................... 144
Generating a wall maze ......................................................................... 145
Generating a block maze ...................................................................... 149
Solving Mazes................................................................................................... 156
Representing the solution .................................................................... 156
Keeping your left hand on the wall ..................................................... 157
Using breadth-first searching to find the shortest path .................. 159
Displaying a 2-D Maze ..................................................................................... 163
Using the p a i n t ( ) method ................................................................. 164
Repainting the maze in a thread-friendly manner ............................ 165
Calculating where the pixels go........................................................... 166
Knowing that block mazes are simple is half the battle .................. 167
Displaying a wall maze .......................................................................... 167
Displaying a solution ............................................................................. 169
Putting the maze on the screen ..................................................................... 170
Using a thread to animate, generate, and solve a maze................... 170
Reviewing parameters in the Maze App I et class .............................. 171
Chapter 8: 2-D Sprite Maze....................................................................... 173
Gentleman, Start Your Sprite Engines! ......................................................... 174
I mplementing a sprite ........................................................................... 174
Putting sprites in their place ............................................................... 176
Moving sprites around the play field .................................................. 178
Resolving collisions ............................................................................... 179
Displaying sprites .................................................................................. 180
Animating sprites................................................................................... 181
A Sprite Framework......................................................................................... 183
The Spri teEngi ne class ..................................................................... 184
Keeping track of all the sprites ....................................................... 188
Drawing sprites layer by layer ........................................................ 189
Moving sprites and detecting collisions ....................................... 190
I mproving the accuracy of collision detection ........................ 190
Selecting a movement frame rate .............................................. 192
The BackgroundSpri teEngi ne class ............................................... 194
Sprite events and handling them ........................................................ 194
Sprite control ......................................................................................... 195
Computer Adversaries .................................................................................... 197
Using random intelligence to make adversaries smarter ................ 197
Using a breadth-first search for adversary navigation .................... 198
Prioritizing adversary goals ................................................................. 198
The Sprite Maze Game .................................................................................... 200
I mplementing a cast of sprites ............................................................ 201
Running into a wall ........................................................................... 202
Animating maze runners .................................................................. 202
Animating an adversary who shoots to kill .................................. 204
Whizzing bullets ................................................................................ 205
Building on the B 1 o c k M a z e class ........................................................ 206
Initializing the game ......................................................................... 210
Overriding drawSquare( ) ..............................................................210
Giving the player control ................................................................. 211
Keeping things moving..................................................................... 211
Chasing the player ............................................................................ 212
Finalizing the Sprite Maze applet ........................................................ 212
Part Ill: Seven League Boots...................................... 215
Chapter 9: Modeling the Real World ...................................................... 217
Making Things Happen at the Right Time with a Timeline ....................... 217
A heap of events .................................................................................... 218
Adding events to the timeline.............................................................. 219
Processing events in order................................................................... 221
Changing the future: Removing events before they happen ........... 222
Removing events ............................................................................... 222
Searching the timeline ..................................................................... 222
Playing Sounds ................................................................................................. 223
Matching Animations to Game Events with Scripts ................................... 224
Interfacing the programmer and the artist ........................................ 225
Writing a script....................................................................................... 225
Reading scripts from text files ............................................................. 227
Looping an animation ........................................................................... 228
Adding random behavior...................................................................... 228
Adding special effects and other goodies .......................................... 230
Understanding the code ....................................................................... 231
Organizing scripts by action ........................................................... 231
Filling a script with frames .............................................................. 233
I mplementing an A n i m F r a m e .......................................................... 238
SoundFrame ..................................................................................238
BranchFrame................................................................................239
Putting the code to work: The S c r i p t S p r i t e class ................... 240
Chapter 10: 3-D Polygon Maze ................................................................. 243
Moving into Three Dimensions ..................................................................... 243
Calculating perspective ........................................................................ 243
Calculating the height of a wall ...................................................... 247
Finding the x-axis intersection........................................................ 247
Expanding the grid into 3 dimensions ........................................... 247
Sizing up the screen ......................................................................... 247
Drawing the Maze .................................................................................. 248
The painter's algorithm ................................................................... 248
Draw from the outside in ................................................................. 248
Deeper is wider ................................................................................. 249
Creating a Rat's-Eye View ............................................................................... 250
Writing G r i d V i ew .................................................................................. 250
Coding M a z eMa p ..................................................................................... 252
Coding PolyMaze...................................................................................253
Adding Shading, Light Effects, and a Reason to Solve the Maze .............. 255
Updating MazeMap .................................................................................257
Updating Po l yM a z e ............................................................................... 258
Running a Random Maze ................................................................................ 259
Extending from Bl ockMaze..................................................................259
Sizing the maze in your HTML ............................................................. 260
Chapter 11: Texture-Mapped 3-D Maze ................................................. 263
Mapping Some Texture ................................................................................... 263
Scaling Images .................................................................................................. 264
Tiling Textures ................................................................................................. 268
Texture Mapping a 3-D Maze.......................................................................... 269
Introducing Mr. Bresenham .................................................................. 270
Experimenting with Bresenham .......................................................... 271
Extending a TexVi ew class from Gri dVi ew....................................... 273
Loading textures ............................................................................... 273
Overriding d rawSq ( ) ....................................................................... 273
Alternating wall textures ................................................................. 274
Drawing front walls ............................................................................... 275
Calculating the front wall's texture offset ..................................... 275
Creating the front wall image .......................................................... 276
Clipping to the view.......................................................................... 276
Slicing a column of texture .............................................................. 277
Drawing side walls ................................................................................. 278
Calculating the side wall's texture offset ...................................... 279
Tracing the side-wall edges ............................................................. 280
Masking the side walls ..................................................................... 280
Darkening the walls ............................................................................... 280
Computing a darkened color table................................................. 280
Shading the walls .............................................................................. 281
Shading the side walls ...................................................................... 282
Assembling the Pieces .................................................................................... 283
Chapter 12: Advanced Imaging ................................................................ 285
Drawing Partially Transparent Images ......................................................... 286
Creating new images with Memo ry I ma geSou rce .............................. 286
Coding an Al phaGradi ent ..................................................................287
Blending the edges of images with alpha masking ........................... 289
Creating alpha information from a GIF image ............................... 289
Using Pi xel Grabber .......................................................................290
Antialiasing in Java.......................................................................................... 293
Rendering to subpixels ......................................................................... 293
Reading from offscreen images ........................................................... 294
Shrinking text ......................................................................................... 296
Drawing Direct ................................................................................................. 297
The ImageProducer interface ............................................................298
Coding an ImageProducer ..................................................................298
Dancingthe ImageProducer tango .................................................... 299
Demoing Di rectImage.........................................................................301
Modifying GIF Images ...................................................................................... 304
Getting at the raw image data with the
ImageConsumer interface.................................................................304
Recoloring a GIF Image ......................................................................... 307
Part I U: The Part o f Tens............................................ 309
Chapter 13: Ten Secrets for Making Fun Games .................................. 311
Knowing What Players Want .......................................................................... 311
Understanding What Makes a Game Addictive ........................................... 312
Start Easy and Then Increase Difficulty ....................................................... 312
Making It Easy to "Step In.. ............................................................................. 313
Enhancing the Player's Suspension of Disbelief ......................................... 313
Making the Player Feel Smart ........................................................................ 314
What Did I Do Wrong? The Player Should Always Know ........................... 314
Cheating Spoils the Fun .................................................................................. 315
Your Friend, Mr. Random Number ................................................................ 315
Playtesting ........................................................................................................ 316
Chapter 14: Ten Ways to Say "Game Over'........................................... 317
Fading to Black ................................................................................................ 317
Rolling the Credits ........................................................................................... 318
Providing an Instant Replay ........................................................................... 318
Scoring and Points: the Competitive Obsession......................................... 319
Marking Levels of Achievement .................................................................... 319
Ranking One Player against Another ............................................................ 320
Reusing Game Code to Make an Ending Animation ................................... 320
Offering a Practice Round .............................................................................. 321
Losing Should Even Be Fun ............................................................................ 321
Thanking Players for an Enjoyable Game .................................................... 321
Chapter 15: Ten Ways to Optimize Your Java Code............................. 323
Code Profiling: Finding Where the Time Goes ............................................ 323
A Shifty Divide.................................................................................................. 324
Inline Methods with the Compiler ................................................................ 325
Do Once, Use Often ......................................................................................... 325
Faster Variables ............................................................................................... 326
A Faster Loop ................................................................................................... 327
Faster Methods ................................................................................................ 328
Reduce the Cost of Synchronizing ................................................................ 328
Beware of Large Array Initializers ................................................................. 329
The Fastest Way to Copy Arrays ................................................................... 330
Appendix: What's on the CD-ROM .......................................................... 331
System Requirements ..................................................................................... 331
Using the CD with Microsoft Windows 95 or NT 4.0 .................................. 332
Using the CD with Mac OS..............................................................................333
Getting to the Content .................................................................................... 333
Installing Programs ......................................................................................... 334
What You'll Find ............................................................................................... 335
The Java Development Kit.................................................................... 335
Microsoft Internet Explorer 4.0 ........................................................... 336
Adobe Acrobat Reader.......................................................................... 336
CD Bonus Chapters ............................................................................... 336
CD Chapter 1: An Applet a Day ....................................................... 336
CD Chapter 2: Using Threads .......................................................... 337
CD Chapter 3: Getting Savvy with Graphics ................................. 337
CD Chapter 4: Adding Color to Cool .............................................. 337
CD Chapter 5: User Input ................................................................. 337
Applets and More Applets .................................................................... 337
Chinese Checkers for Java ................................................................... 339
GoldWave 3.24 ........................................................................................ 339
SoundForge XP 4.Od Demo ................................................................... 339
SoundApp 2.4.4 ...................................................................................... 339
SoundI-lack 0.872 .................................................................................... 340
If You've Got Problems (Of the CD Kind) ..................................................... 340
Index ....................................................................... 341
javaTM Development Kit Version 1. 0. 2 (Mac OS)
1.1.5 (windows) Binary Code License ....................... 356
IDG Books Worldwide, Inc., End-User
License Agreement.................................................... 358
Installation Instructions ............................................ 360
Download
Another Game Programming
Another Java Books
Subscribe to:
Post Comments (Atom)
This was one of the first books I used to teach myself about game programming back in college. Now I work at a game programming firm and I love it. If you're looking to get into the field, this is a good place to start.
ReplyDeleteThanks for the review Thomas. Very useful
ReplyDelete