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

Game programming for teens
PREMIUM
Số trang
415
Kích thước
7.2 MB
Định dạng
PDF
Lượt xem
708

Game programming for teens

Nội dung xem thử

Mô tả chi tiết

Game Programming

for Teens,

Second Edition

Maneesh Sethi

Publisher and General Manager,

Thomson Course Technology PTR:

Stacy L. Hiquet

Associate Director of Marketing:

Sarah O’Donnell

Manager of Editorial Services:

Heather Talbot

Marketing Manager:

Heather Hurley

Senior Acquisitions Editor:

Emi Smith

Senior Editor:

Mark Garvey

Marketing Coordinator:

Jordan Casey

Project Editor:

Jenny Davidson

Technical Reviewer:

Jonathan Harbour

Thomson Course Technology PTR

Editorial Services Coordinator:

Elizabeth Furbish

Copyeditor:

Kezia Endsley

Interior Layout Tech:

Jill Flores

Cover Designer:

Mike Tanamachi

CD-ROM Producer:

Brandon Penticuff

Indexer:

Sharon Shock

Proofreader:

Sara Gullion

© 2005 by Thomson Course Technology PTR. All rights reserved. No part

of this book may be reproduced or transmitted in any form or by any

means, electronic or mechanical, including photocopying, recording, or

by any information storage or retrieval system without written permis￾sion from Thomson Course Technology PTR, except for the inclusion of

brief quotations in a review.

The Premier Press and Thomson Course Technology PTR logo and

related trade dress are trademarks of Thomson Course Technology and

may not be used without written permission.

BlitzPlus, Blitz3D, BlitzBasic2D, and BlitzMax are trademarks of Blitz

Research, Ltd. Paint Shop Pro is a registered trademark of Corel Corpora￾tion. MilkShape 3D is a registered trademark of ChumbaLum sOft.

CoolEdit Pro is a registered trademark of Syntrillium Software Corporation.

All other trademarks are the property of their respective owners.

Important: Thomson Course Technology PTR cannot provide software

support. Please contact the appropriate software manufacturer’s techni￾cal support line or Web site for assistance.

Thomson Course Technology PTR and the author have attempted through￾out this book to distinguish proprietary trademarks from descriptive terms

by following the capitalization style used by the manufacturer.

Information contained in this book has been obtained by Thomson

Course Technology PTR from sources believed to be reliable. However,

because of the possibility of human or mechanical error by our sources,

Thomson Course Technology PTR, or others, the Publisher does not

guarantee the accuracy, adequacy, or completeness of any information

and is not responsible for any errors or omissions or the results obtained

from use of such information. Readers should be particularly aware of

the fact that the Internet is an ever-changing entity. Some facts may have

changed since this book went to press.

Educational facilities, companies, and organizations interested in multi￾ple copies or licensing of this book should contact the publisher for

quantity discount information. Training manuals, CD-ROMs, and por￾tions of this book are also available individually or can be tailored for

specific needs.

ISBN: 1-59200-834-8

Library of Congress Catalog Card Number: 2005923913

Printed in Canada

05 06 07 08 09 WC 10 9 8 7 6 5 4 3 2 1

Thomson Course Technology PTR,

a division of Thomson Course Technology

25 Thomson Place

Boston, MA 02210

http://www.courseptr.com

For my parents, Neelam and Prabhjot

J

eez, there are so many people to thank. This feels like I’m accepting an Oscar™: I’m

afraid the band will start playing and usher me off the stage. Anyway, first of all thank

you André LaMothe for giving me a chance and taking me out to lunch. I will get you

back for that one day. Thank you everyone at Premier Press: my production editor Jenny

Davidson, my copy editor, Kezia Endsley, my acquisitions editor, Emi Smith, and my CD

editor, Brandon Penticuff.

Thanks go out to Adam Hepworth, who spent a lot of his “busy” day helping read my text

and correcting a lot of errors. To all of my brothers and sisters, Rachi, who offered her help

even though she was across an ocean, Nagina, whose love and support (and numerous

phone calls) helped carry me through, and Ramit, who gave me a person to look up to and

who helped me through the thick and thin (as well as giving me the chance to use

“abeyance” in a sentence). Thanks for being here and giving me support when I needed it.

To my mom and dad: I couldn’t have done this without you. I love you so much.

Finally, thanks to Edgar L. Ibarra (Feo) for his artwork and Thomas Stenbäck for his work

on the CD’s music. Also, to Ari Feldman, for allowing me to use his sprite library on the

CD.

Also, for contributing a demo program to the book, thanks to Jason Brasier and Edgar

