Teach Your Kids To Code A Parent Friendly Guide To Python Programming 1st Edition Bryson Payne Download
Teach Your Kids To Code A Parent Friendly Guide To Python Programming 1st Edition Bryson Payne Download
https://textbookfull.com/product/teach-your-kids-to-code-a-
parent-friendly-guide-to-python-programming-1st-edition-bryson-
payne/
https://textbookfull.com/product/python-for-kids-a-playful-
introduction-to-programming-1st-edition-briggs/
https://textbookfull.com/product/learn-python-programming-a-
beginner-s-guide-to-learning-the-fundamentals-of-python-language-
to-write-efficient-high-quality-code-romano/
https://textbookfull.com/product/go-hck-yourself-a-simple-
introduction-to-cyber-attacks-and-defence-1st-edition-bryson-
payne/
https://textbookfull.com/product/make-your-own-python-text-
adventure-a-guide-to-learning-programming-1st-edition-phillip-
johnson/
Functional Python Programming: Use a functional
approach to write succinct, expressive, and efficient
Python code, 3rd Edition Lott
https://textbookfull.com/product/functional-python-programming-
use-a-functional-approach-to-write-succinct-expressive-and-
efficient-python-code-3rd-edition-lott/
https://textbookfull.com/product/advanced-guide-to-
python-3-programming-hunt/
https://textbookfull.com/product/python-for-teenagers-learn-to-
program-like-a-superhero-2nd-edition-payne/
https://textbookfull.com/product/supercharged-python-take-your-
code-to-the-next-level-brian-overland/
https://textbookfull.com/product/the-official-scratchjr-book-
help-your-kids-learn-to-code-1st-edition-marina-umaschi-bers/
Fo r k i d s ag e d 9 + ( a n d th e i r pa r e nts)
Programming
so easy a p
Pa r e n t
T eac h
You r Kids
T
Te
can do it!
ea
ac
to
T o C ode
Teach Your Kids to Code is a parent’s Create fun, playable games like War,
ch
and teacher’s guide to teaching kids basic Yahtzee, and Pong
h Y
programming and problem solving using Add interactivity, animation, and sound
Python, the powerful language used in to their apps
Yo
college courses and by tech companies like
Teach Your Kids to Code is the perfect com- A Parent-friendly Guide to Python Programming
Google and IBM.
ou
panion to any introductory programming
Step-by-step explanations will have kids
class or after-school meet-up, or simply your
ur
learning computational thinking right away,
educational efforts at home. Spend some fun,
while visual and game-oriented examples Bryson Payne
r K
productive afternoons at the computer with
hold their attention. Friendly introductions
your kids—you can all learn something!
to fundamental programming concepts such
Kiid
as variables, loops, and functions will help AB O UT TH E AUTH O R
even the youngest programmers build the Dr. Bryson Payne has taught computer
ds
skills they need to make their own cool science at the University of North Georgia
games and applications.
s t
for more than 15 years. He has also taught
Whether you’ve been coding for years middle school math and programming, and
or have never programmed anything at all, continues to work with K–12 schools to
to
Teach Your Kids to Code will help you show promote technology education.
o C
your young programmer how to:
Explore geometry by drawing colorful
shapes with Turtle graphics
Co
Write programs to encode and decode
od
messages, play Rock-Paper-Scissors,
de
and calculate how tall someone is in
Ping-Pong balls
PAYNE e
$29.95 ($34.95 CDN)
PROGRAMMING LANGUAGES/PYTHON
SHELVE IN:
w w w.nostarch.com
T H E F I N E ST I N
G E E K E N T E RTA I N M E N T ™
Advance Praise for
Teach Your Kids to Code
“The text is clear, the graphics are engaging, and the apps are
awesome. This is the programming guide for parents and kids to
enjoy together.”
—Aaron Walker, Cybersecurity Expert, NASA
“The concepts in Teach Your Kids to Code can help any young
person enhance their college prospects and expand their career
opportunities, and Dr. Payne presents these skills through fun,
challenging games and apps.”
—Dr. Raj Sunderraman, Department Chair of Computer Science,
Georgia State University
“Every child on the planet should have this book, and so should
every parent.”
—James E. Daniel, Jr., Founder, App Studios, LLC
“Dr. Payne set us on the path that led us to our dream jobs! With
Teach Your Kids to Code, he’s providing parents and teachers
everywhere the chance to do the same for the next generation of
creative problem-solvers.”
—Shah and Susan Rahman, Riot Games
“Bryson helps people improve their lives with technology. His book
does the same.”
—Ash Mady, Technical Manager, RedHat, Inc.
B y B r ys o n Pay n e
San Francisco
Teach Your Kids to Code. Copyright © 2015 by Bryson Payne.
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.
19 18 17 16 15 1 2 3 4 5 6 7 8 9
ISBN-10: 1-59327-614-1
ISBN-13: 978-1-59327-614-0
For information on distribution, translations, or bulk sales, please contact No Starch Press, Inc. directly:
No Starch Press, Inc.
245 8th Street, San Francisco, CA 94103
phone: 415.863.9900; [email protected]
www.nostarch.com
No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc.
Other product and company names mentioned herein may be the trademarks of their respective
owners. Rather than use a trademark symbol with every occurrence of a trademarked name, we are
using the names only in an editorial fashion and to the benefit of the trademark owner, with no inten-
tion of infringement of the trademark.
The information in this book is distributed on an “As Is” basis, without warranty. While every precau-
tion has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. 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 it.
To Alex and Max,
my two favorite coders
About the Author
Dr. Bryson Payne is a tenured professor of computer science at the
University of North Georgia, where he has taught aspiring coders
for more than 15 years. His students have built successful careers
at Blizzard Entertainment, Riot Games, Equifax, CareerBuilder,
and more. He was the first department head of computer science at
UNG, and he holds a PhD in computer science from Georgia State
University. In addition, he works extensively with K–12 schools to
promote technology education.
Dr. Payne has been programming for more than 30 years. The
first program he sold was to RUN magazine (Commodore 64) for
their “Magic” column in 1985, for $10.
Dr. Payne lives north of Atlanta, Georgia, with his wife, Bev,
and two sons, Alex and Max.
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introduction: What Is Coding and Why Is It Good for Your Kids? . . . . . . . xxi
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Contents in Detail
Acknowledgments xix
Introduction
What Is Coding and Why Is It Good for Your Kids? xxi
Why Should Kids Learn to Code? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Coding Is Fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Coding Is a Valuable Job Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Where Can Kids Learn to Code? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
How to Use This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv
Explore! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv
Do It Together! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Coding = Solving Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi
1
Python Basics: Get to Know Your Environment 1
Getting Started with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1. Download Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Install Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Test Python with a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Writing Programs in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Running Programs in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
#1: Mad Libs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
#2: More Mad Libs! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2
Turtle Graphics: Drawing with Python 11
Our First Turtle Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
What Happens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Turtle on a Roll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Turtle Roundup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Adding a Touch of Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
A Four-Color Spiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Changing Background Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
One Variable to Rule Them All . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
#1: Changing the Number of Sides . . . . . . . . . . . . . . . . . . . . . . . . . . 27
#2: How Many Sides? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
#3: Rubber-Band Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3
Numbers and Variables: Python Does the Math 31
Variables: Where We Keep Our Stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Numbers and Math in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Python Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Python Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Doing Math in the Python Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Syntax Errors: What Did You Say? . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Variables in the Python Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Programming with Operators: A Pizza Calculator . . . . . . . . . . . . . 39
Strings: The Real Characters in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Improving Our Color Spiral with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Lists: Keeping It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Python Does Your Homework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
#1: Circular Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
#2: Custom Name Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4
Loops Are Fun (You Can Say That Again) 53
Building Your Own for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Using a for Loop to Make a Rosette with Four Circles . . . . . . . . . . 56
Modifying Our for Loop to Make a Rosette with Six Circles . . . . . . 58
Improving Our Rosette Program with User Input . . . . . . . . . . . . . . . . . . . . 59
Game Loops and while Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
The Family Spiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Putting It All Together: Spiral Goes Viral . . . . . . . . . . . . . . . . . . . . . . . . . . 68
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
#1: Spiral Rosettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
#2: A Spiral of Family Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
xiv Contents in Detail
5
Conditions (What If?) 77
if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Meet the Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
You’re Not Old Enough! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
else Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Polygons or Rosettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Even or Odd? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
elif Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Complex Conditions: if, and, or, not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Secret Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Messin’ with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
The Value of Character(s) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Our Encoder/Decoder Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
#1: Colorful Rosettes and Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . 102
#2: User-Defined Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6
Random Fun and Games: Go Ahead, Take a Chance! 105
A Guessing Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Colorful Random Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Pick a Color, Any Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Getting Coordinated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
How Big Is Our Canvas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Rock-Paper-Scissors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Pick a Card, Any Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Stacking the Deck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Dealing Cards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Counting Cards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Keeping It Going . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Roll the Dice: Creating a Yahtzee-Style Game . . . . . . . . . . . . . . . . . . . . . 126
Setting Up the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Sorting the Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Testing the Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Kaleidoscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Contents in Detail xv
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
#1: Random Sides and Thickness . . . . . . . . . . . . . . . . . . . . . . . . . . 138
#2: Realistic Mirrored Spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
#3: War . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
7
Functions: There’s a Name for That 141
Putting Things Together with Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Defining random_spiral() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Calling random_spiral() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Parameters: Feeding Your Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Smileys at Random Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Return: It’s What You Give Back That Counts . . . . . . . . . . . . . . . . . . . . . 153
Returning a Value from a Function . . . . . . . . . . . . . . . . . . . . . . . . 153
Using Return Values in a Program . . . . . . . . . . . . . . . . . . . . . . . . . 154
A Touch of Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Handling Events: TurtleDraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Listening for Keyboard Events: ArrowDraw . . . . . . . . . . . . . . . . . 160
Handling Events with Parameters: ClickSpiral . . . . . . . . . . . . . . . 163
Taking It One Step Further: ClickandSmile . . . . . . . . . . . . . . . . . 166
ClickKaleidoscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
The draw_kaleido() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
The draw_spiral() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
#1: Mirrored Smileys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
#2: More Ping-Pong Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . 173
#3: A Better Drawing Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
8
Timers and Animation: What Would Disney Do? 175
Getting All GUI with Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Drawing a Dot with Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
What’s New in Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
The Parts of a Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Timing It Just Right: Move and Bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Moving a Smiley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Animating a Smiley with the Clock Class . . . . . . . . . . . . . . . . . . . 188
Bouncing a Smiley Off a Wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Bouncing a Smiley Off Four Walls . . . . . . . . . . . . . . . . . . . . . . . . . 197
xvi Contents in Detail
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
#1: A Color-Changing Dot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
#2: 100 Random Dots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
#3: Raining Dots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
9
User Interaction: Get into the Game 207
Adding Interaction: Click and Drag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Clicking for Dots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Dragging to Paint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Advanced Interaction: Smiley Explosion . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Smiley Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Setting Up Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Updating Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Bigger and Smaller Smileys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
SmileyPop, Version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Detecting Collisions and Removing Sprites . . . . . . . . . . . . . . . . . . 224
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
#1: Randomly Colored Dots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
#2: Painting in Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
#3: Throwing Smileys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
10
Game Programming: Coding for Fun 231
Building a Game Skeleton:
Smiley Pong, Version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Drawing a Board and Game Pieces . . . . . . . . . . . . . . . . . . . . . . . . . 234
Keeping Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Showing the Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Adding Difficulty and Ending the Game: Smiley Pong, Version 2.0 . . . . . 245
Game Over . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Play Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Faster and Faster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Adding More Features: SmileyPop v2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Adding Sound with Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Tracking and Displaying Player Progress . . . . . . . . . . . . . . . . . . . 254
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Contents in Detail xvii
What You Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Programming Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
#1: Sound Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
#2: Hits and Misses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
#3: Clear the Bubbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
A
Python Setup for Windows, Mac, and Linux 263
Python for Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Download the Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Run the Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Try Out Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Python for Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Download the Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Run the Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Try Out Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Python for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
B
Pygame Setup for Windows, Mac, and Linux 279
Pygame for Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Pygame for Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Python 2.7 and Pygame 1.9.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Pygame for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Pygame for Python 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
C
Building Your Own Modules 289
Building the colorspiral Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Using the colorspiral Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Reusing the colorspiral Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Glossary 295
Index 301
xviii Contents in Detail
Acknowledgments
This book would not have been possible without the exceptional
support of the No Starch Press team. Thanks especially to Bill
Pollock for believing in the project; to Tyler Ortman for champion-
ing and editing; and to Leslie Shen, Riley Hoffman, Lee Axelrod,
Mackenzie Dolginow, Serena Yang, and Laurel Chun for their
indefatigable editing, reviewing, marketing, and production prowess
and for the countless ways they helped me improve this book from
my original manuscript. And thanks to Rachel Monaghan and
Paula Fleming for their help copyediting and proofreading.
Thanks to Michelle Friend and Ari Lacenski for their thought-
ful and thorough technical review, and to Conor Seng for being the
first to read the book and try out the programs—at 10 years old.
Thanks to Miran Lipovac�a for his amazing illustrations—they
bring the kind of life to the text that I could only have dreamed of.
Thanks to my father-in-law, Norman Petty, a retired IBM’er,
who began teaching himself Python using an early draft of the book.
Special thanks to my wife and best friend, Bev, for her con-
stant support, and to my amazing sons, Alex and Max, for helping
test every program and suggesting improvements. This book and
my entire life are infinitely better because of the three of you.
Finally, thanks to my mom, Esta, who encouraged me to love
learning and solving puzzles.
Introduction
What Is Coding and Why
Is It Good for Your Kids?
Coding Is Fun
Technology is becoming a part of everyday life. Every company,
charitable organization, and cause can benefit from technology.
There are apps to help you buy, give, join, play, volunteer, connect,
share—just about anything you can imagine.
Have your children wanted to build their own level for their
favorite video game? Coders do that! What about create their own
phone app? They can bring that idea to life by programming it on
a computer! Every program, game, system, or app they’ve ever
seen was coded using the same programming building blocks
they’ll learn in this book. When kids program, they take an active
role in technology—they’re not just having fun, they’re making
something fun!
xxii Introduction
2014–2015 Occupational Outlook Handbook that do not require
master’s or doctoral degrees are in the computer science or infor-
mation technology (IT) fields.
Mark Zuckerberg was a college student working from his dorm
room when he developed the first version of Facebook in 2004. Just
10 years later, 1.39 billion people were using Facebook every month
(source: http://newsroom.fb.com/company-info/). Never before in
history had an idea, product, or service been able to engage a billion
people in under a decade. Facebook demonstrates the power of tech-
nology to reach more people, faster, than ever before.
Explore!
Learning to program is exciting if you’re willing to try new things.
As you and your kids follow along with the programs in this book,
try changing numbers and text in the code to see what happens to
the program. Even if you break it, you’ll learn something new by
fixing it. In the worst case, all you have to do is retype the example
from the book or open the last saved version that worked. The point
of learning to code is to try something new, learn a new skill, and
solve problems in a new way. Make sure your kids are playing
around—testing their code by changing something, saving the pro-
gram, running it, seeing what happens, and fixing any errors.
The point of learning to code is to try something new, learn
a new skill, and solve problems in a new way. Test your code by
changing something, saving the program, running it, seeing what
happens, and fixing errors if needed.
For example, I wrote some code to make a colorful drawing
(Figure 2) and then went back, changed some numbers here and
there, and tried running the program again. This gave me another
drawing that was completely different but just as amazing. I went
back again, changed some other numbers, and got yet another beau-
tiful, unique drawing. See what you can do just by playing around?
Figure 2: Three colorful spiral drawings I created by trying different values in a line of code in
one program
xxiv Introduction
Do It Together!
Experimenting with code is a great way to learn how programs
work, and it’s even more effective if you work with someone else.
Whether you’re teaching a child or student or studying for yourself,
it’s not just more fun to play with code together—it’s also more
effective.
For example, in the Suzuki Method of music instruction, par-
ents attend lessons with their child and even study ahead so they
can help their child between lessons. Starting early is another
hallmark of the Suzuki Method; kids can start formal study by the
age of three or four.
I began introducing my two sons to programming when they
were two and four, and I encouraged them to have fun by changing
small parts of each program, like the colors, shapes, and sizes of
shapes.
I learned to program at the age of 13 by typing program
examples from books and then modifying them to make them do
something new. Now, in the computer science courses I teach, I
often give students a program and encourage them to play around
with the code to build something new.
If you’re using this book to teach yourself, you can work with
others by finding a friend to work through examples with you or
by starting an after-school or community coding club (see http://
coderdojo.com/ or http://www.codecademy.com/afterschool/ for
ideas and tips). Coding is a team sport!
Online Resources
All the program files for
this book are available at
http://www.nostarch.com/
teachkids/, as well as sample
solutions for the Programming
Challenges and other informa-
tion. Download the programs
and experiment with them
to learn even more. Use the
sample solutions if you get
stumped. Check it out!
xxvi Introduction
1
Python Basics:
Get to Know Your Environment
2 Chapter 1
Figure 1-2: NiceHexSpiral.py, a short Python
program that draws the spiral in Figure 1-1
“Where does she live?” she asked herself. “How can she
dare to visit this desolate spot alone?”
Even as she asked this question, the girl emerged from [46]
the water, shook back her tangled hair, drew a rough
blue overall over her dripping bathing suit, and then,
leaping away like a wild deer, cleared the breakwater at
a bound and in a twinkling lost herself on a narrow path
that wound through the jungle of low willows and
cottonwoods.
[47]
CHAPTER V
THE SECRET PLACE
The scene that met her gaze as at last she reached [48]
those lower levels, was fantastic in the extreme. A
throng of little brown people, dressed in richest silks,
their faces shining strangely in the green light, sat in
small circles on rich Oriental rugs.
Scattered about here and there all over the room were
low pedestals and on these pedestals rested incense
burners. Fantastic indeed were the forms of these
burners: ancient dragons done in copper, eagles of
brass with wings spread wide, twining serpents with
eyes of green jade, and faces, faces of ugly men done
in copper. These were everywhere.
She had drifted with idle paddle in a canoe far out upon
the glimmering surface of Lake Huron. There, alone,
with night falling, she had listened until every tiniest
wavelet had gone to rest. She had heard the throb of a
motor die away in the distance. She had felt rather than
heard the breath of air stirred by the last lone seagull
on his way to some rocky ledge for rest. She had at last
listened for the faintest sound, then had whispered:
“This is silence.”
She had not long to wait. A long tremulous sigh, like the
tide sweeping across the ocean at night, passed over
the motionless throng; a sigh, that was all.
But Petite Jeanne? She wished to scream, to rise and
dash out of the room crying, “Fire! Fire!”
“The burning bush!” she whispered. “It burned but was [53]
not consumed; a magic bush. This is a magic curtain.”
But would she make it? Her heart was in her throat. A
quarter of the way up she was obliged to pause. She
was suffocating with fear.
Once again she was creeping upward. Did a hand touch [54]
her foot? Was someone preparing to seize her? With an
effort, she looked down. No one was following. Every
eye was glued upon the magic curtain. The curtain was
closed. The white-robed figure had vanished. What had
happened? Had he passed through? Had the curtain
consumed him? She shuddered. Then, summoning all
her courage, she leaped up the stairs, glided silently
across the room above, and passed swiftly on until she
gained the open air.
Then how she sped away! Never had she raced so
swiftly and silently as now.
It was some time before she realized how futile was her
flight. No one pursued her.
[55]
CHAPTER VI
THE WOMAN IN BLACK
The room she entered was dark; chill damp hung over
the place like a shroud. Florence was not there. The fire
was dead. Cheer had passed from the place; gloom had
come.
But in one short moment all this was changed. The door
flew open. Florence burst into the room and with her
came a whole gust of fresh lake air, or so it seemed to
Jeanne.
“There is no fire.”
“But why?”
In the meantime, the dark, slim man was saying to the [59]
stocky one:
“Can you beat it? You can’t! Thought he’d cut for good!
My luck. But no! Here he is, going back.”
Seeking a dark corner, she closed her eyes. Allowing her [60]
head to drop forward, she stood like one in prayer. Did
she pray, or did she but surrender her soul and body to
the forces of nature all about her? Who can say but that
these two are the same, or at least that their effect is
the same? However that may be, it was a changed
Jeanne who, three minutes later, took up her post of
duty in the boxes, for hers was the air of a sentry. Her
movements were firm and steady, the look upon her
face as calm as the reflection of the moon upon a still
pool at midnight.
All this was lost to Jeanne. Her back had been turned.
Her mind had been filled by a magic panorama, a
picture of that which was to pass across the opera stage
that night. Thus does devotion to a great art cause us
to forget the deepest, darkest trouble in our lives.
“They have been found,” she told herself at last. Yet she [63]
doubted her own words, as well she might.
[65]
CHAPTER VII
DREAMS OF OTHER DAYS
“If the pearls had been found that notice would have
been taken down,” she assured herself. “But if this is
true, why did I go unmolested? One would suppose that
at least I would be questioned regarding the affair. But
no!” She shrugged her graceful shoulders. “They ask me
nothing. They look and look, and say nothing. Oh, yes,
indeed, they say: ‘What is your name?’ That most
beautiful rich one, she says this. And the dark one who
is only a voice, she says: ‘Do you like the opera?’ She
asks this. And who is she? I know that voice. I have
heard it before. It is very familiar, yet I cannot recall it.
If she is here again I shall see her face.”
This was the stage of the Civic Theatre. The stage was
dark. The house was dark. Only the faintest gleam of
light revealed seats like ghosts ranged row on row.
As she stood there now a wave of feeling came over her [67]
that she could not resist. This stage, this little playhouse
had become to her what home means to many. The
people who had haunted those seats were her people.
They had loved her. She had loved them. But now they
were gone. The house was dark, the light opera troop
was scattered. She thought she knew how a mother
robin must feel as she visits her nest long after the
fledglings have flown.
She had come this way because she feared that the
slender, dark-faced stranger who had accosted her
earlier in the evening would await her at the door.
[70]
CHAPTER VIII
AN ISLAND MYSTERY
“You poor child!” Florence lifted her from the chair as [71]
easily as she might had she been a sack of feathers.
“You shall tell me all about it. But first I must make a
fire and brew some good black tea. And you must run
along and become Petite Jeanne. I am not very fond of
this Pierre person.” She plucked at the black coat sleeve.
“In fact I never have cared for him at all.”
Jeanne had told her story and Florence had done her
best to reassure her, when the little French girl
exclaimed: “But you, my friend? Only a few hours ago
you spoke of a discovery on the island. What was this
so wonderful thing you saw there?”
“Well, now,” Florence sat up to prod the fire, “that was [72]
the strangest thing! You have been on the island?”
“Then you don’t know what sort of half wild place it is.
It’s made of the dumping from a great city: cans,
broken bricks, clay, everything. And from sand taken
from the bottom of the lake. It’s been years in the
making. Storms have washed in seeds. Birds have
carried in others. Little forests of willow and cottonwood
have sprung up. The south end is a jungle. A fit hide-
out for tramps, you’d say. All that. You’d not expect to
find respectable people living there, would you?”
“That’s the queer part. They could. And I’m almost sure
they do. Seems too strange to be true.
“And yet—” She prodded the fire, then stared into the [73]
flames as if to see reproduced there pictures that had
half faded from her memories. “And yet, Petite Jeanne, I
saw a girl out there, quite a young girl, in overalls and a
bathing-suit. She was like a statue when I first saw her,
a living statue. She went in for a dip, then donned her
overalls to dash right into the jungle.
[76]
CHAPTER IX
CAUGHT IN THE ACT
Even now, when the seats were clothed like ghosts in [77]
white sheets, when the aisles, so often adorned with
living models all a-glitter with silks and jewels, and
echoing with the sound of applause and laughter, were
dark and still, the great hall lost none of its charm.
Eagerly the little French girl leaned forward to catch the [79]
first glimpse of that unknown scene. Slowly, slowly, but
quite surely, to the right a building began looming out
from that darkness. The trunk of a tree appeared,
another and yet another. Dimly a street was outlined.
One by one these objects took on a clearer line until
with an impulsive movement, Jeanne fairly leaped from
her place.
“It is France!” she all but cried aloud. “My own beloved
France! And the opera! It is to be ‘The Juggler of Notre
Dame’! Was there ever such marvelous good fortune!”
She was not long in discovering that her words were [80]
true. Scarcely had the full light of day shone upon that
charming stage village, nestled among the hills of
France, than a company of peasants, men, women and
children, all garbed in bright holiday attire, came
trooping upon the stage.
But what was this? Scarcely had they arrived than one
who loitered behind began shouting in the most excited
manner and pointing to the road that led back to the
hills.
Ten minutes later, dancing lightly and singing softly, she [84]
came upon the stage. She was there alone. Yet, in her
mind’s eye she saw the villagers of France, matrons and
men, laughing lovers, dancing children, all before her
as, casting her bag upon the green, she seized some
trifling baubles and began working her charms.
For her, too, the seats were not dark, covered empties,
but filled with human beings, filled with the light and joy
of living.
The word that came ten seconds after was, “Wait! You
can’t deceive me. You are Petite Jeanne!”
“Who could not know? If one has seen you upon the
stage before, he could not be mistaken.
“But, little girl,” the great one’s tone was deep and low [86]
like the mellow chimes of a great clock, “I will not
betray you.
“And yet—no! It was true. She said it. Marjory Dean said
that!”
Many saw that face and were charmed by it. The little [87]
rich girl saw it as Jeanne performed her humble duties
as Pierre. She was so taken by it that, with her father’s
consent, she invited Pierre to visit her at her father’s
estate next day. And Pierre accepted. And that, as you
well may guess, leads to quite another story.
[88]
CHAPTER X
THE ONE WITHIN THE SHADOWS
As she felt her feet sink deep in rich Oriental rugs, as [91]
her eyes feasted themselves upon oil paintings,
tapestries and rare bits of statuary that had been
gathered from every corner of the globe, she could not
so much as regret the deception that had gained her
entrance to this world of rare treasures.
“Perhaps,” said Jeanne who, you must not forget, was [92]
for the day Pierre Andrews. “I truly do not know.”
“There are many sun worshippers these days.”
Rosemary laughed a merry laugh. “And why not? Does
not the sun give us life? And if we rest beneath his rays
much of the time, does he not give us a more abundant
life?”
“I am fond of dreaming.”
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
textbookfull.com