首先,需要定义几个变量: SoftwareSerial mySerial(7, 8); // RX, TX int stepPin = 9; int dirPin = 10; 其中,mySerial是用于串口通信的对象,使用SoftwareSerial库来定义它的RX和TX引脚;stepPin和dirPin是控制步进电机的引脚。 在setup()函数中,需要初始化一些东西: void setup() { mySerial.begin(9600); pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); } 这里,通过调用begin()函数初始化串口通信,并使用pinMode()函数将stepPin和dirPin定义为输出引脚。 在loop()函数中,需要不断地接收串口传来的语音指令,并根据指令控制步进电机的运动: void loop() { if (mySerial.available() > 0) { String voiceCmd = mySerial.readStringUntil(' '); if (voiceCmd == "forward") { digitalWrite(dirPin, HIGH); for (int i = 0; i < 1600; i++) { digitalWrite(stepPin, HIGH); delayMicroseconds(500); digitalWrite(stepPin, LOW); delayMicroseconds(500); } } else if (voiceCmd == "backward") { digitalWrite(dirPin, LOW); for (int i = 0; i < 1600; i++) { digitalWrite(stepPin, HIGH); delayMicroseconds(500); digitalWrite(stepPin, LOW); delayMicroseconds(500); }} }}
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! ...................................................................................... 26k%V Java Game Programming For Dummies 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 ........................................................................................ 62Table of Contents 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 ............................................................................ 105Java Game Programming for Dummies 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 .............................. 171Table of Contents Chapter 8: 2-D Sprite Maze....................................................................... 173 Gentleman, Start Your Sprite Engines! ......................................................... 174 Implementing 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 Improving 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 Implementing 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 ................................................................................................. 223k(jj%% Java Game Programming For Dummies 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 Implementing 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 ................................................................. 274Table of Contents 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 ........................... 314X'X+ Java Game Programming For Dummies 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 ................................................................... 339Table of Contents O` 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 Book Registration Information ...................... Back of Bo