Ibarra for Rockfall and Marcus “Eikon” Smith for Galaxiga.

And to everyone whose name I forgot, you know who you are. Thanks!

IV

Acknowledgments

MANEESH SETHI is a high school student in California who will be enrolled at Stanford

University in 2006. Maneesh has worked with Web design and development since he was

in fifth grade and was the founder and head designer of Standard Design, a Web site

design company. Maneesh has taught game programming on TechTV’s Call for Help and

at game programming conferences such as the XGDX. He is the author of Game

Programming for Teens (First Edition) and Web Design for Teens, both published by Course

PTR, and How to Succeed as a Lazy Student.

Besides game programming, Maneesh enjoys playing games (of course), sports such as

tennis and basketball, and of course, sleep. Learn more about Maneesh, as well as his

award-winning T-shirts and iPod sock case at www.maneeshsethi.com.

V

About the Author

VI

Contents

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi

Part I: The Basics of BASIC . . . . . . . . . . . . . . . . . . .1

Chapter 1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

A Brief History of BASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

Installing BlitzPlus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

Windows and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

The First Game: KONG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

Compiling the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

Chapter 2 Getting to Know BASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

Hello, World! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

Declaring Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

Using Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24

Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

Truth and Falsehood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

If...Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

Contents VII

If...Then…Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

Select…Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

The NOT Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

The Goto Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

A Text-Based Guessing Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

Chapter 3 Loops, Functions, Arrays, and Types . . . . . . . . . . . . . . . . . .41

Understanding Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

For…Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

While…Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46

Repeat…Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48

Understanding Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

Scope Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

When to Use Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57

Understanding Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58

Multi-Dimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

Using Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67

Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75

For…Each…Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77

Putting It All Together: Textanoid! . . . . . . . . . . . . . . . . . . . . . . . . . .79

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93

Chapter 4 The Style Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95

Developing Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95

White Space and Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . .96

Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97

Pre-Program Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99

Main Program Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100

Function Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100

Function and Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101

Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101

Naming Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103

VIII Contents

Part II: Getting Graphical . . . . . . . . . . . . . . . . . .105

Chapter 5 Beginning Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107

Creating the Graphics Window . . . . . . . . . . . . . . . . . . . . . . . . . . . .107

Width and Height . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108

Color Depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109

[Mode] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110

Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114

LoadImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114

DrawImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116

CreateImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118

MaskImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122

Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125

RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126

Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128

Cls and ClsColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131

Chapter 6 Page Flipping and Pixel Plotting . . . . . . . . . . . . . . . . . . . .133

Page Flipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133

Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136

SetBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137

CreateImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143

Locking and Unlocking Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . .156

Lock/Unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156

ReadPixel()/ReadPixelFast() . . . . . . . . . . . . . . . . . . . . . . . . . . . .157

WritePixel/WritePixelFast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161

Using Buffers: A Paint Program . . . . . . . . . . . . . . . . . . . . . . . . . . . .166

Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168

Main Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170

Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180

Contents IX

Chapter 7 Basic Image Programming . . . . . . . . . . . . . . . . . . . . . . . . .181

Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181

Translating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181

Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186

Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209

Parallaxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217

TileBlock and TileImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225

Chapter 8 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227

Using Bitmaps in Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227

Making Bitmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234

Displaying Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247

Chapter 9 Collision Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249

Basic Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249

Bounding Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253

Distance between Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253

Radii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255

Bounding Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260

Pixel-Imperfect Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268

Pixel-Perfect Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274

Part III: Completing the Puzzle . . . . . . . . . . . . . .275

Chapter 10 Handling Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277

Handling the Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277

KeyDown() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278

KeyHit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285

Mapping the Mouse to the Screen . . . . . . . . . . . . . . . . . . . . . . . . .294

Displaying the Mouse Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . .295

What Was That? Handling Mouse Key Presses . . . . . . . . . . . . .298

The Middle Mouse Wheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306

Handling Joystick Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312

Chapter 11 Sounds and Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313

Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313

Loading Sounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314

Listen Closely—Playing Sounds . . . . . . . . . . . . . . . . . . . . . . . . .316

Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330

Channels and PlayMusic() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330

Messing With ’Da Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . .331

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335

Chapter 12 Artificial Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337

Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337

Creating a MilliSecs() Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . .342

Chasing and Evading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349

Chasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349

Evading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356

Chapter 13 The Final Frontier: Invaderz!!! . . . . . . . . . . . . . . . . . . . . . .359

Let’s Bust It: Planning the Game . . . . . . . . . . . . . . . . . . . . . . . . . . .359

Constants, Functions, and Types in Invaderz!!! . . . . . . . . . . . . . . . .362

