UPDATE: Thanks for everyone who emailed their help. I'll leave this post up here for now, but the code seems fairly solid now.
I'm currently looking for help editing the source code for the games that will go into my next book. This book will also be released under a Creative Commons license and be freely available.
Download the game source. (Requires Python & Pygame)
UPDATE: I've fixed a problem where the midi files for the Tetris game were left out of this zip. Redownload the zip file to get them.
I've compiled a list of free graphics and sound files that you can use in your games. The chapter on using graphics and sound files with the Pygame library is in Chapter 19 of the "Invent with Python" book.
UPDATE: I just found a great, huge list: The Ultimate Indie Game Developer Resource List. There's also the Wikimedia Commons, OpenClipArt.org, and www.sxc.hu, a free stock photography site.
Computer programming is a practical skill that can be applied to many professions and hobbies besides software development. However, it can be intimidating to break into. This guide will help parents point their kids in the right direction to get started in programming. (And it is also useful for anyone to get into programming.)
- Kids as young as 9 (or even younger) can learn programming, it doesn't require math skills beyond basic arithmetic.
- Making video games is the best way to learn programming and stay interested.
- Python is one of the best programming languages to learn for a first language.
- If your kid finds typing frustrating, then Scratch might be a better language to learn.
- "Invent Your Own Computer Games with Python" is a free book that teaches programming to complete beginners in Python.
- py2exe can help your kid share their programs with their friends.
- When making your own games, computer version of board games or simple games of chance are a good starting point.
There is no "best" age to start programming; any age is fine. I'd recommend around 10 or 12 would be a good starting point, though I began teaching myself programming around 9. Perhaps before 8 would be "too young". Despite what you may think, programming does not require math skills beyond basic arithmetic. If your child is comfortable with addition, subtraction, and multiplication (maybe even division), then they will be fine. Programming is more about general problem solving and "recipe following" skills than mathematics.
Learning to program, like learning anything, is not about having a high IQ so much as being enthusiastic enough to practice and wanting to learn more. I think the best route to learning programming is by making video games.
UPDATE: This is an old post, written before I finished my book entirely dedicated to Pygame. You can read a free online copy of "Making Games with Python & Pygame" at http://inventwithpython.com/pygame.
I've scoured the web for some decent tutorials for Pygame, one of the best game engines for Python out there. Here's what I've found, ordered by (in my opinion) quality. Perhaps the most comprehensive guide to Pygame would be the Pygame documentation itself, or Beginning Game Development with Python and Pygame: From Novice to Professional by Will McGuan.
1. Eli Bendersky's website: Writing a game in Python with Pygame
Possibly the best Pygame tutorial on the web. The game example he covers is original and touches on many different concepts. The writing is concise and to the point.
2. Invent Your Own Computer Games with Python by Al Sweigart
This is my own tutorial for Pygame. The first three chapters cover the basics of Pygame's features, and the fourth chapter details the entire source code to a simple "Dodger" game.
Chapter 17 - Graphics and Animation
Chapter 18 - Collision Detection and Input
Chapter 19 - Sound and Images
Chapter 20 - The "Dodger" Game
UPDATE: I also have the
rough draft completed copy for my Pygame-specific book available: Making Games with Python & Pygame
Wrote a new blog post on our attitudes towards kids and programming on my Coffeeghost blog.