Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Action Scrip Game Programing
Nội dung xem thử
Mô tả chi tiết
Gary Rosenzweig
800 East 96th Street
Indianapolis, Indiana 46240 USA
ActionScript 3.0 Game
Programming University
Copyright © 2008 by Que Publishing
All rights reserved. No part of this book shall be reproduced, stored in a retrieval
system, or transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise, without written permission from the publisher. No patent liability is assumed with respect
to the use of the information contained herein. Although every precaution has been taken in the
preparation of this book, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information
contained herein.
ISBN-13: 978-0-7897-3702-1
ISBN-10: 0-7897-3702-7
Library of Congress Cataloging-in-Publication Data:
Rosenzweig, Gary.
ActionScript 3.0 game programming university / Gary Rosenzweig.
p. cm.
ISBN 0-7897-3702-7
1. Computer games—Programming. 2. Computer animation. 3. ActionScript
(Computer program language) I. Title.
QA76.76.C672R73 2007
794.8'1526—dc22
2007028659
Printed in the United States of America
First Printing: August 2007
Trademarks
All terms mentioned in this book that are known to be trademarks or service marks have been
appropriately capitalized. Que Publishing cannot attest to the accuracy of this information. Use of a
term in this book should not be regarded as affecting the validity of any trademark or service mark.
Warning and Disclaimer
Every effort has been made to make this book as complete and as accurate as possible, but no
warranty or fitness is implied. The information provided is on an “as is” basis. The author and
the publisher shall have neither liability nor responsibility to any person or entity with respect to
any loss or damages arising from the information contained in this book or from the use of
programs accompanying it.
Bulk Sales
Que Publishing offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales. For more information, please contact
U.S. Corporate and Government Sales
1-800-382-3419
For sales outside of the U.S., please contact
International Sales
Associate Publisher
Greg Wiegand
Acquisitions Editor
Laura Norman
Development Editor
Laura Norman
Managing Editor
Gina Kanouse
Project Editor
Anne Goebel
Copy Editor
Keith Cline
Senior Indexer
Cheryl Lenser
Proofreader
Heather Waye Arle
Technical Editor
Cheryl Brumbaugh-Duncan
Publishing Coordinator
Cindy Teeters
Book Designer
Anne Jones
Senior Compositor
Gloria Schurick
Graphics
William Follett
Eve Park
Contents at a Glance
Introduction
1. Using Flash and ActionScript 3.0
2. ActionScript Game Elements
3. Basic Game Framework: A Matching Game
4. Brain Games: Memory and Deduction
5. Game Animation: Shooting and Bouncing Games
6. Picture Puzzles: Sliding and Jigsaw
7. Direction and Movement: Space Rocks
8. Casual Games: Match Three
9. Word Games: Hangman and Word Search
10. Questions and Answers: Trivia and Quiz Games
11. Action Games: Platform Games
12. Game Worlds: Driving and Exploration Game
Index
Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Flash and Game Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
Who Is This Book For? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
What Do You Need To Use This Book? . . . . . . . . . . . . . . . . . . . . . .3
Prerequisite Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
Software Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
Source Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
Using the Example Games in Your Projects . . . . . . . . . . . . . . . . . . . .4
What You’ll Find in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
The FlashGameU.com Website . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
1. Using Flash and ActionScript 3.0 . . . . . . . . . . . . . . . . . . . .7
What Is ActionScript 3.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Creating a Simple ActionScript Program . . . . . . . . . . . . . . . . . . . . . .9
A Simple Use of trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Creating Screen Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Our First ActionScript 3.0 Class . . . . . . . . . . . . . . . . . . . . . . . . .13
Working with Flash CS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
Display Objects and Display Lists . . . . . . . . . . . . . . . . . . . . . . . .16
The Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
The Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
The Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Writing and Editing ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . .19
ActionScript Game Programming Strategies . . . . . . . . . . . . . . . . . .22
Single Class Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Smallest Step Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Good Programming Practices . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Basic ActionScript Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Creating and Using Variables . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Condition Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Testing and Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Types of Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Methods of Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
Using the Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Publishing Your Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
ActionScript Game Programming Checklist . . . . . . . . . . . . . . . . . . .36
Publishing and Document Settings . . . . . . . . . . . . . . . . . . . . . . .36
Class, Function, and Variable Names . . . . . . . . . . . . . . . . . . . . .37
Runtime Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Testing Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
2. ActionScript Game Elements . . . . . . . . . . . . . . . . . . . . . . .41
Creating Visual Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
Using Movie Clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
Making Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Drawing Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Drawing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Creating Linked Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Creating Sprite Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
Setting Sprite Depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Accepting Player Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Mouse Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Keyboard Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Text Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
Creating Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Sprite Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Using Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Time-Based Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Physics-Based Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Programming User Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Moving Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Dragging Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
Collision Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Accessing External Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
External Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Loading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Saving Local Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Miscellaneous Game Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Custom Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Playing Sounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Loading Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Contents v
vi ActionScript 3.0 Game Programming University
Shuffling an Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
Displaying a Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
System Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Game Theft and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
3. Basic Game Framework: A Matching Game . . . . . . . . . . . .83
Placing Interactive Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Methods for Creating Game Pieces . . . . . . . . . . . . . . . . . . . . . . .85
Setting Up the Flash Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
Creating the Basic ActionScript Class . . . . . . . . . . . . . . . . . . . . .87
Using Constants for Better Coding . . . . . . . . . . . . . . . . . . . . . . .90
Shuffling and Assigning Cards . . . . . . . . . . . . . . . . . . . . . . . . . .92
Game Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Adding Keyboard Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Setting Up Game Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Checking for Game Over . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
Encapsulating the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Creating the Game Movie Clip . . . . . . . . . . . . . . . . . . . . . . . . .103
Adding an Introduction Screen . . . . . . . . . . . . . . . . . . . . . . . . .104
Adding a Play Again Button . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Adding Scoring and a Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Adding Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Adding a Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Displaying Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Displaying Score and Time after the Game Is Over . . . . . . . . . .112
Adding Game Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Animated Card Flips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Limited Card-Viewing Time . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Sound Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
4. Brain Games: Memory and Deduction . . . . . . . . . . . . . . .121
Arrays and Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
Arrays of Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Memory Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Preparing the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Programming Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Class Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Setting the Text, Lights, and Sounds . . . . . . . . . . . . . . . . . . . . .130
Playing the Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Contents vii
Switching Lights On and Off . . . . . . . . . . . . . . . . . . . . . . . . . .134
Accepting and Checking Player Input . . . . . . . . . . . . . . . . . . . .135
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Deduction Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
Setting Up the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Defining the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Starting a New Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Checking Player Guesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Evaluating Player Moves . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Ending the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
Clearing Game Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
5. Game Animation: Shooting and Bouncing Games . . . . . . .155
Game Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Time-Based Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Coding Time-Based Animation . . . . . . . . . . . . . . . . . . . . . . . . .158
Air Raid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Movie Setup and Approach . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Flying Airplanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Moving Gun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Skyward Bullets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
The Game Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
Paddle Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Setting Up the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Class Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Starting the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Starting a New Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Game Animation and Collision Detection . . . . . . . . . . . . . . . . .186
Game Over . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
6. Picture Puzzles: Sliding and Jigsaw . . . . . . . . . . . . . . . . .195
Manipulating Bitmap Images . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Loading a Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Breaking a Bitmap into Pieces . . . . . . . . . . . . . . . . . . . . . . . . .198
Sliding Puzzle Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
Setting Up the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
Setting Up the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
Loading the Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
Cutting the Bitmap into Pieces . . . . . . . . . . . . . . . . . . . . . . . . .204
Shuffling the Pieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
Reacting to Player Clicks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209
Animating the Slide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Game Over and Cleanup . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Jigsaw Puzzle Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Setting Up the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Loading and Cutting the Image . . . . . . . . . . . . . . . . . . . . . . . .216
Dragging Puzzle Pieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Game Over . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
7. Direction and Movement: Space Rocks . . . . . . . . . . . . . .227
Using Math to Rotate and Move Objects . . . . . . . . . . . . . . . . . . . .228
The Sin and Cos Functions . . . . . . . . . . . . . . . . . . . . . . . . . . .228
Using Cos and Sin to Drive a Car . . . . . . . . . . . . . . . . . . . . . . .230
Calculating an Angle from a Location . . . . . . . . . . . . . . . . . . . .233
Air Raid II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Altering the Gun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Changing the Bullets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Changes to AirRaid2.as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241
Space Rocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Game Elements and Design . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Setting Up the Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
Setting Up the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Starting the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Score and Status Display Objects . . . . . . . . . . . . . . . . . . . . . . .249
Ship Movement and Player Input . . . . . . . . . . . . . . . . . . . . . . .252
Shields Up! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Rocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Missiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261
Game Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
8. Casual Games: Match Three . . . . . . . . . . . . . . . . . . . . . .267
Reusable Class: Point Bursts . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Developing the Point Burst Class . . . . . . . . . . . . . . . . . . . . . . .269
Using Point Bursts in a Movie . . . . . . . . . . . . . . . . . . . . . . . . .273
Match Three . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
Playing Match Three . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
Game Functionality Overview . . . . . . . . . . . . . . . . . . . . . . . . . .277
The Movie and MatchThree Class . . . . . . . . . . . . . . . . . . . . . . .278
viii ActionScript 3.0 Game Programming University
Setting Up the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Player Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282
Animating Piece Movement . . . . . . . . . . . . . . . . . . . . . . . . . . .285
Finding Matches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
Finding Possible Moves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292
Score Keeping and Game Over . . . . . . . . . . . . . . . . . . . . . . . .295
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296
9. Word Games: Hangman and Word Search . . . . . . . . . . . .297
Strings and Text Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
ActionScript 3.0 String Handling . . . . . . . . . . . . . . . . . . . . . . .298
Applying Text Formatting to Text Fields . . . . . . . . . . . . . . . . . .303
Hangman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Setting Up the Hangman . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
The Hangman Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310
Word Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
Development Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
Defining the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
Creating the Word Search Grid . . . . . . . . . . . . . . . . . . . . . . . .316
User Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
Dealing with Found Words . . . . . . . . . . . . . . . . . . . . . . . . . . . .323
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326
10. Questions and Answers: Trivia and Quiz Games . . . . . . . .327
Storing and Retrieving Game Data . . . . . . . . . . . . . . . . . . . . . . . .328
Understanding XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
Importing External XML Files . . . . . . . . . . . . . . . . . . . . . . . . . .330
Trapping Load Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
Trivia Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
Designing a Simple Quiz Game . . . . . . . . . . . . . . . . . . . . . . . .333
Setting Up the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Setting Up the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
Loading the Quiz Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
Message Text and Game Button . . . . . . . . . . . . . . . . . . . . . . . .337
Moving the Game Forward . . . . . . . . . . . . . . . . . . . . . . . . . . .339
Displaying the Questions and Answers . . . . . . . . . . . . . . . . . . .340
Judging the Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
Ending the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Deluxe Trivia Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
Adding a Time Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
Adding Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347
Adding a Factoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349
Contents ix
Adding Complex Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . .350
Randomizing the Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Picture Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353
Better Answer Arrangement . . . . . . . . . . . . . . . . . . . . . . . . . . .353
Recognizing Two Types of Answers . . . . . . . . . . . . . . . . . . . . .355
Creating Loader Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Determining the Right Answer . . . . . . . . . . . . . . . . . . . . . . . . .356
Expanding the Click Area . . . . . . . . . . . . . . . . . . . . . . . . . . . .357
Images for Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
11. Action Games: Platform Games . . . . . . . . . . . . . . . . . . . .361
Designing the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Designing the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368
Planning Which Functions Are Needed . . . . . . . . . . . . . . . . . . .369
Building the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
Class Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
Starting the Game and Level . . . . . . . . . . . . . . . . . . . . . . . . . .372
Keyboard Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
The Main Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377
Character Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Scrolling the Game Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384
Checking for Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
Enemy and Player Death . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
Collecting Points and Objects . . . . . . . . . . . . . . . . . . . . . . . . . .387
Showing Player Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .389
Ending the Levels and the Game . . . . . . . . . . . . . . . . . . . . . . .389
The Game Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391
12. Game Worlds: Driving and Exploration Game . . . . . . . . . .393
Creating a Top-Down Driving Game . . . . . . . . . . . . . . . . . . . . . . .394
Creating a Top-Down World . . . . . . . . . . . . . . . . . . . . . . . . . .394
Game Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
The Class Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .400
The Constructor Function . . . . . . . . . . . . . . . . . . . . . . . . . . . .402
Finding the Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404
Placing the Trash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404
Keyboard Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
The Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407
Moving the Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
x ActionScript 3.0 Game Programming University
Checking for Trash and Trashcan Collisions . . . . . . . . . . . . . . .411
The Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
The Score Indicators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
Game End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Building a Flash Racing Game . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Racing Game Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Making the Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416
Sound Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
Constants and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
Starting the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
The Main Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420
Car Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
Checking Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424
The Countdown and the Clock . . . . . . . . . . . . . . . . . . . . . . . . .425
Game Over . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Modifying the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .429
Contents xi
About the Author
As a youngster, Gary Rosenzweig was allowed to play video games whenever he
wanted, as long as his homework was done first. His parents got him an Atari 2600
and an assortment of games. He loved to play Adventure, Asteroids, Pitfall, Raiders of
the Lost Ark, and even that dreadful E.T. game.
At age 13, in 1983, his grandmother gave him a new TRS-80 Model III. The first thing
he did with it was learn to program. And then, make games. He made some text
adventure games, and then some RPG games, and then some arcade games. He was
allowed to stay up all night making games, as long as his homework was done first.
In high school, Gary got to play with the Apple II computers pretty much whenever he
wanted, as long as his schoolwork was done first. He made space shuttle simulators and
spreadsheet programs. And some games.
Gary went on to study computer science in college at Drexel University. There he was
told that with his degree, he could go on to be a programmer at any high-tech firm
making business applications. But he wanted to make games, even if it was on the side,
after he got his work done first.
After a side trip to get a Master’s degree in journalism and mass communication from
the University of North Carolina in Chapel Hill, Gary ended up getting a job where he
could make games for kids using Macromedia Director.
Then, they invented the Internet. It was soon followed by Shockwave, a way to play
Director content in web pages. Gary started making his own games for his own website in the evening, after his work was done first.
In 1996, Gary started his own company, CleverMedia, to produce games for the Web.
He was soon creating both Shockwave and Flash games with some of the most creative
people he ever met. CleverMedia and its sites grew over the years to become the single
largest collection of web-based games by a single company. Gary has created more than
300 games in the past 12 years, most of which can be found at CleverMedia’s main
game site, www.GameScene.com.
Gary also likes to share what he knows. His sites http://FlashGameU.com,
www.Director-Online.com, and www.DeveloperDispatch.com contain information for
other developers. He has also written many books, including Macromedia Flash MX
ActionScript for Fun & Games, Special Edition Using Director MX, and Advanced
Lingo for Games. Gary wrote this book mostly on evenings and weekends, after his
other work was done first.
Gary lives in Denver, Colorado, with his wife, Debby, and daughter, Luna. Debby and
Gary also own The Attic Bookstore, an unusual used bookstore in Englewood,
Colorado. Luna is only 5 years old, but is already playing games on her Macintosh computer, after her homework is done first, of course.
xii ActionScript 3.0 Game Programming University
Dedication
A person should aspire to do three things with his career and life: do something he
loves, do it better than anyone else, and make the world a better place. It is hard to find
examples of someone who has accomplished all three. Steve Irwin was one such individual. He was an inspiration to me.
Acknowledgments
Thanks to everyone at CleverMedia: David Feldman, William Follett, Kevin Frutiger,
Layle McFatridge, Eve Park, and Jay Shaffer. And to John Nyquist for his help with this
book.
Thanks to the good people at Adobe and the Flash development team. ActionScript
3.0 rocks.
Thanks to my family: Debby Rosenzweig, Luna Rosenzweig, Jacqueline Rosenzweig,
Jerry Rosenzweig, Larry Rosenzweig, Tara Rosenzweig, Rebecca Jacob, Barbara
Shifrin, Richard Shifrin, Phyllis Shifrin, Barbara Shifrin, Tage Thomsen, Anne
Thomsen, Andrea Thomsen, and Sami Balestri.
Thanks also to everyone at Que and Pearson Education for their hard work on this
book.
Acknowledgments xiii
We Want to Hear from You!
As the reader of this book, you are our most important critic and commentator. We
value your opinion and want to know what we’re doing right, what we could do better,
what areas you’d like to see us publish in, and any other words of wisdom you’re willing
to pass our way.
As an associate publisher for Que Publishing, I welcome your comments. You can email
or write me directly to let me know what you did or didn’t like about this book—as well
as what we can do to make our books better.
Please note that I cannot help you with technical problems related to the topic of
this book. We do have a User Services group, however, where I will forward specific
technical questions related to the book.
When you write, please be sure to include this book’s title and author as well as your
name, email address, and phone number. I will carefully review your comments and
share them with the author and editors who worked on the book.
Email: [email protected]
Mail: Greg Wiegand
Associate Publisher
Que Publishing
800 East 96th Street
Indianapolis, IN 46240 USA
Reader Services
Visit our website and register this book at www.quepublishing.com/register for convenient access to any updates, downloads, or errata that might be available for this book.
xiv ActionScript 3.0 Game Programming University