Playing Invaderz!!! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366

Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368

Part IV: Appendixes . . . . . . . . . . . . . . . . . . . . . . .371

Appendix A Scan Code Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373

Appendix B Useful Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379

Blitz Basic Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379

General Game Programming Links . . . . . . . . . . . . . . . . . . . . . . . . .380

Appendix C What’s on the CD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382

Art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382

Sounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382

Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382

Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

X Contents

XI

Hey, reader. Thanks for buying my book. I am really thankful for it.

What is programming? Programming, according to Dictionary.com, is “a set of coded

instructions that enables a machine, especially a computer, to perform a desired sequence

of operations.” In other words, programming allows you to make your computer do what￾ever you want it to do. Programming is used in everything related to the computer, but

there are many distinct flavors of programming. This book teaches game programming.

Game programming is very different from the other types of programming. When you

turn on your computer, you often see static programs—programs that sit there and wait

for you to do something. Not with games. Games are running constantly, and they don’t

need the player to do anything to keep it running.

Of course, does this mean that game programming is a bit tougher than other styles of

programming? Yes and no. Although game programming can be difficult at times, this

book strives to turn the difficult into second nature. We use a language of programming

called BASIC, which, as you can probably guess, is pretty darn basic.

What’s in the Book?

This book is meant to be a guide to teach any beginner how to design and develop games.

Inside the book you will find a wealth of knowledge all written in mind to help you reach

the goal of making a game. Each chapter builds on the previous chapters and makes the

book seem like a staircase—you move up step by step. The last chapter helps use all of

your culminated knowledge in the production of a final game.

Introduction

Part I discusses the BlitzPlus language. During this time, the book does not discuss graph￾ical programs, but instead uses text-based to get the language points across.

Part II teaches the reader all about graphics within games. There is such information as

varying colors, loading and displaying images, making scrolling backgrounds, and things

like that.

Part III examines other related parts to game programming. The reader can learn how to

use keyboard input, sounds, and music, and take into account artificial intelligence. This

part also creates the final game that the book has been leading up to.

Part IV contains all the appendixes for the book. You will find all of the scan codes (for han￾dling input), a list of Web sites to further your knowledge in the field, and what is on the CD.

Who Are You?

I suppose you can answer this question better than I, but let me tell you what I am look￾ing for in a reader. First of all, I am guessing that you are either a teenager who is inter￾ested in game programming or a parent who is interested in having your child learn game

programming. That is pretty much all that is required: interest. This book is not set up to

be difficult. It helps introduce the reader into the world of game programming.

There are literally very few requirements. All you really need is a basic knowledge of math,

like addition, subtraction, multiplication, and division. If you know those techniques, you

are pretty much set! I also suggest that the reader asks his or her parent for help whenever

necessary. I use some rudimentary algebra, but those instances are few and far between,

and should be easy to comprehend.

You don’t need to have any knowledge of other programming languages. Not that it won’t

help if you do, of course. If you do know any other languages, you can learn from this

book as well. But, Game Programming for Teens, Second Edition teaches the language of

game programming along with the ability to actually implement games.

If you are the parent of a child who wants to learn programming, this book is the way to

go. General programming is a long and boring subject, but game programming allows your

child to create things that are fun. Help your child with programming while he or she reads

this book, as well. Not only will you both learn programming, but who knows, it may

strengthen the bond between parent and child (this comes from my psychologist side).

Who Am I?

Hey everybody, I am Maneesh Sethi. I am a high school student, and the reason I am writ￾ing this book is because I believe that, because I am a teenager myself, I would be the best

one to help other teens learn about programming. I began programming in 1999 in C and

XII Introduction

XIII

C++. Two years ago I discovered BlitzPlus and I have studied it ever since. BlitzPlus seems

to be the easiest way for any novice to begin writing games, and I want to help the reader

progress as fast as possible. The Web site for this book is located on

www.maneeshsethi.com, and you can e-mail me with any questions (before or after you

buy the book) at [email protected]. I love to get e-mails!

Conventions Used in This Book

note

Notes provide additional information on a feature, extend an idea on how to do something, or illus￾trate a cool fact.

caution

Cautions warn you of potential problems and tell you what not to do.

tip

Tips give you some pertinent information on a better, faster, or easier way of doing something.

Let’s Get Ready to Rumble…

If you are still browsing this book in the bookstore, now would be the time to take it

home. The bookstore would probably appreciate it if you buy it first (so would I!).

The first part quickly teaches you all of the intricacies of the BlitzPlus programming

language.

And so we begin…

Introduction

This page intentionally left blank

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