ptg999 www.it-ebooks.info ptg999 800 East 96th Street, Indianapolis, Indiana, 46240 USA Jonathan S. Harbour Sams Teach Yourself 24 in Hours Windows ® Phone 7 Game Programming www.it-ebooks.info ptg999 Sams Teach Yourself Windows® Phone 7 Game Programming in 24 Hours Copyright © 2012 by Sams 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-672-33554-9 ISBN-10: 0-672-33554-9 Library of Congress Cataloging-in-Publication Data is on file. Printed in the United States of America First Printing November 2011 Trademarks All terms mentioned in this book that are known to be trademarks or service marks have been appropriately capitalized. Sams 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. Bulk Sales Sams 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 corpsales@pearsontechgroup.com For sales outside of the U.S., please contact International Sales international@pearsoned.com Editor-in-Chief Greg Wiegand Executive Editor Neil Rowe Development Editor Mark Renfrow Managing Editor Kristy Hart Project Editor Andrew Beaster Copy Editor Cheri Clark Indexer Ken Johnson Proofreader Sarah Kearns Technical Editor Jim Perry Publishing Coordinator Cindy Teeters Book Designer Gary Adair Composition Nonie Ratcliff www.it-ebooks.info ptg999 Contents at a Glance Introduction 1 Part I: Introduction HOUR 1 Introduction to Windows Phone 7 9 2 Getting Started with Visual C# 2010 for Windows Phone 21 3 Printing Text 39 4 Getting User Input 51 5 Drawing Bitmaps 59 Part II: Sprite Programming HOUR 6 Treating Bitmaps as Sprites 73 7 Transforming Sprites 89 8 More Sprite Transforms: Rotation and Scaling 101 9 Advanced Linear and Angular Velocity 117 10 When Objects Collide 131 11 Managing Lots of Sprites 149 12 Sprite Color Animation 163 13 Sprite Transform Animation 181 14 Sprite Frame Animation 197 15 Transforming Frame Animations 213 16 Drawing with Z-Index Ordering 231 Part III: Gameplay HOUR 17 Using Location Services (GPS) 241 18 Playing Audio 255 19 Reading and Writing Files Using Storage 265 20 Creating a Graphical User Interface 277 21 Finite State Gameplay 295 www.it-ebooks.info ptg999 22 The Physics of Gravity 311 23 Rocket Science: Acceleration 323 24 The Black Hole Game 337 Index 359 iv Sams Teach Yourself Windows Phone 7 Game Programming in 24 Hours www.it-ebooks.info ptg999 Table of Contents Introduction 1 Audience and Organization 1 Conventions Used in This Book 5 Resource Files 5 Part I: Introduction HOUR 1: Making Games for Windows Phone 7 9 Getting Started with Windows Phone 7 9 Windows Phone 7 as a Game Platform? 10 History of the Platform 11 Hardware Specifications 16 Summary 17 Q&A 18 Workshop 18 HOUR 2: Getting Started with Visual C# 2010 for Windows Phone 21 Visual C# 2010 Express 21 Using Silverlight for WP7 24 XNA Game Studio 30 XNA or Silverlight: What’s the Verdict? 37 Summary 37 Q&A 38 Workshop 38 HOUR 3: Printing Text 39 Creating the Font Demo Project 39 Adding a New Font to the Content Project 41 Learning to Use the SpriteFont Class 45 www.it-ebooks.info ptg999 Printing Text 46 Summary 48 Q&A 48 Workshop 49 HOUR 4: Getting User Input 51 Exploring Windows Phone Touchscreen Input 51 Simulating Touch Input 52 Using Gestures on the Touchscreen 55 Summary 56 Q&A 57 Workshop 57 HOUR 5: Drawing Bitmaps 59 Adding a Bitmap File to an XNA Project 59 Loading a Bitmap File as an Asset 62 Drawing a Bitmap with SpriteBatch 63 Drawing Bitmaps with Transparency 65 Summary 68 Q&A 68 Workshop 69 Part II: Sprite Programming HOUR 6: Treating Bitmaps as Sprites 73 Bringing Bitmaps to Life 73 Drawing Lots of Bitmaps 74 Running into Limits with Global Variables 76 Creating a Simple Sprite Class 79 Summary 87 Q&A 88 Workshop 88 vi Sams Teach Yourself Windows Phone 7 Game Programming in 24 Hours www.it-ebooks.info ptg999 HOUR 7: Transforming Sprites 89 Translating (Moving) a Sprite 89 Using Velocity as Movement Over Time 91 Moving Sprites in a Circle 94 Summary 98 Q&A 98 Workshop 98 HOUR 8: More Sprite Transforms: Rotation and Scaling 101 Rotating a Sprite 101 Scaling a Sprite 108 Summary 114 Q&A 114 Workshop 115 HOUR 9: Advanced Linear and Angular Velocity 117 Calculating Angular Velocity 117 “Pointing” a Sprite in the Direction of Movement 124 Summary 129 Q&A 129 Workshop 129 HOUR 10: When Objects Collide 131 Boundary Collision Detection 131 Radial Collision Detection 139 Assessing the Damage 141 Summary 147 Q&A 147 Workshop 147 HOUR 11: Managing Lots of Sprites 149 Robot Trash Collectors 149 Summary 160 Q&A 160 Workshop 161 Contents vii www.it-ebooks.info ptg999 HOUR 12: Sprite Color Animation 163 Getting Started with Color Animation 163 Color Animation 167 Summary 178 Q&A 178 Workshop 179 HOUR 13: Sprite Transform Animation 181 Adding Transform Support to the Animation Class 181 Combining Multiple Animations 189 Summary 194 Q&A 194 Workshop 195 HOUR 14: Sprite Frame Animation 197 Drawing Animation Frames 198 Creating the Frame Animation Demo 202 Summary 209 Q&A 210 Workshop 210 HOUR 15: Transforming Frame Animations 213 Drawing Frames with Color Mods 213 Drawing Frames with Transform Mods 218 Animation Mods Demo 224 Summary 228 Q&A 228 Workshop 229 HOUR 16: Drawing with Z-Index Ordering 231 Prioritized Drawing 231 Summary 237 Q&A 237 Workshop 238 viii Sams Teach Yourself Windows Phone 7 Game Programming in 24 Hours www.it-ebooks.info ptg999 Part III: Gameplay HOUR 17: Using Location Services (GPS) 241 GPS 101 241 Windows Phone Location Services 243 Simulating Position Changes 245 Creating the Geo Position Demo 249 Summary 252 Q&A 252 Workshop 253 HOUR 18: Playing Audio 255 Getting Started with Windows Phone Audio 255 Creating the Audio Demo Program 259 Summary 262 Q&A 262 Workshop 263 HOUR 19: Reading and Writing Files Using Storage 265 Using Windows Phone Isolated Storage 265 Creating the Storage Demo Example 270 Summary 274 Q&A 275 Workshop 275 HOUR 20: Creating a Graphical User Interface 277 Creating the GUI Controls 278 Demonstrating the GUI Controls 287 Summary 292 Q&A 292 Workshop 292 Contents ix www.it-ebooks.info [...]... Started with Visual C# 2010 for Windows Phone 21 HOUR 3 Printing Text 39 HOUR 4 Getting User Input 51 HOUR 5 Drawing Bitmaps 59 www.it-ebooks.info 9 This page intentionally left blank www.it-ebooks.info Getting Started with Windows Phone 7 HOUR 1 Making Games for Windows Phone 7 What You’ll Learn in This Hour: Getting started with Windows Phone 7 Windows Phone 7 as a game platform? History of the... 2003 CE 4.2 Windows Mobile 2003 2004 CE 4.2 Windows Mobile 2003 SE 2005 CE 5.0 Windows Mobile 5 20 07 CE 5.2 Windows Mobile 6 www.it-ebooks.info 16 HOUR 1: Making Games for Windows Phone 7 TABLE 1.1 History of Windows Mobile Year Product Name 2008 CE 5.2 Windows Mobile 6.1 2009 CE 5.2 Windows Mobile 6.5 2010 By the Way Core CE 6.0 Windows Phone 7 Windows Phone 7 was planned for release in 2009 with... animation, since this seems to be the main focus of games for this platform This book is not a “geeky” or “gadget” guide to the Windows Phone 7 platform There are no hours devoted to the Windows Phone 7 hardware capabilities, and there is no overview of available applications in the marketplace This book is entirely focused on programming games with XNA Game Studio 4.0, targeting the Windows Phone 7 platform,... of memory copying) Many developers worked on sprite renderers and game libraries using the Game API, and a book was www.it-ebooks.info 14 HOUR 1: Making Games for Windows Phone 7 published on the subject—Pocket PC Game Programming: Using the Windows CE Game API, by Prima-Tech in 2001 Some copies are still floating around if you’re curious about “the early days” and the predecessor of WP7 At the time,... Visual C++, but today we’re developing games for WP7 using XNA and C# In that 2001 book is a rudimentary game library surrounding WinMain() and the other Windows core code necessary when working in C++, as well as integrated Game API built into a series of classes I created one published game using the library from that early book, an indie game called Perfect Match, shown in Figure 1.2 It was sold on mobile... book www.it-ebooks.info This page intentionally left blank www.it-ebooks.info Audience and Organization Introduction This book was written with the beginner in mind Each of the 24 hours in this book is short and succinct, usually teaching one basic subject and building on previous hours The subjects covered in this book are geared primarily toward rendering on the small Windows Phone 7 screen A lot of... a thumb or another finger will do the trick? The online capabilities of the Sega Dreamcast video game console were made possible thanks to Windows CE If you look at the front of the Dreamcast case, you will find a Windows CE logo Did you Know? To get technical, Windows Phone 7 is based on the Windows Mobile operating system, a new name for the classic Windows CE operating system Windows CE goes back...x Sams Teach Yourself Windows Phone 7 Game Programming in 24 Hours HOUR 21: Finite State Gameplay 295 Finite State Gameplay in Theory 295 Testing Game State 299 Summary Q&A 308 ... development! www.it-ebooks.info 9 10 HOUR 1: Making Games for Windows Phone 7 Before learning all about XNA Game Studio 4.0, Visual C# 2010, projects, configurations, Xbox Live, App Hub, and other great things that will interest a game developer, we need to first understand this new platform Windows Phone 7, which we might call WP7 for short, is an operating system for smartphone devices In “the old days,”... Xbox 360 game to Windows Phone 7 So what is Windows Phone 7 all about? Obviously, since you’re reading this book, you are interested in programming games for the device That goes without saying, but what is development for this platform really like? What’s it all about? We have to ask ourselves these questions because developing a game that you want to be taken seriously requires a pretty big investment . 323 24 The Black Hole Game 3 37 Index 359 iv Sams Teach Yourself Windows Phone 7 Game Programming in 24 Hours www.it-ebooks.info ptg999 Table of Contents Introduction. 335 HOUR 24: The Black Hole Game 3 37 Adding the Finishing Touches 3 37 Summary 3 57 Q&A 3 57 Workshop 3 57 Index 359 x Sams Teach Yourself Windows Phone 7 Game