Siêu thị PDFTải ngay đi em, trời tối mất

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
PREMIUM
Số trang
455
Kích thước
7.4 MB
Định dạng
PDF
Lượt xem
1362

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 other￾wise, 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 omis￾sions. 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 pur￾chases or special sales. For more information, please contact

U.S. Corporate and Government Sales

1-800-382-3419

[email protected]

For sales outside of the U.S., please contact

International Sales

[email protected]

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 web￾site 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 com￾puter, 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 indi￾vidual. 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 conve￾nient access to any updates, downloads, or errata that might be available for this book.

xiv ActionScript 3.0 Game Programming University

Tải ngay đi em, còn do dự, trời tối mất!