Beginning Game Development with Python and Pygame from Novice to Professional
Total Page:16
File Type:pdf, Size:1020Kb
8725.book Page i Wednesday, September 26, 2007 8:08 PM Beginning Game Development with Python and Pygame From Novice to Professional ■■■ Will McGugan 8725.book Page ii Wednesday, September 26, 2007 8:08 PM Beginning Game Development with Python and Pygame: From Novice to Professional Copyright © 2007 by Will McGugan All rights reserved. No part of this work 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 the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-59059-872-6 ISBN-10 (pbk): 1-59059-872-5 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jason Gilmore Technical Reviewer: Richard Jones Editorial Board: Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Jason Gilmore, Kevin Goff, Jonathan Hassell, Matthew Moodie, Joseph Ottinger, Jeffrey Pepper, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Project Manager: Kylie Johnston Copy Editor: Liz Welch Assistant Production Director: Kari Brooks-Copony Production Editor: Kelly Winquist Compositor: Pat Christenson Proofreader: Erin Poe Indexer: Becky Hornyak Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600, Berkeley, CA 94705. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http:// www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com in the Source Code/ Download section. 8725.book Page iii Wednesday, September 26, 2007 8:08 PM For Maria 8725.book Page v Wednesday, September 26, 2007 8:08 PM Contents at a Glance About the Author . xv About the Technical Reviewer . .xvii Acknowledgments. xix Introduction . xxi ■CHAPTER 1 Introducing Python . 1 ■CHAPTER 2 Exploring Python. 19 ■CHAPTER 3 Introducing Pygame. 41 ■CHAPTER 4 Creating Visuals . 67 ■CHAPTER 5 Making Things Move . 91 ■CHAPTER 6 Accepting User Input . 111 ■CHAPTER 7 Take Me to Your Leader . 139 ■CHAPTER 8 Moving into the Third Dimension . 165 ■CHAPTER 9 Exploring the Third Dimension . 181 ■CHAPTER 10 Making Things Go Boom. 211 ■CHAPTER 11 Lights, Camera, Action! . 235 ■CHAPTER 12 Setting the Scene with OpenGL . 263 ■APPENDIX A Game Object Reference . 285 ■APPENDIX B Packaging Your Game . 293 ■INDEX . 297 v 8725.book Page vii Wednesday, September 26, 2007 8:08 PM Contents About the Author . .xv About the Technical Reviewer. xvii Acknowledgments. xix Introduction . xxi ■CHAPTER 1 Introducing Python . 1 Your First Look at Python . 1 Numbers . 2 Strings. 5 Lists and Tuples . 11 Loops. 16 Python in Practice. 18 Summary . 18 ■CHAPTER 2 Exploring Python. 19 Creating Scripts . 19 Working with Logic. 20 Understanding Booleans . 20 Understanding Functions. 23 Defining Functions . 24 Introducing Object-Oriented Programming . 26 Using Classes. 27 Python in Practice. 31 Using the Standard Library . 35 Introducing import. 35 Useful Modules for Games. 36 Summary . 39 ■CHAPTER 3 Introducing Pygame . 41 History of Pygame. 42 Installing Pygame . 42 Using Pygame . 42 vii 8725.book Page viii Wednesday, September 26, 2007 8:08 PM viii ■CONTENTS Hello World Revisited . 44 Understanding Events . 50 Retrieving Events. 50 Handling Mouse Motion Events . 53 Handling Mouse Button Events. 53 Handling Keyboard Events. 54 Filtering Events . 56 Posting Events . 56 Opening a Display. 57 Full-Screen Displays. 57 Resizable Pygame Windows . 59 Windows with No Borders . 61 Additional Display Flags . 61 Using the Font Module. 62 When Pygame Goes Wrong. 63 Pygame in Action . 64 Summary . 65 ■CHAPTER 4 Creating Visuals . ..