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

2 comments:

  1. 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.

    ReplyDelete
  2. Thanks for the review Thomas. Very useful

    ReplyDelete

Related Posts with Thumbnails

Put Your Ads Here!