Contents in DetaiL
about the author and technical reviewers xv
acknowledgments xvii
introduction xixWhy Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxHow to Learn to Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxWho Should Read This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiWhat’s in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiiThe Companion Website. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiiiHave Fun! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Part i: Learning to Program
1 not all snakes slither 3A Few Words About Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Installing Python on Windows 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Installing Python on Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Installing Python on Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Once You’ve Installed Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Saving Your Python Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 Calculations and Variables 15Calculating with Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Python Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17The Order of Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Variables Are Like Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Using Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Python for Kids©2012, Jason R. Briggs
viii Contents in Detail
3 strings, Lists, tuples, and Maps 25Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Creating Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Handling Problems with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Embedding Values in Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Multiplying Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Lists Are More Powerful Than Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Adding Items to a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Removing Items from a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35List Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Python Maps Won’t Help You Find Your Way . . . . . . . . . . . . . . . . . . . . . . . 39What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
#1: Favorites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41#2: Counting Combatants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42#3: Greetings! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4 Drawing with turtles 43Using Python’s turtle Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Creating a Canvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Moving the Turtle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
#1: A Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51#2: A Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51#3: A Box Without Corners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5 asking Questions with if and else 53if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
A Block Is a Group of Programming Statements . . . . . . . . . . . . . . . 54Conditions Help Us Compare Things. . . . . . . . . . . . . . . . . . . . . . . . . 57
if-then-else Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58if and elif Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Combining Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Variables with No Value—None . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61The Difference Between Strings and Numbers. . . . . . . . . . . . . . . . . . . . . . . 62What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Python for Kids©2012, Jason R. Briggs
Contents in Detail ix
Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65#1: Are You Rich? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65#2: Twinkies! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65#3: Just the Right Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66#4: I Can Fight Those Ninjas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6 Going Loopy 67Using for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68While We’re Talking About Looping... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
#1: The Hello Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78#2: Even Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79#3: My Five Favorite Ingredients. . . . . . . . . . . . . . . . . . . . . . . . . . . . 79#4: Your Weight on the Moon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7 recycling Your Code with functions and Modules 81Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Parts of a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Variables and Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Using Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
#1: Basic Moon Weight Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90#2: Moon Weight Function and Years . . . . . . . . . . . . . . . . . . . . . . . . 90#3: Moon Weight Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8 How to Use Classes and objects 93Breaking Things into Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Children and Parents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Adding Objects to Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Defining Functions of Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Adding Class Characteristics as Functions . . . . . . . . . . . . . . . . . . . . 97Why Use Classes and Objects? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Objects and Classes in Pictures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Other Useful Features of Objects and Classes . . . . . . . . . . . . . . . . . . . . . . 102Inherited Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Functions Calling Other Functions . . . . . . . . . . . . . . . . . . . . . . . . . 104
Python for Kids©2012, Jason R. Briggs
x Contents in Detail
Initializing an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
#1: The Giraffe Shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107#2: Turtle Pitchfork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9 Python’s Built-in functions 109Using Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
The abs Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110The bool Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111The dir Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113The eval Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114The exec Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116The float Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116The int Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117The len Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118The max and min Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119The range Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121The sum Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Working with Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Creating a Test File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Opening a File in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Writing to Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
#1: Mystery Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127#2: A Hidden Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128#3: Copying a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10 Useful Python Modules 129Making Copies with the copy Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Keeping Track of Keywords with the keyword Module . . . . . . . . . . . . . . . 133Getting Random Numbers with the random Module . . . . . . . . . . . . . . . . . 133
Using randint to Pick a Random Number . . . . . . . . . . . . . . . . . . . . 134Using choice to Pick a Random Item from a List . . . . . . . . . . . . . . 135Using shuffle to Shuffle a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Controlling the Shell with the sys Module . . . . . . . . . . . . . . . . . . . . . . . . . 136Exiting the Shell with the exit function. . . . . . . . . . . . . . . . . . . . . . 136Reading with the stdin Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Writing with the stdout Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Which Version of Python Am I Using?. . . . . . . . . . . . . . . . . . . . . . . 138
Python for Kids©2012, Jason R. Briggs
Contents in Detail xi
Doing Time with the time Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Converting a Date with asctime. . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Getting the Date and Time with localtime . . . . . . . . . . . . . . . . . . . 140Taking Some Time Off with sleep . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Using the pickle Module to Save Information . . . . . . . . . . . . . . . . . . . . . . 142What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
#1: Copied Cars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144#2: Pickled Favorites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
11 More turtle Graphics 145Starting with the Basic Square . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Drawing Stars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Drawing a Car. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Coloring Things In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
A Function to Draw a Filled Circle . . . . . . . . . . . . . . . . . . . . . . . . . 153Creating Pure Black and White . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
A Square-Drawing Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Drawing Filled Squares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Drawing Filled Stars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
#1: Drawing an Octagon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160#2: Drawing a Filled Octagon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161#3: Another Star-Drawing Function . . . . . . . . . . . . . . . . . . . . . . . . 161
12 Using tkinter for Better Graphics 163Creating a Clickable Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Using Named Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Creating a Canvas for Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Drawing Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Drawing Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Drawing a Lot of Rectangles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Setting the Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Drawing Arcs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Drawing Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Displaying Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Displaying Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Creating Basic Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Making an Object React to Something . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186More Ways to Use the Identifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Python for Kids©2012, Jason R. Briggs
xii Contents in Detail
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
#1: Fill the Screen with Triangles . . . . . . . . . . . . . . . . . . . . . . . . . . 190#2: The Moving Triangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190#3: The Moving Photo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Part ii: Bounce!
13 Beginning Your first Game: Bounce! 193Whack the Bouncing Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Creating the Game Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Creating the Ball Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Adding Some Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Making the Ball Move. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Making the Ball Bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Changing the Ball’s Starting Direction . . . . . . . . . . . . . . . . . . . . . . 202
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
14 finishing Your first Game: Bounce! 205Adding the Paddle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Making the Paddle Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Finding Out When the Ball Hits the Paddle . . . . . . . . . . . . . . . . . . 209
Adding an Element of Chance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
#1: Delay the Game Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217#2: A Proper “Game Over” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217#3: Accelerate the Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217#4: Record the Player’s Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Part iii: Mr. stick Man races for the exit
15 Creating Graphics for the Mr. stick Man Game 221Mr. Stick Man Game Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Getting GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Python for Kids©2012, Jason R. Briggs
Contents in Detail xiii
Creating the Game Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Preparing a Transparent Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Drawing Mr. Stick Man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Drawing the Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Drawing the Door . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228Drawing the Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Transparency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
16 Developing the Mr. stick Man Game 233Creating the Game Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Setting the Window Title and Creating the Canvas . . . . . . . . . . . . 234Finishing the __init__ Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Creating the mainloop Function . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Creating the Coords Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Checking for Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Sprites Colliding Horizontally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Sprites Colliding Vertically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Putting It All Together: Our Final Collision-Detection Code. . . . . 242
Creating the Sprite Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Adding the Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Adding a Platform Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Adding a Bunch of Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
#1: Checkerboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249#2: Two-Image Checkerboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250#3: Bookshelf and Lamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
17 Creating Mr. stick Man 251Initializing the Stick Figure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Loading the Stick Figure Images . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Setting Up Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Binding to Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Turning the Stick Figure Left and Right. . . . . . . . . . . . . . . . . . . . . . . . . . . 255Making the Stick Figure Jump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256What We Have So Far . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Python for Kids©2012, Jason R. Briggs
xiv Contents in Detail
18 Completing the Mr. stick Man Game 259Animating the Stick Figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Creating the animate Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Getting the Stick Figure’s Position . . . . . . . . . . . . . . . . . . . . . . . . . 263Making the Stick Figure Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Testing Our Stick Figure Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273The Door! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Creating the DoorSprite Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Detecting the Door . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Adding the Door Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
The Final Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Programming Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
#1: “You Win!” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283#2: Animating the Door. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283#3: Moving Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
afterword Where to Go from Here 285Games and Graphics Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
PyGame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286Programming Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Objective-C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290Perl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290Ruby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Final Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
appendix Python Keywords 293
Glossary 307
index 313
Python for Kids©2012, Jason R. Briggs